Я хочу применить анализ компонентных компонентов на изображении с серой шкалой с учетом пикселей, уровень серого которых превышает порог. то я хочу удалить те связанные компоненты, длина которых меньше порога. пожалуйста помогите? Я написал следующий код в MATLAB, эффективен ли он?
благодарим вас заранее.анализ компонентных компонентов в 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
Это работает? – lhcgeneva
Вы можете заменить свой первый двойной цикл на одну строку: 'BW = im> thr2;' – Tom
Спасибо. но это меняет мой тип данных с двойного на логический – bahar