如何在Matlab中纠正图像的倾斜透视

时间:2017-01-05 11:31:48

标签: matlab opencv transformation projection

我试图转换这张​​图片:

img1

这样的事情:

imgTransformed

在MATLAB中,基本上是通过将蓝色方块的角与图像的角相匹配,并使每个其他像素相应地进行变换。

我可以找到扭曲的蓝色方块及其质心,边界和对角线的角落,如果其中任何一个对解决方案有用。

我认为我可以根据匹配角创建投影形式。 我的尝试是:

img = imread('img1.png');

if size(img,3)==3
   img = rgb2gray(img);
end

movingPoints = [12 17; 253 16; 269 259;16 256]; %coordinate of distorted corners 
fixedPoints=[0 0;size(img,1) 0;size(img,1) size(img,2);0 size(img,2)]; %coordinate of image's corners 
TFORM = fitgeotrans(movingPoints,fixedPoints,'projective');
R=imref2d(size(img),[1 size(img,2)],[1 size(img,1)]);

imgTransformed=imwarp(imread('img1.png'),TFORM,'OutputView',R);
figure, imshow(imgTransformed);

但它似乎几乎没有成就。我也尝试过:

  • TFORM = fitgeotrans(movingPoints,fixedPoints,'affine')
  • TFORM = fitgeotrans(movingPoints,fixedPoints,'polynomial',2)找到其他2个控制点。

但仍然没有结果。

我知道OpenCV函数getperspectivetransformwarpPerspective可以做这样的事情。有没有办法在MATLAB中做到这一点?

0 个答案:

没有答案