【发布时间】:2015-11-05 01:23:02
【问题描述】:
我想在灰度图像上应用连通分量分析,并考虑灰度超过阈值的像素。然后,我想删除那些长度小于阈值的连接组件。请帮我?我在MATLAB中写了以下代码,效率高吗?
提前谢谢你。
%im = input image;
% alpha1 = 0.0001;
% alpha2 = 0.0001;
% [row col] = size(im);
%
%
% thr1 = mean(mean(im))-alpha1*std(std(im));
% BW = zeros(size(im));
%
% for rr = 1:row
% for cc = 1:col
% if im(rr,cc)>thr2
% BW(rr,cc) = 1;
% else
% BW(rr,cc) = 0;
% end
% end
% end
%
% CC = bwconncomp(BW);
% area_in_pixels = cellfun(@length,CC.PixelIdxList);
% thr2 = mean(area_in_pixels)-alpha2*std(area_in_pixels);
% idx = find(area_in_pixels <= thr3);
% for kk = 1:length(idx)
% aaa = idx(kk);
% BW(CC.PixelIdxList{aaa})=0;
% end
【问题讨论】:
-
您可以将您的第一个双 for 循环替换为一行:
BW = im > thr2; -
谢谢。但这将我的数据类型从双重更改为逻辑
-
@bahar 然后就做
BW = double(im > thr2);。 -
@rayryeng:非常感谢。
标签: matlab connected-components