误差扩散算法(Error diffusion)
Error diffusion is a type of halftoning in which the quantization residual is distributed to neighboring pixels that have not yet been processed. Its main use is to convert a multi-level image into a binary image, though it has other applications
.
简单例子:
在原256 级灰度图象上有一个点, 灰度值是 120 (0~255), 如果我们要将这张图转换成 16 级灰度, 最简单的方法是将每个像素点除以 16. 那么转换后的值就是 120/16=7.5 保留整数位后就是 7 . 这样转换后的值就有了 0.5 的误差. 最简单的误差扩散方法是将这 0.5 的误差放到这个点右边/下边的点上, 我们可以按 3:2:3 的比例把它分配到右边, 右下, 下边的点上. 即, 我们把右边和下边的点加上 (0.5*16)*3/8=3, 把右下的点加上 (0.5*16)*2/8=2. 这样处理完整个图形, 要比直接截尾的效果要好的多.
链接:
http://en.wikipedia.org/wiki/Error_diffusion
http://www.codingnow.com/text/errordif.htm
http://blog.csdn.net/housisong/article/details/2316924
http://blog.csdn.net/housisong/article/details/2320688
http://blog.csdn.net/housisong/article/details/5138874
Error diffusion is a type of halftoning in which the quantization residual is distributed to neighboring pixels that have not yet been processed. Its main use is to convert a multi-level image into a binary image, though it has other applications
.
简单例子:
在原256 级灰度图象上有一个点, 灰度值是 120 (0~255), 如果我们要将这张图转换成 16 级灰度, 最简单的方法是将每个像素点除以 16. 那么转换后的值就是 120/16=7.5 保留整数位后就是 7 . 这样转换后的值就有了 0.5 的误差. 最简单的误差扩散方法是将这 0.5 的误差放到这个点右边/下边的点上, 我们可以按 3:2:3 的比例把它分配到右边, 右下, 下边的点上. 即, 我们把右边和下边的点加上 (0.5*16)*3/8=3, 把右下的点加上 (0.5*16)*2/8=2. 这样处理完整个图形, 要比直接截尾的效果要好的多.
链接:
http://en.wikipedia.org/wiki/Error_diffusion
http://www.codingnow.com/text/errordif.htm
http://blog.csdn.net/housisong/article/details/2316924
http://blog.csdn.net/housisong/article/details/2320688
http://blog.csdn.net/housisong/article/details/5138874