两张相似图像,任意指定其中一张图中的一点,使用C#,能够在另一张图上找到对应的同一点,给出坐标。求各位大神帮忙解答,急需源代码!!!!
这事情简单,你把算法告诉我,源代码我可以写。就是不知道算法。
算法没有限制,最好多种算法求解,再比较相互间的优劣。
我的思路是先转化为灰度值,再转化为灰度矩阵,两张图变为两个矩阵,第一张图的一点为一个小矩阵中心,在第二张图中检索与之误差最小的矩阵,中心即为所求坐标,这样有容错的空间。
可以以这个思路编代码吗?
我只写过找茬那种,两张相似的图找出不同的点
具体方法:
把两张图分别按像素点进行分割,取颜色值进行对比
ps:你这种要找同一点,还真不知道怎么判断,用颜色值肯定是不准的
况且不知道,你说的图相似的地方是什么,是相对原图发生了偏移,旋转,修改还是什么的,我觉得处理方法应该是不一样的
我指的相似是偏移,比如对同一景物进行两次拍摄,两张图略有差别,找出同一点
@此生执白: 我能想到的只是一个不准确,不效率的方法
把两张图分别按像素点进行分割,在第二张图中,遍历出第一张图中需要寻找的符合颜色值的点
可能不只一个符合条件的点
既然你是偏移,就可以考虑去判断该点,上下左右偏移正负n(1=<n)像素点,是否一致
直到符合条件的点<=1个时,这个点应该就是你想找到的
@兰冰点点: 但是这种方法不具有鲁棒性,假如两张图偏差较大可能就会出错,还可能由于两张图拍摄的光线问题等会导致颜色值匹配的时候就出错了,另外我还想这个程序最好有辨别功能,就是说假如我不小心给出了两张完全不同的图,即没有共同点,它能报错。
我的思路是先转化为灰度值,再转化为灰度矩阵,两张图变为两个矩阵,第一张图的一点为一个小矩阵中心,在第二张图中检索与之误差最小的矩阵,中心即为所求坐标,这样有容错的空间。
@此生执白:误差大
你可以选一个固定的阈值,先对图片进行二值化再判断
我只是给你建议,你可以参考,图像识别做的不多
ps:另外图像识别是一个很复杂很大的工程,误差肯定永远存在,只是想办法去降低和减少误差
@兰冰点点: 明白,确实要做到精确很复杂,谢谢答复。