Why do the graphics generated by my dithering algorithm have many black spots
http://yanxuan.nosdn.127.net/00a07a53ab2083685da1a90d09452f69.png
Below is my code of Floyd Steinberg Dithering.
QImage * SaveThread::imageFloydSteinberg(QImage * origin)
{
int old_pix, new_pix, quant_err;
int width = origin->width();
int height = origin->height();
QImage * img_dither = new QImage(width, height, QImage::Format_ARGB32);
img_dither = origin;
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
old_pix = img_dither->pixel(i, j);
if (img_dither->pixel(i, j) > qRgb(128, 128, 128))
new_pix = qRgb(255, 255, 255);
else
new_pix = qRgb(0, 0, 0);
img_dither->setPixel(i, j, qRgb(new_pix,new_pix,new_pix));
quant_err = old_pix - new_pix;
img_dither->setPixel(i+1, j , img_dither->pixel(i+1, j ) + quant_err * 7 / 16);
img_dither->setPixel(i-1, j+1, img_dither->pixel(i-1, j+1) + quant_err * 3 / 16);
img_dither->setPixel(i , j+1, img_dither->pixel(i , j+1) + quant_err * 5 / 16);
img_dither->setPixel(i+1, j+1, img_dither->pixel(i+1, j+1) + quant_err * 1 / 16);
}
}
return img_dither;
}