Ben*_*Ben 2 opencv machine-learning image-processing computer-vision
我必须决定,如果两个图像(一个模板图像,一个扭曲图像)几乎相似.图像可能在亮度,某些标记或不同数字上有一些差异.也可能是扭曲的图像移动了1或2个像素.(见我的示例图片!)
我怎么解决这个问题?我正在使用OpenCV/C++.
我很确定图像的全局测量不会单独起作用.特别是,要确定数字是否相同,将不适用于图像范围的测量.我的第一个猜测是,至少做一个三步程序.
我不知道你在图像注册上有多少背景,但这可能适用于非常轻的版本.分别搜索每个黑色标记.首先,您可以稍微平滑图像(可能是r = 1的高斯图像)以抑制噪声,然后使用非常低的阈值对图像进行二值化以杀死几乎所有"非黑色"部分.这看起来像这样一个好的形象
你会看到那些没有任何东西的标记完全针对那些应用程序.现在,我能想象的最简单的版本可能是这样的:在每个角落采取合理的区域.合理的手段,黑色标记肯定在那里.现在计算所有黑色像素位置的平均值.这是你猜测一个黑色标记的中心.在上面的例子中,这个猜测是完美的,应该给真正的中心.但是,如果图像质量较差,则该区域可能存在噪声/错误的黑色像素.
在这种情况下,可能需要严格的配准步骤.由于您只是试图找到黑色方块,因此这个注册应该不是很难实现.
当您找到黑色角标记时,您知道它们跨越一个矩形,您可以计算重要数字所在的区域.如果良好的图像实际上只是某个像素关闭,那么这个步骤可能是不必要的,您可以为您的数字采用固定区域.
例如,请参见右下角的数字:它始终直接位于底部标记之间,右侧的范围从底部标记之间的长度的1/4到几乎正确的标记.你必须更好地测量这个区域,但是根据你的标记位置,你可以根据黑色标记来表达这个区域.
正如开头所提到的,我不确定是否通过整个区域的图像测量比较两个数字区域就足够了.您当然可以尝试看看它是否有效.但我怀疑1和7之间的区别是否如此之大,以至于你可以肯定地说,这些区域匹配或者它们不匹配.
既然你可以提取数字相当好的区域,为什么不使用一些基本的OCR并且不比较数字的图像,而是数字本身呢?
归档时间: |
|
查看次数: |
791 次 |
最近记录: |