【问题标题】:Testing Object inside and object测试对象内部和对象
【发布时间】:2010-12-22 21:24:25
【问题描述】:

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

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

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

现在我的算法是 wat 我会调用 8 点测试,你在 8 个角落选择 8 个点并检查它们是否都在对象内。如果它们在,那么你可以更确定整个对象在里面另一个对象...但它有一定的局限性或某些失败的领域......

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

【问题讨论】:

  • “我正在编写一个图像处理应用程序”——考虑到复杂性和特定领域,与这里的大多数人相比,这可能会让你成为专家......
  • @Mitch 我不同意...这里有一些非常聪明的用户,他们在非常特定的领域拥有非常丰富的经验...我见过一些。
  • @Camilo Martin:我没有说这里没有聪明人。关键是,如果您是编写图像处理应用程序的人,这有点意味着该领域的一些专业知识,否则只是猴子和打字机......
  • @Mitch 我不知道您所说的“图像处理应用程序”是什么意思。我写了几个图像(视频)恢复算法,我有猴子的专业知识。我敢肯定,在 SO 的数千名(我认为是 50 万)用户中,至少有少数人拥有一些有用的图像处理专业知识,可以在这里提供帮助。
  • @Camilo Martin:“我不知道你所说的“图像处理应用程序”是什么意思。” - 你需要问海报...

标签: image matlab image-processing computer-vision


【解决方案1】:

测试一个对象是否完全在另一个对象中的一种方法是使用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 点法在识别您是否找到了属于脸部一部分的眼睛或它是否是分割伪影时应该相当稳健。

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

总之,您的问题的答案是一个很大的“取决于您的应用程序的详细信息”。

【讨论】:

  • thanx.. 但是当我举眼睛的例子时,我指的不仅仅是人脸。我说的是一般对象。同样对于大尺寸物体,这个测试会非常昂贵..
  • @Mew 3.2:对象大小无关紧要,因为掩码始终是图像的大小。无论如何,我所说的关于眼睛的内容适用于任何其他对象,对于更详细的建议,我需要了解有关您的应用程序的更多细节。
  • 我的项目是关于基于内容的图像搜索。在这个项目中,我正在识别图像中存在的不同对象,并按数据库中的特征列出每个对象。后来基于对象的检索变得容易。我的问题是关于找出准确且耗时更少的算法来确定一个对象是否在另一个对象内。这是找到对象组合关系所必需的......
猜你喜欢
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多