/ / Wie berechnet man den Radius des Rings in MATLAB? - Matlab, Bildverarbeitung, Dicke

Wie berechnet man den Radius des Rings in MATLAB? - Matlab, Bildverarbeitung, Dicke

Ich habe einen Stapel kortikaler Knochenbilder hochAuflösung und binarisiert. Wie gehe ich bei der Berechnung der mittleren inneren und äußeren Radien für jedes Bild vor? Hier ist ein Beispiel für die Art von Bildern, die ich verarbeiten muss:

Antworten:

3 für die Antwort № 1

Dies könnte ein Ansatz sein -

%// Read in image and conert to binary
im = im2bw(imread("http://s9.postimg.org/aew1l7tvz/4_COPY_copy.png"));
figure, imshow(im), title("Original Image")

%// Fill holes giving us the "outer blob"
outer_blob = imfill(im,"holes");
outer_blob = biggest_blob(outer_blob); %// remove noise
figure, imshow(outer_blob), title("Outer Blob")

%// Get the inner filled blob by "removing" the original image from outer blob
inner_blob = outer_blob & ~im;
inner_blob = biggest_blob(inner_blob); %// remove noise
figure, imshow(inner_blob), title("Inner Blob")

%// Find the equivalent/mean inner and outer radii
inner_dia  = regionprops(inner_blob,"Equivdiameter");
inner_radius = inner_dia.EquivDiameter/2

outer_dia  = regionprops(outer_blob,"Equivdiameter");
outer_radius = outer_dia.EquivDiameter/2

Zugehöriger Funktionscode -

function out = biggest_blob(BW)

%// Find and labels blobs in the binary image BW
[L, num] = bwlabel(BW, 8);

%// Count of pixels in each blob, basically this should give the area of each blob
counts = sum(bsxfun(@eq,L(:),1:num));

%// Get the label(ind) cooresponding to blob with the maximum area
%// which would be the biggest blob
[~,ind] = max(counts);

%// Get only the logical mask of the biggest blob by comparing all labels
%// to the label(ind) of the biggest blob
out = (L==ind);

return;

Code Run und Debug Bilder -

inner_radius =
211.4740
outer_radius =
267.8926

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben