The*_*e G 5 opencv image image-processing computer-vision
我正在尝试找到一种方法来可靠地确定图像中拼图的位置。拼图的形状和找到它的难易程度各不相同。opencv 模块中的哪些算法可以帮助我完成手头的任务?或者我想做的事情超出了模块的范围?
示例图片如下:



原标题是“用 Opencv Python 检测模糊形状”。然而,我对解决此类问题的图像处理概念感兴趣:如何在更大的图像中找到粘贴的图像?
假设如下:
解决方案可以是OpenCV(根据提问者的要求),但核心概念应该适用于使用任何适当的软件(即:可以循环遍历图像像素来处理它们的值,以实现所描述的解决方案)。
我自己使用JavaScript,但我当然会理解它openCV.calcHist()成为JS代码中的直方图函数。我可以毫无问题地将好的解释翻译成代码。我将把 OpenCV 代码视为实现工作想法的伪代码。
我将投入我自己的尝试。它在第一张图像上失败,仅在接下来的两张图像上工作正常。我对其他可能的基于像素处理的技术持开放态度。
我不使用 OpenCV,因此用文字(和图片)解释了该过程。读者可以用自己选择的编程语言/工具来实现解决方案。
背景:
我想知道粘贴的图像中是否存在固有的东西(某些东西可能通过像素处理甚至频域分析来揭示,例如:傅里叶信号分析可以在这里提供帮助吗?)。
经过一些研究,我遇到了错误级别分析(或 ELA)。此页面为初学者提供了基本介绍。
过程:只需 7 个简单的步骤,即可检测粘贴拼图的位置。
(1)拍摄一张提供的猫图片并以 JPEG 格式重新保存 3 次,如下所示:
(2)使用原始猫图片作为基础层与重新保存的副本 #3 图像进行不同的混合模式。图像将是黑色的,因此我们增加色阶。
(3)增加级别以使ELA检测到的区域更加明显。
注意:我建议此时使用 BT.709 或 BT.601 灰度。没有必要,但在稍后模糊时它会给出“更干净”的结果。
(4)在对图像应用框模糊和增加级别之间交替,直到岛屿消失并保留大斑点。
(5)随着级别的增加,斑点本身也得到强调。
(6)最后使用高斯模糊来平滑选择区域
(7)标记斑点区域(绘制轮廓笔画)并与输入图像进行比较...