How do I create a minimum bounding box from locations in cornerPoints object?

31 ビュー (過去 30 日間)
I am trying to create a minimum bounding box(rectangle) from the corner locations obtained by selecting 75 strongest points after using detectMinEigenFeatures(the example given in the documentation). Here is my code:
I = imread('F:\8th sem\programs\proc_8\001.jpg'); corners = detectMinEigenFeatures(I); strong = corners.selectStrongest(70); figure, imshow(I); hold on plot(strong);
I want to know how to create a rectangle that encloses my region on interest with these corner point locations. Can someone help me in writing the code?

採用された回答

KSSV
KSSV 2016 年 6 月 6 日
Are you expecting rectangle like below?
I = imread('F:\8th sem\programs\proc_8\001.jpg');
corners = detectMinEigenFeatures(I);
strong = corners.selectStrongest(70);
figure,
imshow(I);
hold on
plot(strong);
coor = strong.Location ;
xmin = min(coor(:,1)) ; xmax = max(coor(:,1));
ymin = min(coor(:,2)) ; ymax = max(coor(:,2));
% Rectangle coordinates
O = [xmin,ymin ; xmax ymin ; xmax ymax ; xmin ymax ; xmin ymin] ;
plot(O(:,1),O(:,2),'k')
  2 件のコメント
Chica_chic
Chica_chic 2016 年 6 月 8 日
What if I wanted a polygon out of the coordinates, in such a way that the points get connected clockwise? I've posted a separate question regarding it. It would be great if you could check it.

サインインしてコメントする。

その他の回答 (3 件)

Nut
Nut 2016 年 6 月 6 日
Hi,
I think this code should be ok for you:
x_coordinates = strong.Location(:,1);
y_coordinates = strong.Location(:,2);
left_edge = floor(min(x_coordinates));
right_edge = ceil(max(x_coordinates));
up_edge = floor(min(y_coordinates));
down_edge = ceil(max(y_coordinates));
new_I = I(up_edge:down_edge,left_edge:right_edge);
imshow(new_I)
  1 件のコメント
Chica_chic
Chica_chic 2016 年 6 月 6 日
Although this code is working well, it wasn't what I was looking for. But thank you for your help :)

サインインしてコメントする。


Amir Barkhordary
Amir Barkhordary 2018 年 7 月 13 日
I am trying to create a rectangular bounding box of coordinates (latitude and longitude) to find out about the SST in Great Barrier Reef. For example the coordinates of Lizard Island in Queensland are: -14.667997328 145.455664844. In order to create a SST file using seaDAS Program I would would at least to have more coordinates (such left right top bottom) for this region but I do not know how create such a box containing the region's geographical characteristics in Matlab. I appreciate any help :)

karim botros
karim botros 2022 年 4 月 8 日
you can plot a rectangle or anyshape around the matched feature points using the following code:
minx = min(matchedPoints.Location(:,1));
miny = min(matchedPoints.Location(:,2));
maxx = max(matchedPoints.Location(:,1));
maxy = max(matchedPoints.Location(:,2));
rectangle('Position', [minx, miny, (maxx-minx),(maxy-miny)],...
'EdgeColor','g', 'LineWidth', 2)

Community Treasure Hunt

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

Start Hunting!

Translated by