我目前正在 MATLAB 上运行 improfile
,其中一条线穿过下图的中心:
这样做之后,我使用下面的代码绘制结果:
xi = [1 size(d_Img,2) size(d_Img,2) 1];
yi = [ceil(size(d_Img,1)/2), ceil(size(d_Img,1)/2), ceil(size(d_Img,1)/2 ),ceil(size(d_Img,1)/2)];
c_d = improfile(d_Img,xi,yi);
c_c = improfile(c_Img,xi,yi);
c_d = c_d';
c_c = c_c';
size_c = size(c_d);
n = 1:size_c(2);
plot(n,c_d);
情节如下:
为什么曲线相互镜像?我要求更好地了解 improfile
在 MATLAB
中到底实现了什么目标。
最佳答案
improfile
计算类似“路径积分”的东西,它为您提供用户指定路径周围的图像强度值。例如,如果您使用:
improfile(img,[1 1],[1 大小(img,2)]);
它与 img(:,1)
相同。这是因为您在 improfile
中使用的路径是从 (1,1)
到 (1,size(img,2))
,意思是第一行。但是,您绝对可以添加更复杂的路径。
在你的例子中,你将走一条由 4 个点定义的路径。如果我用结果数字替换你的方程,要点是:
(1,79)->(134,79)->(134,79)->(1,79)
。因此,看看这个,很明显你的结果应该是镜像的,因为你是通过一条线来进行积分的!
旁注:
你可以做plot(c_d);
并忘记n
关于matlab - 为什么我的 improfile 函数的结果在 MATLAB 中返回镜像图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179352/