how to detect border irregularity?

I have traced exterior boundaries of this region. now i want to have boundary box and centre of mass around it. How can I do this?

Answers (1)

If (x,y) are your boundary points.
% Get bounding box
x0 = min(x) ; x1 = max(x) ;
y0 = min(y) ; y1 = max(y) ;
%
A = [x0,y0] ;
B = [x1,y1] ;
Also to get the center, you can find mean.
iwant = [mean(x) mean(y)] ;

9 Comments

But how can I get (x,y) point? i have used this code for boundary determination.
[B,L] = bwboundaries(BW,'noholes');
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end
KSSV
KSSV on 20 Mar 2020
Edited: KSSV on 20 Mar 2020
B = cell2mat(B) ; % assuming B is two columns
x = B(:,2) ; y = B(:,1) ;
joynob ahmed
joynob ahmed on 21 Mar 2020
Edited: joynob ahmed on 21 Mar 2020
No,it can't give me the bounding box and centre of mass. May be I have done some mistake. Please check this out.I have attached the resultant image with code:
[B,L] = bwboundaries(rotatedImage,'noholes');
imshow(label2rgb(L, @jet, [1 1 1]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'black', 'LineWidth', 2)
end
% Get bounding box
B = cell2mat(B) ; % assuming B is two columns
x = B(:,2) ; y = B(:,1) ;
x0 = min(x) ; x1 = max(x) ;
y0 = min(y) ; y1 = max(y) ;
A = [x0,y0] ;
B = [x1,y1] ;
plot(A, B, 'r', 'LineWidth', 2)
iwant = [mean(x) mean(y)] ;
plot(iwant, 'g', 'LineWidth', 2)
can you help me with this please?
Attach your original image.
Attach B and L into mat file and share.
I have tried in 2 ways to detect border irregularity. Here I am taking help of an article where they have got success.I am adding both matfile and the article here.
KSSV,Have you seen the files?

Sign in to comment.

Asked:

on 20 Mar 2020

Commented:

on 2 Apr 2020

Community Treasure Hunt

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

Start Hunting!