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?

回答(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 个评论

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
B = cell2mat(B) ; % assuming B is two columns
x = B(:,2) ; y = B(:,1) ;
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?

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by