如何在MATLAB中检查二进制图像中的两个形状是否相似?

时间:2018-06-21 09:36:08

标签: matlab matrix

我有两个二进制图像,每个图像都有一个白色填充的平行四边形和一个黑色背景。两幅图像之间的唯一区别在于,平行四边形位于不同的位置,并且彼此之间的形状略有不同。除了更改外,两张图片之间的所有参数都相同。

我想通过某种比较方法来检查两个平行四边形的形状有多相似。

我研究了MATLAB中的ssimval函数,但它似乎是在考虑整个图像,而不仅仅是白色斑点。我可以为此目的使用其他功能吗?

4 个答案:

答案 0 :(得分:0)

要直观地检查相似性,可以绘制它们的概率密度函数,对于数值相似性,可以计算一些相似性度量,例如 KL散度等。

答案 1 :(得分:0)

您可以使用简单的bwlabel函数以一种简单的方式分割二进制图像。然后使用regionprops函数查找所需分段的周长和面积。而且,区域中心也是另一个比较点。

答案 2 :(得分:0)

您可以通过使用polyshape类对多边形进行处理。

首先将二进制蒙版转换为一组角点。您可以通过调用regionprops(bwI, 'ConvexHull')来使用凸包。

然后通过调用polyshape将角点转换为多边形。

最后通过测量多边形的turning distance.来测量多边形的不相似性,因为旋转距离是旋转和缩放不变的,因此,如果您的问题需要,您可能需要为这些距离度量添加相加项。

答案 3 :(得分:0)

比较两个二进制图像的一个非常简单的解决方案是使用布尔运算。

您的图像包含零和一值。因此,如果您使用布尔运算。

假设您的两个图像分别是:B1,B2

C = B1 & (~B2)


if sum(C(:))==0
    % two image are same
else
    % two image are different
end