mnn*_*mnn 30 opencv image-processing computer-vision template-matching
OpenCV在模板匹配期间处理图像透明度的方式是什么?
问题是模板图像需要有透明的部分,因为在原始图像中,这些地方可能有任何东西.
我尝试了所有的方法,但没有一个产生积极的结果(例如原始图像中模板的位置未被正确检测到).
mpe*_*kov 18
看起来OpenCV并不像你想要的那样处理alpha.
您有两种选择:
由于第一个选项很简单,我将在这里探讨第二个选项.我将重新使用我之前提供的类似问题的示例代码.如果直接对图像应用互相关,则背景会干扰模板匹配(特别是浅色背景部分).如果您使用颜色通道,您会发现蓝色通道中的匹配可以得到正确的结果.这取决于图像内容,并不是解决问题的一致方法.
另一种选择是对图像和模板执行边缘检测(例如Sobel),然后执行互相关.这是边缘检测图像(我使用GIMP中Luma通道上的Sobel边缘检测器,然后进行一些强度拉伸).


正如您所看到的,此处的Alpha通道已变得无关紧要,因为大多数地形已变为零强度,并且不会对互相关计算做出贡献.所以现在可以直接应用互相关,得到所需的结果:
misha@misha-desktop:~/Desktop/stackoverflow$ python cross-correlation.py map-blue.png building-maskz-blue.png
(163, 244)
Run Code Online (Sandbox Code Playgroud)
最后,这是另一个相关的问题.
PS.这场比赛是什么?
kit*_*rol 10
对于这个问题,我有一个稍微有点脑死亡的解决方案,实际上似乎运行得相当好:用模糊图像的alpha通道替换噪声,这或多或少使得透明区域在匹配过程中在统计上无关紧要.
例如,我的用例涉及在iOS的屏幕截图中搜索表情符号字符.iOS键盘背景会根据上下文更改颜色,如果您在模板图像中提交特定背景颜色,则会使匹配过程出现问题.
这是alpha上的原始模板图像:

这是处理过的模板,为alpha通道填充了噪音:

我通过OpenCV文档中提供的模板匹配示例代码发送了处理过的模板图像.在黑暗或浅色背景下,找到匹配合理的匹配.
在深色背景上搜索:

在浅色背景上搜索:

相比之下,将模板的Alpha通道保持透明 - 或者提交到深色或浅色背景 - 并未返回可接受的匹配.
| 归档时间: |
|
| 查看次数: |
25472 次 |
| 最近记录: |