(1)把红色和蓝色的像素值通过计算转换去匹配绿色像素值。
(2)使用转换矩阵对每个像素的 RGB 值进行转换。
基于以上两点
, 扫描图像的消色差转换算法的基本思想同样是利用转换矩阵对图像中的
每个像素点进行转换。
不同的是
,对于扫描设备产生色差的特殊性,我们的主要目的是保证彩色图中黑色字体的
边缘的色差现象减到最弱。
数据格式
:
从设备得到的数据是原始的未经压缩的点阵图象数据
,是以行为单位,数行组成一个数据
包
,发送到 PC 端或者设备缓存.每个像素点长度为 24bit,R,G,B 各占 8bit,每一行的像素点数据
都是连续的
.算法数学计算表达式如下:
[R G B] = [R G B] *Matrix +[R
’ G’ B’] *Matrix’
Matrix=[[r 0 0][0 g 0][0 0 b]]
Matrix
’=[r’0 0][0 g’0][0 0 b’]
满足条件
:r + r
’ = 1,g + g’ = 1,b + b’ = 1
[RGB]: 该向量表示当前目标行中被转换的像素 RGB 值
[R
’G’B’]: 该向量表示当前被转换像素的下一行同位置的像素 RGB 值
Matrix & Matrix
’: 为像素转换矩阵。
r,g,b 为当前被转换像素 RGB 值的权值。
r
’,g’,b’为下一行同位置的像素点 RGB 值的权值。
关于转换矩阵中的权值计算
:
r = avg(R_Current_Line) / (avg(R_Current_Line) + avg(R_Next_Line))
g = 1 (绿色通道值不做计算)
b = avg(B_ Next _Line) / (avg(B_Current_Line) + avg(B_Next_Line))
avg(): 求平均值计算
R_Current_Line: 当前行所有像素点红色通道值的和
R_Next_Line: 下一行所有像素点红色通道值的和
Current_Line: 当前行所有像素点蓝色通道值的和
B_Next_Line: 下一行所有像素点蓝色通道值的和
4.5 进一步的简化
通过对于一体机的扫描图像数据的抽样分析
,我们大致的掌握了该类型的透镜的色散规
律
, 由此我们相应的计算出权值矩阵的均值. 我们直接使用固定值的权值矩阵, 避免了对每一
行图像数据进行重复的循环求和计算和均值计算
, 大大提高了算法的效率。
定值权值矩阵
:[[1/3 0 0][0 1 0][0 0 2/3]],[[2/3 0 0][0 0 0 ][0 0 1/3]]
在该固定权值矩阵的作用下
, 我们用固定的权值把高值红色通道区域上移, 高值蓝色通
道区域下移
.虽然该算法把权值固定后,未必会适合图像中所有的像素区块的转换,但是在
300DPI 的 JPEG 格式的图像中,色差现象是比较明显的,经过该算法处理后,黑色字体边缘的
彩色条纹几乎不可见
, 效果比较理想,同时处理的速度也很快, 兼顾了质量和速度。
5 算法的优缺点
当前使用的算法并不是完美的
,虽然效果出色,但是它依然存在缺点。
5.1 优点
(1)算法比较简单, 运行效率高,经测试,在 intel 双核 CPU 2.66GHz 的 PC 机上, 25M 的图
像数据处理时间小于
1 秒。
(2)适合并行处理,即可以边扫描边处理数据, 接收部分数据,就处理这部分数据, 处理到