Projection of an Image
조회 수: 19 (최근 30일)
이전 댓글 표시
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
답변 (2개)
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,[]);
댓글 수: 1
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!