use*_*119 4 matlab image-processing image-rotation
假设我有4个角点:(x1,y1); (x2,y2);(x3,y3); (x4,y4)和矩形图像尺寸(m,n)如何显示图像,使得显示的图像在所提到的四个点处有角.换句话说,四个角可以控制图像旋转的角度(请记住图像边缘可能不平行)谢谢!
您需要扭曲图像以获得通用解决方案.你可以这样做:
首先,阅读图像.
img=imread('cameraman.tif');
if size(img,3)==3
img=rgb2gray(img);
Run Code Online (Sandbox Code Playgroud)
指定转换点集(在您的情况下(x1,y1) ... (x4,y4)),它们是fixedPoints.
movingPoints=[1 1;256 1; 256 256; 1 256] %(x,y) coordinate
fixedPoints=[25 25;250 12;255 200;30 180];
Run Code Online (Sandbox Code Playgroud)
然后,估计转变.我选择投射变换.你也可以选择仿射.
TFORM = fitgeotrans(movingPoints,fixedPoints,'projective');
Run Code Online (Sandbox Code Playgroud)
因为,您希望图像转到指定的角,您必须指定输出视图.可以通过如下构造参考2-D图像来完成.
R=imref2d(size(img),[1 size(img,2)],[1 size(img,1)]);
Run Code Online (Sandbox Code Playgroud)
最后,扭曲图像.
imgTransformed=imwarp(imread('cameraman.tif'),R,TFORM,'OutputView',R);
Run Code Online (Sandbox Code Playgroud)
显示图像.
imshow(imgTransformed,[]);
Run Code Online (Sandbox Code Playgroud)
您应该在指定点处具有图像的角,并且包含图像的框将具有原始图像的大小.
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |