Projection of an Image

55 ビュー (過去 30 日間)
Logan Davis
Logan Davis 2017 年 12 月 13 日
コメント済み: Masoud Heidari 2021 年 3 月 5 日
If I know the four corners of a rectangle that has been projected, how can I obtain a top-down view of that image using image projection. I tried to use fitgeotrans and imwarp but did not obtain the correct results. Below is the code I used:
U = double([topLeft; topRight; bottomRight; bottomLeft]);
topLeftNew = [1 1];
topRightNew = [1 width];
bottomLeftNew = [height 1];
bottomRightNew = [height width];
X = double([topLeftNew; topRightNew; bottomRightNew; bottomLeftNew]);
tform = fitgeotrans(U, X, 'projective');
B = imwarp(orig, tform);
Does anyone know what I could do to fix this or a different method? The image I'm trying to transform is:
The four corners I've obtained are shown as well. The result of the transformation is.
I'd like for the result to only contain the notecard and orient it correctly upright as well. Is this possible and how can I go about achieving this?

回答 (2 件)

Ben Drebing
Ben Drebing 2017 年 12 月 21 日
I think that the orderings of your fixedpoints and movingpoints do not match up. Try
topLeft = [360, 546];
topRight = [609, 109];
botRight = [873, 240];
botLeft = [645, 703];
U = [topLeft; topRight; botRight; botLeft];
width = size(I,2);
height = size(I,1);
topLeftNew = [1 1];
topRightNew = [1 width];
bottomLeftNew = [height 1];
bottomRightNew = [height width];
X = double([topLeftNew;bottomLeftNew; bottomRightNew; topRightNew ]);
tform = fitgeotrans(U, X, 'projective');
B = imwarp(I, tform);
imshow(B,[]);
You can use imcrop to crop out the rest of the image.
  1 件のコメント
Masoud Heidari
Masoud Heidari 2021 年 3 月 5 日
Thank you very much Ben! it was a big help for me too.

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


Image Analyst
Image Analyst 2017 年 12 月 21 日
See attached demo.

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by