Projection of an Image
51 views (last 30 days)
Show older comments
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/167670/image.png)
The four corners I've obtained are shown as well. The result of the transformation is.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/167672/image.png)
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?
0 Comments
Answers (2)
Ben Drebing
on 21 Dec 2017
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,[]);
1 Comment
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!