我被赋予了将一个图像的一部分映射到另一个图像的任务。
基本上给定ImageA
和ImageB
,我用ginput
以相同的方式从ImageA
取4分,然后从ImageB
取4分(在ImageA
中将4点覆盖映射到该部分中,只需将部分从ImageB
变形为ImageA
的尖头部分即可。
当我试图按照指示使用最小二乘最小化方法来尝试使用添加到帖子中的函数时,会出现我的问题,但是当我根据公式编写此函数时,它只是行不通并且无法提供正确的输出,也许我只是做错了。 我的其余代码基本上都弄乱了所有的变体,但似乎我的主要问题是系数错误。
function [ result ] = findCoefficients(imageA, imageB)
% x y 0 0 1 0 -xx' -yx'
% 0 0 x y 0 1 -xy' -yy'
% y' and x' are destination coordinates of ImageA, while ImageB is to be mapped into ImageA
A =
[imageB(1) imageB(2) 0 0 1 0 -imageB(1)*imageA(1) -imageB(2)*imageA(1);
0 0 imageB(1) imageB(2) 0 1 -imageB(1)*imageA(2) -imageB(2)*imageA(2);
imageB(3) imageB(4) 0 0 1 0 -imageB(3)*imageA(3) -imageB(4)*imageA(3);
0 0 imageB(3) imageB(4) 0 1 -imageB(3)*imageA(4) -imageB(4)*imageA(4);
imageB(5) imageB(6) 0 0 1 0 -imageB(5)*imageA(5) -imageB(6)*imageA(5);
0 0 imageB(6) imageB(6) 0 1 -imageB(5)*imageA(6) -imageB(6)*imageA(6);
imageB(7) imageB(8) 0 0 1 0 -imageB(7)*imageA(7) -imageB(8)*imageA(7);
0 0 imageB(7) imageB(8) 0 1 -imageB(7)*imageA(8) -imageB(8)*imageA(8)];
B = imageA(:);
result = pinv(A)*B;
end