我试图转换这张图片:
这样的事情:
在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函数getperspectivetransform
和warpPerspective
可以做这样的事情。有没有办法在MATLAB中做到这一点?