测试对象内部和对象

时间:2010-12-22 05:05:00

标签: image matlab image-processing computer-vision

我正在编写一个图像处理应用程序,它根据形状识别对象。我面临的问题是,因为一个对象可以由一个或多个子对象组成,例如。人脸是由眼睛,鼻子和嘴巴组成的物体。

应用图像分割会创建单独的对象,但不会告诉一个对象是否在另一个对象内。

如何有效地检查对象是否包含在另一个对象中。

现在我的algoirthm是wat我会称之为8点测试,你在8个角落选择8个点并检查它们是否都在对象内部。如果它们在那里你可以更确定整个物体在里面另一个目标......但它有一定的局限性或某些失败的地方......

也正因为内部对象在另一个对象内部意味着我应该将它们视为外部对象的一部分????

1 个答案:

答案 0 :(得分:3)

测试一个对象是否完全位于另一个对象内的一种方法是使用poly2mask将它们转换为二进制掩码(如果它们不是二进制掩码),并测试一个对象的所有像素都是另一个对象。

%# convert object 1 defined by points [x1,y1] into mask
msk1 = poly2mask(x1,y1,imageSizeX,imageSizeY);
%# do the same for object 2
msk2 = poly2mask(x2,y2,imageSizeX,imageSizeY);

%# check whether object 1 is fully inside object 2
oneInsideTwo = all(msk2(msk1));

然而,这真的有必要吗?眼睛应该总是靠近脸部的中心,因此,8点法应该相当稳健,以确定您是否发现眼睛是脸部的一部分或是否是分割神器。

另外,如果一只眼睛在脸上,那么是的,你会认为它是那张脸的一部分 - 除非你正在分析吃眼睛的人的照片,在这种情况下你必须测试是否眼睛处于大致正确的脸部位置。

总而言之,您的问题的答案很大“取决于您的申请细节”。