一、技术方案
1、 图像在计算机中的表示方法
在计算机中,图像是由像素点组成,一个矩阵式的像素集合组成了一幅二维的图像。其中每个像素点由RGB成,其中R/G/B分别代表红/绿/蓝,也就是我们物理中所学的三原色,我们通过对RGB的值进行控制就可以组成我们所需要的任何颜色,一般而言R/G/B的取值范围在0-255,0代表最浅色(无色),255代表颜色最深色。
总结:我们可以理解为将一幅图像分成NxN的小格,我们使用3个0-255的数字来近似表示每一个小格中的颜色。一幅图像就可以转换为:
第一行{像素1,像素2,像素3...}
第二行{像素1,像素2,像素3...}
...
此时如果我们将每个像素的RGB值用16进制表示,并且进行移位合并(#BGR格式),一幅图像就可以变成二维数组的形式:
[#0A0CBB, #25D13A,...]
[#0A0CBB, #25D13A,...]
....
2、图像的像素匹配
如果要判断两幅图像(或者局部图像)的匹配,计算机没有人一样的感性思维逻辑,只能通过比对图像中对应位置的像素点来判断,举个简单的例子:
上图是两幅图像的局部像素表示,在计算机中需要分别将[1,2,3,4]与[a,b,c,d]处的像素做比较,然后根据对应像素的RGB值的差值来计算两幅图像的匹配度。
这样我们就可以设计一个简单的匹配算法,描述如下:
对于目标图像(x,y)处的像素P1和源图像(x,y)处的像素P2进行还原,得出RGB的值;
计算P1和P2的RGB差值分别为D1,D2,D3,为了增加鲁棒性,当|D1|+|D2|+|D3|<K1时认为匹配;
重复1-2步骤直至所有像素都计算完毕,匹配像素/总像素得出匹配率S,当S >0.7即为两图像匹配;
小结:像素匹配就是按照顺序彼此比较两幅图像中每一个像素点,可以视为将两幅图像进行减操作。
3、图像的灰度转换
现实生活中,由于角度,光线,光学传感器等因素的影响,即使我们在第二节设计的匹配算法中增加了两处鲁棒性处理,但几乎还是不能运行。而且当图片大的时候计算量奇大无比。
为了增加算法鲁棒性,我们需要对原图像进行其他的处理手段,其中一个重要的是灰度化,即将RBG的值映射到0-255的区间内,使用一个0-255的值表示一个像素点。
灰度的转换主流有三种方法:
- 最大值法:将彩色图像中的三分量亮度的最大值作为灰度图的灰度值