how can i extract radius signature of a binary image?

i have a binary image and radius signature is distance between pixels on contour of object and its centroid. i use bwboundaries() but result is not good
i saw a example in matlab code of bwboundaries(),it used plot to show contour plot has best result but i dont need plot i need a matrix. i use blow code but my result is not same with matlab's example.
img4=zeros(size(img3));
[B,L] = bwboundaries(img3,'noholes');
for k = 1:length(B)
boundary = B{k};
for i=1:size(boundary,1)
img4(boundary(i,1), boundary(i,2))=1;
end
end

Risposte (3)

Image Analyst
Image Analyst il 26 Ago 2013
Modificato: Image Analyst il 26 Ago 2013
Use regionprops to find the centroid, then use the Pythagorean theorem to get the distances between the boundary x,y coordinates and the centroid.

9 Commenti

I also need to do the same i.e. find the signature of binary image.
________________________________________________________________________
image = imread('C:\Users\Saeed Rattar\Desktop\aa_contour.jpg');
GRAY1 = rgb2gray(image);
threshold1 = graythresh(GRAY1);
BW1 = im2bw(GRAY1, threshold1);
stats = regionprops(BW1, 'Centroid')
c = stats.Centroid
--------------------------------------------------------------------------
I am getting this " 173.5000 1.0000 " as centroid. I think centroid should be single numerical value but why I am getting answer of 2 x 1 size.
How to use Pythagorean theorem to get the distances between the boundaries?
My binary image is like
Use bwboundaries on the binary image
boundary = bwboundaries(binaryImage);
x = boundary(:,1);
y = boundary(:,2);
distances = sqrt((x - c(1)).^2 + (y - c(2)).^2);
mage = imread('C:\Users\Explorer\Desktop\aa_contour.jpg');
GRAY1 = rgb2gray(image);
threshold1 = graythresh(GRAY1);
BW1 = im2bw(GRAY1, threshold1);
stats = regionprops(BW1, 'Centroid')
c = stats.Centroid
boundary = bwboundaries(BW1);
x = boundary(:,1);
y = boundary(:,2);
distances = sqrt((x - c(1)).^2 + (y - c(2)).^2)
____________________________________________________________________________
Error
-------------------------------------------------------------------------------
stats = 2x1 struct array with fields:
Centroid
c = 173.5 1
Index exceeds matrix dimensions. Error in signature (line 17) y = boundary(:,2);
___________________________________________________________________________
What should I do to correct this error?
Use the debugger? What does "whos boundary" say? Is it an N rows by 2 columns array?
>> whos
Name Size Bytes Class Attributes
BW 519x346 179574 logical
boundary 3x1 39824 cell
c 1x2 16 double
image 519x346x3 538722 uint8
stats 2x1 320 struct
x 3x1 39824 cell
>> whos boundary
Name Size Bytes Class Attributes
boundary 3x1 39824 cell
You have 3 blobs in your binary image, not just one. I don't know why. What are the other 2 blobs? You can get one by doing
thisBoundary = boundary{1}; % Or whatever blob you want.
x = thisBoundary(:,1);
y = thisBoundary(:,2);
distances = sqrt((x - c(1)).^2 + (y - c(2)).^2);
Thanks for helping!
Can you go ahead and accept it to close this out?

Accedi per commentare.

Sabanam
Sabanam il 25 Feb 2014
Thanks sir...its really helpful and the best answer to find radius signature...
Sabanam
Sabanam il 25 Feb 2014
Modificato: Sabanam il 25 Feb 2014
Which formula used to find centroid in matlab?..Whenever i have read they are using mean of the point but is it right?

Richiesto:

il 26 Ago 2013

Modificato:

il 25 Feb 2014

Community Treasure Hunt

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

Start Hunting!

Translated by