how to select region with longest length on segmented image ?

4 vues (au cours des 30 derniers jours)
Thanh Vu
Thanh Vu le 21 Mar 2022
Modifié(e) : Thanh Vu le 22 Mar 2022
I have segmented the image like the following: and within the boundaries I want to select the boundary with the longest length from the boundaries extracted from the image like the image below: help me please.
% Initialization Steps.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 15;
markerSize = 4;
%[filename, pathname] = uigetfile({'*.*'},'File Selector');
%if ~isequal(filename,0)
%fullname = strcat(pathname,filename);
I=imread('MH2.jpeg');
%else
% msgbox('Ban chua chon anh?')
%end
Id = size(I);
if length(Id) == 3
B0 = rgb2gray(I);
else
B0 = I;
end
B0 = imadjust(B0);
k1 = fspecial('gaussian', [5 5], 2.5);
Ic = imfilter(B0,k1);
figure(1),subplot(3,3,1), imshow(I);
title('anh goc');
figure(1), subplot(3,3,2), imshow(B0);
title('anh tang tuong phan');
figure(1), subplot(3,3,3), imshow(Ic);
title('anh loc gaussian');
%loc trung vi
I_m = medfilt2(B0,[3 3]);
figure(1),subplot(3,3,4), imshow(Ic);
title('anh loc trung vi');
%anh nhi phan
thresholdValue = 60;
bw = Ic > thresholdValue;
bw = bwareafilt(bw, 1);
figure(1),subplot(3,3,5), imshow(bw);
title('anh nhi phan');
%dong hinh thai
se = strel("disk",10);
C1 = imclose(bw, se);
figure(1),subplot(3,3,6), imshow(C1);
title('dong hinh thai');
%khai thac ranh gioi
[B,L,N] = bwboundaries(C1);
figure(2);
%subplot(3,3,7);
imshow(C1); hold on;
title('khai thac ranh gioi');
for k=1:length(B)
boundary = B{k};
if(k > N)
plot(boundary(:,2), boundary(:,1), 'g','LineWidth',1.5);
else
plot(boundary(:,2), boundary(:,1), 'r','LineWidth',1.5);
end
end
%

Réponse acceptée

yanqi liu
yanqi liu le 22 Mar 2022
% Initialization Steps.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 15;
markerSize = 4;
%[filename, pathname] = uigetfile({'*.*'},'File Selector');
%if ~isequal(filename,0)
%fullname = strcat(pathname,filename);
I=imread('https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/935629/MH2.jpeg');
%else
% msgbox('Ban chua chon anh?')
%end
Id = size(I);
if length(Id) == 3
B0 = rgb2gray(I);
else
B0 = I;
end
B0 = imadjust(B0);
k1 = fspecial('gaussian', [5 5], 2.5);
Ic = imfilter(B0,k1);
figure(1),subplot(3,3,1), imshow(I);
title('anh goc');
figure(1), subplot(3,3,2), imshow(B0);
title('anh tang tuong phan');
figure(1), subplot(3,3,3), imshow(Ic);
title('anh loc gaussian');
%loc trung vi
I_m = medfilt2(B0,[3 3]);
figure(1),subplot(3,3,4), imshow(Ic);
title('anh loc trung vi');
%anh nhi phan
thresholdValue = 60;
bw = Ic > thresholdValue;
bw = bwareafilt(bw, 1);
figure(1),subplot(3,3,5), imshow(bw);
title('anh nhi phan');
%dong hinh thai
se = strel("disk",10);
C1 = imclose(bw, se);
figure(1),subplot(3,3,6), imshow(C1);
title('dong hinh thai');
%khai thac ranh gioi
[B,L,N] = bwboundaries(C1);
figure(2);
%subplot(3,3,7);
imshow(C1); hold on;
title('khai thac ranh gioi');
len = [];
for k=1:length(B)
boundary = B{k};
% comput length
len(k) = (max(boundary(:,2))-min(boundary(:,2))).^2+(max(boundary(:,1))-min(boundary(:,1))).^2;
if(k > N)
plot(boundary(:,2), boundary(:,1), 'g','LineWidth',1.5);
else
plot(boundary(:,2), boundary(:,1), 'r','LineWidth',1.5);
end
end
% find
[~,ind] = max(len);
boundary = B{ind};
plot(boundary(:,2), boundary(:,1), 'm--','LineWidth',2);
  3 commentaires
yanqi liu
yanqi liu le 22 Mar 2022
yes,sir,let us check the follow method
% Initialization Steps.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 15;
markerSize = 4;
%[filename, pathname] = uigetfile({'*.*'},'File Selector');
%if ~isequal(filename,0)
%fullname = strcat(pathname,filename);
I=imread('https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/935629/MH2.jpeg');
%else
% msgbox('Ban chua chon anh?')
%end
Id = size(I);
if length(Id) == 3
B0 = rgb2gray(I);
else
B0 = I;
end
B0 = imadjust(B0);
k1 = fspecial('gaussian', [5 5], 2.5);
Ic = imfilter(B0,k1);
figure(1),subplot(3,3,1), imshow(I);
title('anh goc');
figure(1), subplot(3,3,2), imshow(B0);
title('anh tang tuong phan');
figure(1), subplot(3,3,3), imshow(Ic);
title('anh loc gaussian');
%loc trung vi
I_m = medfilt2(B0,[3 3]);
figure(1),subplot(3,3,4), imshow(Ic);
title('anh loc trung vi');
%anh nhi phan
thresholdValue = 60;
bw = Ic > thresholdValue;
bw = bwareafilt(bw, 1);
figure(1),subplot(3,3,5), imshow(bw);
title('anh nhi phan');
%dong hinh thai
se = strel("disk",10);
C1 = imclose(bw, se);
figure(1),subplot(3,3,6), imshow(C1);
title('dong hinh thai');
%khai thac ranh gioi
b1 = bwperim(C1);
b1(:,[1:2 end-2:end]) = 0;
b1 = logical(b1);
[B,L,N] = bwboundaries(b1);
figure(2);
%subplot(3,3,7);
imshow(C1); hold on;
title('khai thac ranh gioi');
len = [];
for k=1:length(B)
boundary = B{k};
% comput length
len(k) = (max(boundary(:,2))-min(boundary(:,2))).^2+(max(boundary(:,1))-min(boundary(:,1))).^2;
if(k > N)
plot(boundary(:,2), boundary(:,1), 'g','LineWidth',1.5);
else
plot(boundary(:,2), boundary(:,1), 'r','LineWidth',1.5);
end
end
% find
[~,ind] = max(len);
boundary = B{ind};
figure;
%subplot(3,3,7);
imshow(C1); hold on;
plot(boundary(:,2), boundary(:,1), 'm--','LineWidth',2);
Thanh Vu
Thanh Vu le 22 Mar 2022
Modifié(e) : Thanh Vu le 22 Mar 2022
I'm really grateful to you yanqi liu. I still have one step to do is to extract the depth feature to classify the image by SVM method like the algorithm in figure below. But I don't understand what the edge pixels mentioned in the algorithm mean. so can you help me write this algorithm on matlab? I know I asked you too much, but I really don't understand the matlab code that I had to submit the report for the other day. help me please :((((((
I would appreciate it if you could help me. I'm really sorry if my requests bother you

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Filter Banks dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by