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

17 ビュー (過去 30 日間)
Chica_chic
Chica_chic 2016 年 6 月 6 日
回答済み: karim botros 2022 年 4 月 8 日
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 月 6 日
This is what I was looking for. Thank you for your help :)
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)

カテゴリ

Help Center および File ExchangeFeature Detection and Extraction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by