poster
2019-12-10, 20:48
我正在编写一个图像处理应用程序,该应用程序根据对象的形状识别对象。我面临的问题是,由于一个对象可以由一个或多个子对象组成,例如。人脸是由眼睛,鼻子和嘴巴组成的对象。
应用图像分割会创建单独的对象,但不会告诉一个对象是否在另一个对象内。
如何检查对象是否有效地包含在另一个对象中。
现在我的算法是wat,我将调用8点测试,其中您在8个角选择了8个点并检查所有这些点是否都在对象内部,如果它们在其中,则您可以确定整个对象在另一个对象内部。 ..但是它有一定的局限性或某些失败的领域...
也是因为内部对象在另一个对象内部意味着我应该将它们视为外部对象的一部分?
回答:
测试一个对象是否完全在另一个对象中的一种方法是使用poly2mask (http://www.mathworks.com/help/toolbox/images/ref/poly2mask.html)将它们都转换为二进制掩码(以防它们还不是二进制掩码),并测试一个对象的所有像素是否是另一个对象的一部分。
%# 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点法在确定您是否发现眼睛是脸部的一部分还是分割假象方面应该相当稳健。
另外,如果眼睛在脸上,则可以,您会认为它是该脸的一部分-除非您要分析正在吃眼睛的人的照片,否则必须测试眼睛是否在大致正确的位置。
总而言之,对您问题的答案很大,“取决于您的应用程序的详细信息”。
更多&回答... (https://stackoverflow.com/questions/4506324)
应用图像分割会创建单独的对象,但不会告诉一个对象是否在另一个对象内。
如何检查对象是否有效地包含在另一个对象中。
现在我的算法是wat,我将调用8点测试,其中您在8个角选择了8个点并检查所有这些点是否都在对象内部,如果它们在其中,则您可以确定整个对象在另一个对象内部。 ..但是它有一定的局限性或某些失败的领域...
也是因为内部对象在另一个对象内部意味着我应该将它们视为外部对象的一部分?
回答:
测试一个对象是否完全在另一个对象中的一种方法是使用poly2mask (http://www.mathworks.com/help/toolbox/images/ref/poly2mask.html)将它们都转换为二进制掩码(以防它们还不是二进制掩码),并测试一个对象的所有像素是否是另一个对象的一部分。
%# 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点法在确定您是否发现眼睛是脸部的一部分还是分割假象方面应该相当稳健。
另外,如果眼睛在脸上,则可以,您会认为它是该脸的一部分-除非您要分析正在吃眼睛的人的照片,否则必须测试眼睛是否在大致正确的位置。
总而言之,对您问题的答案很大,“取决于您的应用程序的详细信息”。
更多&回答... (https://stackoverflow.com/questions/4506324)