图像匹配有关问题

图像匹配问题
哪位大侠有做图像匹配方面的经验,请赐教.

是这样的, 有两个Picturebox控件, 一大一小, 我想在大的Picturebox内找图, 就是找跟小的Picturebox相似的图, 想了很多方法都是速度非常慢, 不知道大家有什么好建议.

------解决方案--------------------
有难度,有技术,就是没速度。给个思路,看图。
图一:按要求,有一大一小两PictureBox,现在我们就在大的那个PictureBox控件上用PaintPicture函数将如同小的那个PictureBox大小的图片样本取下来,然后比对(好像有API,反正两个相同大小的图片,实在不行就一个个像素地比颜色,其实只要发现有任何一个像素不同就可以立即停止比对,进入下一步)

图二:在图一的基础上,再用PaintPicture函数将如同小的那个PictureBox大小的图片样本取下来,但是这一次向右移了一个像素,同样将取下的样本与小的比对

图三:一直重复第二步,直到最终取到了大图的右边,还是比对。

图四:这时候就要回来,重新将PaintPicture函数的参数改为大图的最左边,但是这一次就变成向下平移一个像素,取样,比对

图五:重复类似第二步,直到又来到了最右边,取样,比对

图六:一直这样做下去,如果真的有某个位置可以与小图完全吻合,就大功告成了。

本人可以帮你试着按照这个思路去做一下,需要的联系我,QQ;1838805008
------解决方案--------------------
不一样,可以先找一个点或几个点
几个点对正了问题就不是太大了

探讨
引用:

有难度,有技术,就是没速度。给个思路,看图。
图一:按要求,有一大一小两PictureBox,现在我们就在大的那个PictureBox控件上用PaintPicture函数将如同小的那个PictureBox大小的图片样本取下来,然后比对(好像有API,反正两个相同大小的图片,实在不行就一个个像素地比颜色,其实只要发现有任何一个像素不同就可以……

------解决方案--------------------
一般比较快的图像匹配方法方法是基于颜色空间的匹配,如使用HSV直方图,又快又准

如果要找到相似图形或者找子图像的话可以考虑SIFT算法

------解决方案--------------------
比颜色的都慢吧,都是像素域的
小波变换,用纹理比啊
------解决方案--------------------
能不能变成bmp以后调matlab来做数学上的工作?会不会快一点?
------解决方案--------------------
这个算法叫模板匹配算法。原理就是在大图中取小图大小的子图,计算二个图之间的协方差,方差越小越相似,方差为0就是相同。小图在大图上遍历,找出所有位置上的方差值,取其最小值
------解决方案--------------------
10楼的兄弟思路很好,但是应该比较耗时吧。
我也举荐一个思路:
可以提取小图的一组角点作为特征,在提取大图中的角点特征;
然后选取小图角点集中的一些角点,计算各个角点距离,生成一个距离的特征向量;在大图角点集中计算并比较与小图距离特征向量做相似度计算;
大图中相似度度最近的向量对于的角点所确定的区域就是匹配结果。
------解决方案--------------------
补充一下:提取角点的方式,可以用harris角点检测算法
算法实现,你可以在pudn上搜到。
------解决方案--------------------
探讨
哪位大侠有做图像匹配方面的经验,请赐教.

是这样的, 有两个Picturebox控件, 一大一小, 我想在大的Picturebox内找图, 就是找跟小的Picturebox相似的图, 想了很多方法都是速度非常慢, 不知道大家有什么好建议.

------解决方案--------------------
以前用QT做过一个128×128像素点的图像识别,我来说说思路:
因为对速度要求很高,所以我在匹配的时候用的是20个采样点。一毫秒大约能识别1K张左右的图片。因为图片只有数字和字母,而且是一种字体,所以很简单了。如果是复杂的图片,采样点要多一点才能保证精度。

如果是BMP,先把点数据分横竖,然后把小图片的第N0行与大图的第一行进行模式匹配(KMP算法),如果不匹配,则换下一行(具体跳到那一行,也可以采用一定算法求得),一旦匹配,得到坐标,再匹配第N1行⋯⋯


不建议用一般的遍历,效率太低。
建议把KMP模式匹配算法改改后拿来用。最好改成横竖都跳转。
------解决方案--------------------
OpenCV中有相关匹配的算法,隐约记得是通过训练正负样本来进行匹配,以识别对应的物体。
你可以尝试看看

十楼很好 但是速度肯定很慢 楼主可以参考看看opencv库里的算法 应该有帮助的
------解决方案--------------------
试试SIFT算法?效果不错,但是速度不保证能达到要求
------解决方案--------------------
建议看看CVPR的这篇文章《Where’s Waldo: Matching People in Images of Crowds》,会对你有些启发。
------解决方案--------------------
可参考:http://www.cnblogs.com/skyseraph/archive/2011/03/29/1998492.html
http://www.cnblogs.com/skyseraph/archive/2011/03/29/1998536.html
------解决方案--------------------
很多模式识别的方法可以用,比如最简单的模板匹配。
------解决方案--------------------
另外图像相似度比较。
opencv里有附带例子,自己去看看吧。