2013-09-25 70 views
0

我一直在研究图像分割问题,似乎无法为我最近的问题得到一个好主意。基于位置的图像中的对象分割(在Matlab中)

这是我的时刻:(这只是一个普通的例子)

Click here for image.

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

它有时可能是这样的情况,其中一个堆叠的盒子没有找到,所以有一个间隙或伪造盒子在左侧。

非常感谢您的输入。

+0

你知道堆叠盒的偏差是什么吗?什么“或多或少的意思”?你有多个图像,以便你可以派生一些统计数据或类似的? – kkuilla

+0

偏差我不知道数字,但如果以前的算法是应该的,那么这些方框至少需要重叠3/4。我有5个不同质量的图像,这也导致了我的其他问题。有时候堆栈中有多个盒子没有找到(总是只有一个“真正的”堆栈),这又导致盒子不像前面提到的那样重叠。只是为了澄清,理论上可能有两个或更多的假箱子,尽管这是不可能的。 – lordylike

回答

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*'); 

制作东西是稳健为您的实际使用情况,其我假设不包括整洁的盒子是另一回事;正如评论中所建议的那样,您需要一些关于您的好盒子的定位是多么接近的概念,以及如何分离伪盒子。

例如,可以使用其他regionprops测量,如'BoundingBox''Extrema'并定义某种盒子沿x相对多少重叠以彼此的测量,然后使用该(这可以由即使工作组图像中有多个堆栈)。

+0

谢谢,我会尽快尝试。我已经有了通过边界框计算的框的质心听起来很可能。我会让你知道它是如何工作的。 – lordylike

+0

谢谢,我刚刚检查。这似乎适用于一个假箱子。我会稍微调整它来考虑多个盒子,但这应该很容易。 – lordylike