draw oriented rectangle around a blob
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Tristan Mas
am 26 Mär. 2022
Kommentiert: Image Analyst
am 27 Mär. 2022
function y=cadre(x)
info = regionprops(x,'Boundingbox') ;
imshow(x)
hold on
for k = 1 : length(info)
BB = info(k).BoundingBox;
rectangle('Position', [BB(1),BB(2),BB(3),BB(4)],'EdgeColor','g','LineWidth',1) ;
end
I am using this code with a segmented image in input, and I have this result :
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/942154/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/942159/image.png)
I would like the rectangles to be the smallest and with the same orientation as the objects, to get the angles for exemple.
How can I modify my code ?
0 Kommentare
Akzeptierte Antwort
Scott MacKenzie
am 27 Mär. 2022
Bearbeitet: Scott MacKenzie
am 27 Mär. 2022
Something like this seems to work:
img = imread('testimage.jpg');
bw = imbinarize(im2gray(img),'adaptive','Sensitivity',0.45);
info = regionprops(bw, 'all');
imshow(img);
hold on;
minSize = 50; % ignore small/noise regions (adjust as necessary)
angles = [];
for k = 1:length(info)
% get region properties
w = info(k).MajorAxisLength;
h = info(k).MinorAxisLength;
x = info(k).Centroid(1) - w/2;
y = info(k).Centroid(2) - h/2;
theta = info(k).Orientation;
if h < minSize % skip the small/noise regions
continue;
end
angles = [angles theta];
ps = polyshape([x, x, x+w, x+w], [y, y+h, y+h, y]);
ps2 = rotate(ps, -theta, [x+w/2 y+h/2]);
plot(ps2, 'EdgeColor','r', 'FaceColor','none', 'LineWidth',2);
end
angles
1 Kommentar
Weitere Antworten (2)
Walter Roberson
am 26 Mär. 2022
Bearbeitet: Walter Roberson
am 26 Mär. 2022
Note that if you are looking for the angles then regionprops() 'Orientation' will give you the angle of the major axes.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Image Segmentation and Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!