floyd 알고리즘을 구현하려고하는데 작동하지 않는 것 같습니다. Floyd-Steinberg 디더링이 작동하지 않음
내가 플로이드없이 위키 피 디아 에서 의사 알고리즘을 사용 http://img15.hostingpics.net/pics/298623Capturedcran20140226165024.png 플로이드와는 http://img15.hostingpics.net/pics/968250Capturedcran20140226165035.png
이 내 코드입니다 :
template<>
Image<ubyte>* Image<ubyte>::floydSteinberg() const
{
Image<ubyte>* tmp = new Image<ubyte>(this->width, this->height);
for (int i=0; i < width*height; i++)
tmp->array[i]= this->array[i];
for (int y = 0; y< this->height; y++){
for (int x = 1; x<this->width; x++){
ubyte oldpixel = tmp->pixel(x, y);
ubyte newpixel = (oldpixel > 128) ? 255 : 0;
tmp->pixel(x,y) = newpixel;
ubyte propagationErreur = oldpixel - newpixel;
tmp->pixel(x+1,y) =tmp->pixel(x+1,y) + 7.0/16 * propagationErreur;
tmp->pixel(x-1,y+1) = tmp->pixel(x-1,y+1) + 3.0/16 * propagationErreur ;
tmp->pixel(x,y+1) = tmp->pixel(x,y+1) + 5.0/16 * propagationErreur ;
tmp->pixel(x+1,y+1) = tmp->pixel(x+1,y+1) + 1.0/16 * propagationErreur ;
}
}
return tmp;
}
플로이드는 [Steinberg의 라이브러리] (http://www.2038bug.com/ptrans/ptrans.c.html)에 반드시 사용됩니다. 도서관 없이는 –
할 수 없습니까? –
@ Pépito 왜 그것이 작동하지 않는다고 생각합니까? – anatolyg