【发布时间】:2014-04-05 13:46:55
【问题描述】:
我想找到这些石头的面积和中心。 但其中一些找不到。
这里是代码
I=imread('E:/2.png');
level = graythresh(I);
BW = im2bw(I,level);
se = strel('disk',2);
bw1 = imclose(BW,se);
bw1 = imfill(BW,'holes');
bwa=bwareaopen(bw1,25);
cc = bwconncomp(bwa)
stat = regionprops(cc,'centroid','Area');
ss=[stat.Area];
imshow(I); hold on;
for x = 1: numel(stat)
plot(stat(x).Centroid(1),stat(x).Centroid(2), 'wp','MarkerSize',6,'MarkerFaceColor','b');
end
figure, imshow(bwa)
结果在这里:
这是黑白照片; 这些石头有些是分不开的。 有什么想法吗?
【问题讨论】:
-
我无法告诉你有多少石头看图片!我建议稍微腐蚀最后一张图片,但你的问题定义不明确,IMO。
-
有些石头粘在一起,有些不够亮,无法分开。我想知道如何才能分开,
-
图像处理的圣杯:数石头。
-
术语“图像分割”可能会引出一些想法..
-
这基本上是一个图像分割问题。这是多年来一直未解决的问题。没有任何技术可以使每个示例或情况都正确。我会做 chappjc 建议的你应该侵蚀图片的地方。就我个人而言,我会做一个开口来摆脱任何虚假的嘈杂像素。如果要分割出宽度为 40 的岩石,可以将
BoundingBox指定为regionprops函数的附加参数,然后使用宽度参数(最后两个值)来确定是否应该接受或拒绝每个形状。