用矩形表示白点

时间:2017-04-07 14:35:02

标签: matlab rectangles region drawrectangle

我有这个带有白点的二进制图像: Binary image 我想用一个具有相同大小的斑点的矩形​​来表示每个白点,如果可能的话,使用相同的方向。有没有这样做的功能? 我可以使用RP检测每个点: enter image description here

2 个答案:

答案 0 :(得分:1)

我会计算出具有相应角度的最小Feret直径(最短投影)和垂直投影。这通常对应于最小的边界框。

请参阅此处了解计算Feret直径的MATLAB代码:http://www.crisluengo.net/archives/408

答案 1 :(得分:0)

您可以尝试使用regionprops,如下所示:

I = imread('tHZhy.png');
stats = regionprops(I, 'centroid', 'Orientation', 'MajorAxisLength','MinorAxisLength',  'BoundingBox');
figure
imshow(I)
hold on
for i=1:length(stats)
    xc = stats(i).Centroid;
    ma = stats(i).MajorAxisLength/2;
    mi = stats(i).MinorAxisLength/2;
    theta = -deg2rad(stats(i).Orientation);
    dx = [-ma -mi; ma -mi; ma mi; -ma mi; -ma -mi];
    R = [cos(theta) -sin(theta); sin(theta) cos(theta)]; % rotation matrix
    x = xc + dx*R';
    plot(xc(1), xc(2), 'g*');
    plot(x(:, 1), x(:, 2), 'g');
end

请注意,结果并不完美,尤其是对于相当方形的物体。因此,当沿着对角线引导时,主要尺寸是最大的。 enter image description here