改变imref2d这样的形象是在中心

5视图(30天)
凯瑟琳Heitger
凯瑟琳Heitger 2021年12月5日
评论道: 凯瑟琳Heitger2021年12月8日
我已经要求在之前的问题我可以如何改变transformationmatrix为应用程序的起源。最初的情况,似乎transformationmatrix drastic到模拟图像与错误的起源。模拟图像的信息包含一个平面作为对象。所以图像tranfomration后应该在矩阵indec约广场开始。(26;26)。和图像的大小2049 x2049px。前面的问题可以在这里找到: https://de.mathworks.com/matlabcentral/answers/1598324-transformation-matrix-projective2d-change-of-origin-at-application?s_tid=srchtitle
现在这些答案和额外的帮助下研究imwarp我应用不同的参数()和有这个:
pixelExtendInWorldX = (203.53 * 2) / 2049;%我知道现实世界的图像平面x 203.53 * 2毫米长。
pixelExtendInWorldY = (1390 - 984.41) / 2049;%的distancce y方向是1390 - 984.41
outputimref2d = imref2d(大小(origimage)、pixelExtendInWorldX pixelExtendInWorldY);
realdectcorroutputview2 = imwarp (origimage tmatrix,“最近的”,“OutputView”,outputimref2d);
这个我得到一个结果始于矩阵indec(93、92),然后切断,所以中心似乎是太多的正确的方向。但结果似乎是一个广场(所需的形状),可见边缘是直线。当图像被切断只有两个四个边缘清晰可见。
我试着从我的第一个问题的答案,这是我写的
xWorldLimits2 = (-203.54 - 203.54);
yWorldLimits2 = (1390 - 984.41);
outputimref2dwl = imref2d(大小(origimage)、xWorldLimits2 yWorldLimits2);
realdectcorroutputview2wl = imwarp (origimage tmatrix,“最近的”,“OutputView”,outputimref2dwl);
这导致了一个图像,开始在indec(1117/1118),直接向下,但有一个突出的优势在正确的方向从这个形象。
我也试过
xWorldLimits2 = (-203.54 - 203.54);
xWorldLimits2 = xWorldLimits2-mean (xWorldLimits2);
yWorldLimits2 = (1390 - 984.41);
yWorldLimits2 = yWorldLimits2-mean (yWorldLimits2);
outputimref2dwl = imref2d(大小(origimage)、xWorldLimits2 yWorldLimits2);
realdectcorroutputview2wl = imwarp (origimage tmatrix,“最近的”,“OutputView”,outputimref2dwl);
并没有真正改变结果。
Rin = imref2d(大小(origimage));
Rin.XWorldLimits = Rin.XWorldLimits-2 *意味着(Rin.XWorldLimits);
Rin.YWorldLimits = Rin.YWorldLimits-2 *意味着(Rin.YWorldLimits);
realdectcorrRin = imwarp (origimage Rin身上tmatrix,“最近的”);
没有工作。
第一个尝试似乎产生最好的结果,但是我怎么能另外改变imref2d-object(拍摄),最终的图像不是切断了,但更集中?
任何帮助都是感激。
5个评论
凯瑟琳Heitger
凯瑟琳Heitger 2021年12月6日
这里有一些简单的草图,矩阵的样子。idealdect200是期望的结果,realdect200是将图像。其他命名的代码。结束在(2049/2049)表明,有一个电话断了。realdectcorroutputview2v2不是画,因为它只包含0。

登录置评。

答案(2)

焉耆刘
焉耆刘 2021年12月6日
是的,先生,tmatrix用于您的代码,可以上传文件,做一些分析,等
清晰的所有clc;密切所有;
origimage = imread (“football.jpg”);
Rin = imref2d([大小(origimage, 1)大小(origimage, 2)));
Rin.XWorldLimits = Rin.XWorldLimits-2 *意味着(Rin.XWorldLimits);
Rin.YWorldLimits = Rin.YWorldLimits-2 *意味着(Rin.YWorldLimits);
tmatrix = affine2d ([1 0 0;5 1 0;0 0 1);
realdectcorrRin = imwarp (origimage Rin身上tmatrix,“最近的”);
图;蒙太奇({origimage realdectcorrRin},“大小”(1 - 2),“写成BackgroundColor”,' w ',“BorderSize”(2 - 2));

马特·J
马特·J 2021年12月6日
编辑:马特·J 2021年12月6日
输出看起来不像一个正方形的原因是因为你tmatrix是错误的,不是因为别的:
负载“SimulationDataMathworks0612.mat”;
origimage = realdect200;%或realdet1802028
议员= fliplr([19日19;19 2031;2034 2034;2034 16]);
fp = fliplr([26日26日;26 2024;2024 2024;2024年26]);
tform = fitgeotrans (mp,《外交政策》,“射影”);
realdectcorrRin = imwarp (origimage tform,“最近的”);
imshow (realdectcorrRin [])
3评论
凯瑟琳Heitger
凯瑟琳Heitger 2021年12月8日
我读到,但我完全忘了。但我输入数据fitgeotrans()是像你描述的世界坐标。所以至少是正确的。

登录置评。

s manbetx 845


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!