【发布时间】:2021-03-23 07:09:15
【问题描述】:
我有一张乐高积木的图像,我已经对其进行了分割,以便只得到蓝色和红色的积木。
我还有两个要查找的积木模板。
我想计算图像中每个模板积木的数量。我想数一下积木上面的圈数,但有些积木被翻转了。我怎么能这样做?
【问题讨论】:
-
如果你想进行模板匹配,你可能需要很多不同角度的模板。
我有一张乐高积木的图像,我已经对其进行了分割,以便只得到蓝色和红色的积木。
我还有两个要查找的积木模板。
我想计算图像中每个模板积木的数量。我想数一下积木上面的圈数,但有些积木被翻转了。我怎么能这样做?
【问题讨论】:
计算积木顶部的圆圈数量可能是一项非常困难的任务。更好的解决方案是关注更好的属性,例如砖的高度和宽度之间的关系。
一个可能的分割起点如下:
E = regionprops(L,'all'); % E contains all properties
area = cat(1, E.Area) % saves the area in a variable
cp = cat(1,E.Centroid) % saves the center of the object
figure,imshow(label2rgb(L));
hold on; plot(cp(:,1), cp(:,2), 'b*'); % displays the center of the objects
它将显示您的细分,并显示有关对象属性的一些信息。从那里您将能够查找您正在监视的属性,并可以在 if 语句中选择它们。根据您的图片和您选择的属性,这可能需要多达 10 个属性,但很可能会在 5 个左右。
更多信息请看这里:MATLAB segmentation overview
【讨论】: