Coordinates of corners of quadrilateral in binary mask

3 ビュー (過去 30 日間)
João Miguel Ribeiro
João Miguel Ribeiro 2019 年 10 月 21 日
コメント済み: Matt J 2020 年 10 月 28 日
I'm doing a project on computer vision in which I have to compute some homographies and perform image stitching. I also have to provide the coordinates of the corners of each image in the final panorama.
Essentially, what I need is to determine the [x,y] coordinates (or i,j indices) of the four corners of a quadrilateral in a binary mask (example in the image below).
I coded a pretty computationally inefficient function to do it. But it misses one of the corners whenever the quadrilateral is a trapezoid (which is most of the time). I tried fixing it but haven't managed to get it quite right. I have tried to detect edges and lines using the hough algorithm and then getting the intersections of those lines but the results aren't precise and looks like a complicated way of solving a somewhat simple problem. Any matlab functions or implementation ideas for this task?
  1 件のコメント
darova
darova 2019 年 10 月 22 日
Rotate image and find min/max (x,y)
321.png

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

採用された回答

Matt J
Matt J 2019 年 10 月 22 日
編集済み: Matt J 2019 年 10 月 22 日
The Computer Vision Toolbox has some ready-made corner detection functions, e.g.,
You could also try this improvised algorithm:
N=360;
theta=linspace(0,360,N);
[I,J]=find(Image);
IJ=[I,J];
c=nan(size(theta));
for i=1:N
[~,c(i)]=max(IJ*[cosd(theta(i));sind(theta(i))]);
end
H=histcounts(c,1:numel(I)+1);
[~,k] = maxk(H,4);
corners=IJ(k,:)
  5 件のコメント
Anna Maria Franzen
Anna Maria Franzen 2020 年 10 月 28 日
Dear Matt,
could you please explain what your improvised algorithm exactly does? Especially the formula in the for - loop, what´s the mathematical background?

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

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by