图像匹配之欧式距离算法
(2016-12-09 14:23:28)
欧式距离算法
在用差分矩阵均值对强噪声的识别失败了之后,我们决定用欧式距离算法。欧式距离算法的核心是:设图像矩阵有n个元素(n个像素点),用n个元素值(x1,x2,...,xn)组成该图像的特征组(像素点矩阵中所有的像素点),
特征组形成了n维空间(欧式距离就是针对
多
维空间的),特征组中的特征码(每一个像素点)构成了每一维的数值,就是x1(第一个像素点)对应一维,x2(第二个像素点)对应二维,. . .,xn(第n个像素点)对应n维。在n维空间下,两个图像矩阵各形成了一个点,然后利用数学上的欧式距离公式计算这两个点之间的距离,距离最小者就是最匹配的图像。
欧式距离公式:
点A = (x1, x2, ... , xn)
点B = (y1, y2, ... , yn)
AB^2 = (x1-y1)^2+(x2-y2)^2+...+(xn-yn)^2
AB就是所求的A,B两个多维空间中的点之间的距离。
img
imgfind
识别成功,再把50000噪声点换成500000(50万)个噪声点,效果会怎样呢?
但是我们的算法成功的识别出来了,还优雅的把她的头部圈起来了。
把这张被旋转20度的图片加载进上面的欧式距离算法,效果如下(无噪声):
再来点刺激的,加上强噪声,效果图如下(50000噪声点):
运行之后的效果图(无噪声):
实验图:
代码如下:(Python)
强噪声(50000随机点)效果图如下:
我们把图片旋转一下角度会不会也成功的识别呢?(我好坏)
旋转图片的代码如下:(Python)
旋转20度后的效果图如下:
继续挑战,旋转60度:
实验图: