用一个简单的例子来说明如何遍历图像:减少图像中的颜色数目。
彩色图片由三个通道,由于每一个强度都是一个8位的unsigned char 表示,所以所有可能的颜色数目为256*256*256,很是庞大。为了降低分析的复杂度,降低图片的颜色数目是有用的。
这个算法很简单,对图片中每个像素的每一个通道,将其值除以N(整数除法,舍去余数),然后乘以N,这样就能得到不大于原始像素值的N的最大倍值。
主函数为:
原图 处理图
其中,例子中提供的颜色缩减只是其中一种,也可以用其他的颜色缩减公式。
利用高效遍历连续图像
考虑到效率,图像有可能会在行尾扩大若干个像素,颜色缩减函数可以重新写为:
当我们通过isContinuous函数得知图像没有对行进行填补之后,我们就可以将行设为1,列为W*H,从而消除外循环,提高效率。