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

조회 수: 20 (최근 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월 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 CenterFile Exchange에서 Feature Detection and Extraction에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by