draw oriented rectangle around a blob
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tristan Mas
le 26 Mar 2022
Commenté : Image Analyst
le 27 Mar 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 commentaires
Réponse acceptée
Scott MacKenzie
le 27 Mar 2022
Modifié(e) : Scott MacKenzie
le 27 Mar 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 commentaire
Plus de réponses (2)
Walter Roberson
le 26 Mar 2022
Modifié(e) : Walter Roberson
le 26 Mar 2022
Note that if you are looking for the angles then regionprops() 'Orientation' will give you the angle of the major axes.
0 commentaires
Voir également
Catégories
En savoir plus sur Image Segmentation and Analysis dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!