【问题标题】:Location based segmentation of objects in an image (in Matlab)基于位置的图像对象分割(在 Matlab 中)
【发布时间】:2013-09-25 23:45:38
【问题描述】:

我一直在研究图像分割问题,但似乎无法解决我最近遇到的问题。

这是我目前拥有的:

Click here for image.(这只是一个通用示例。)

是否有一种强大的算法可以自动丢弃不属于其他四个正方形组的右侧正方形(我知道应该总是或多或少地堆叠在一起)?

有时会出现这样的情况,其中一个堆叠的盒子没有找到,所以有一个间隙,或者假盒子在左侧。

非常感谢您的意见。

【问题讨论】:

  • 你知道堆叠箱的偏差是多少吗? “或多或少是什么意思”?您是否有多个图像以便您可以得出一些统计数据或类似信息?
  • 偏差我不知道数字,但如果前面的算法正常工作,那么盒子至少需要重叠大约 3/4。我有 5 张不同质量的图像,这也导致了我的另一个问题。有时在堆栈中找不到多个盒子(总是只有一个“真正的”堆栈),这反过来导致盒子不像前面提到的那样重叠。澄清一下,理论上可以有两个或更多的假盒子,尽管这不太可能。

标签: matlab image-processing image-segmentation


【解决方案1】:

如果您有像您的示例那样生成 BW 图像的方法:

s  = regionprops(BW, 'centroid');
centroids = cat(1, s.Centroid);

xpos = centroids(:,1); 应该是框的 x 位置。

从这里开始,您有多种方式可以走,这取决于您是否总是只有一个单独的框和一组分组的框。对于“一个远离的假盒子,紧密分组”的情况(远离 Matlab,所以这是未选中的)你甚至可以做一些简单的事情:

d = abs(xpos-median(xpos));
bogusbox = centroids(d==max(d),:);
imshow(BW);
hold on;
plot(bogusbox(1),bogusbox(2),'r*');

为您的实际用例制作一些健壮的东西,我假设它不包含整齐的盒子是另一回事;正如 cmets 中所建议的那样,您需要了解好盒子的位置有多接近,以及假盒子的分离程度。

例如,您可以使用其他 regionprops 度量值,例如 'BoundingBox''Extrema',并定义某种度量值来衡量 x 中的框相对于彼此重叠的程度,然后使用它进行分组(这可能是即使您在图像中有多个堆栈也可以工作)。

【讨论】:

  • 谢谢,我会尽快尝试。我已经有了由边界框计算的框的质心,这听起来很有可能。我会告诉你结果如何。
  • 谢谢,我刚刚查过了。这似乎对一个假盒子很有效。我会稍微调整一下以适应多个盒子,但这应该很容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2017-04-20
  • 2017-11-16
  • 2021-04-09
  • 2017-08-05
相关资源
最近更新 更多