找对象最接近中心

14日视图(30天)
Elysi科钦
Elysi科钦 2021年4月9日
编辑: 马特·J 2021年4月9日
我做了自适应阈值,得到了输出如下3种不同的输入
现在,我想只保留3图像区域标记为1和2
我试着使用blob的对象,但它对每个输入不同
有什么方法我可以做,以保持 中心内,几乎大多数blob对象向中心
我怎样才能提取blob最接近中心吗? 或任何方法提取对象1和2

接受的答案

马特·J
马特·J 2021年4月9日
编辑:马特·J 2021年4月9日
我发现它足够高度挑战性的关闭blob手术,两肺和床上总是保证形式3不同的斑点。作为一种替代方法,下面的代码不包括床上通过使用过滤准则,感兴趣的blob重心将躺在上80%的形象。
bw {1} = imread (“//www.tatmou.com/matlabcentral/answers/uploaded_files/578437/bw1.bmp”);
bw {2} = imread (“//www.tatmou.com/matlabcentral/answers/uploaded_files/578442/bw2.bmp”);
bw {3} = imread (“//www.tatmou.com/matlabcentral/answers/uploaded_files/578447/bw3.bmp”);
i = 1:3
图(我)
蒙太奇({bw {}, getlungs (bw{我})})
结束
函数bw = getlungs (bw)
bw0 = bw;
bw = imclose (bw strel (“球”5));
[M, N] =大小(bw);
bw = bwpropfilt (bw,“ConvexArea”,0 M * N / 2);
T = regionprops (bw,“重心”,“PixelIdxList”);
C = vertcat (T.Centroid);
我= C / M (:, 2);
T = T(我< = 0.8);% 80%上
bw = false (M, N);
bw (vertcat (T.PixelIdxList)) = 1;
bw = bwareafilt (bwareafilt (bw,[50,正]),2);
bw = bw&bw0;
结束

答案(1)

图像分析
图像分析 2021年4月9日
首先我想摆脱外环形blob。然后我填满剩下的斑点。然后调用regionprops()重心。然后找中心的距离和排序,取两个值最低。我知道你已经知道了很多关于图像处理,自己肯定能做,但这是一个开始(未经考验的,因为你没有发布一个二进制图像,只是RGB图像红色标签):
(行、列)=(面具)大小;
se = strel (“磁盘”4 0);
mask2 = imclose(面具,se);
[labeledImage, numBlobs] = bwlabel (mask2);
mask2 = ismember (labeledImage 2: numBlobs);%提取内部气泡
%想要调用beareaopen()只使用blob比
%特定大小和不包括小斑点噪声。
%填补剩余的斑点。
mask2 = imfill (mask2,“黑洞”);
%测量质心。
[labeledImage, numBlobs] = bwlabel (mask2);
道具= regionprops (labeledImage,“重心”);
xy = vertcat (props.Centroid);
x = xy (: 1);
y = xy (:, 2);
%计算距离每个团的质心图像的中间。
距离=√(列/ 2 - x) ^ 2 +(行/ 2 - y) ^ 2)
%我们知道这两个是最亲密的距离。
[sortedDistances,排序方式]=排序(距离,“提升”);
现在我们知道这两个最亲密的百分比。提取只有那些。
finalMask = ismember (labeledImage,排序方式(1:2));
%显示最终的面具,应该只有两个团。
imshow (finalMask);

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的