我在图像处理方面遇到问题,但我不知道如何解决。
我有 2 张图片: - 图片 1:http: //goo.gl/BBxVl - 图片 2:http: //goo.gl/X0VFW
pic 2 实际上表达了 pic 1 但它被对象覆盖了。我正在使用 matlab 代码编写一个程序来定义:如果图片是完成(完美)的,我将“显示”它。但是如果图片有任何错误,程序会为用户显示布告栏。
直到这个时候,我仍然无法解决它,因为我不知道从哪里开始;我对覆盖图片的对象的形状和颜色也没有任何定义。
我在图像处理方面遇到问题,但我不知道如何解决。
我有 2 张图片: - 图片 1:http: //goo.gl/BBxVl - 图片 2:http: //goo.gl/X0VFW
pic 2 实际上表达了 pic 1 但它被对象覆盖了。我正在使用 matlab 代码编写一个程序来定义:如果图片是完成(完美)的,我将“显示”它。但是如果图片有任何错误,程序会为用户显示布告栏。
直到这个时候,我仍然无法解决它,因为我不知道从哪里开始;我对覆盖图片的对象的形状和颜色也没有任何定义。
我的想法也从两个图像之间的绝对差异开始。这里的问题是,由于压缩和某些文件格式(如 jpg)的内部工作,您可能会得到很多根本没有修改的区域。例如,这里有两个示例图像和它们之间的二进制差异,以突出显示每个修改点,尽管我只手动修改了可见矩形。在非二进制差异中,您几乎不会注意到所有这些点,但它们就在那里。阈值解决了这里的问题,我使用了 20 的值:
现在,为了确定哪些图像是“好”的,我使用了一种修复算法(您可以在http://www.cc.gatech.edu/~sooraj/inpainting/找到一个这样的实现)。这样做的原因是,如果最终的修复图像不包含人工补丁,则它更可能类似于修复之前的图像。因此,“坏”图像是在修复过程后差异较大的图像。为此,您再次计算两种情况下修复图像和原始图像之间的绝对差异。然后在绝对差 > 0 的区域中使用一些测量值。在此示例中,灰度强度的虚拟总和对于没有矩形的图像给出 424454,对于另一个给出 758366。
这是用于修复的蒙版图像、修复的“好”图像、修复的“坏”图像以及各自的灰度绝对差异:
如果您发布的图像是该问题的良好示例,我建议使用以下算法:
所以你不知道哪一个是正确的,而你想选择正确的?或者你有一个地面实况图像,你可以将输入与它进行比较?因为如果您知道正确图像的外观,您可以在图像之间进行简单的减法并找到错误的图像。所以我认为这不是问题所在。
所以,如果你有两张图片,你必须确定哪一张是正确的,你知道错误的类型吗?它总是在图像上添加一个“补丁”?它总是矩形还是也可以与背景图像混合?
一种想法是将图像分割成几部分并对它们中的每一个进行直方图分析,但它只有在原始图像非常恒定并且修补对象与背景有很大不同的情况下才有效。
也许您可以对图像进行边缘检测,然后尝试检测直线(霍夫线检测可以做到这一点),以便您可以搜索矩形。(如果结果是线条,则查找矩形的算法与矩形的形状和大小无关。您只需检查线条方向)
如果您可以更详细地描述错误对象的限制是什么,也许我们可以想到一个更好的主意。