为什么我的 improfile 函数的结果在 MATLAB 中返回一个镜像图?

Why is the resultant of my improfile function returning with a mirrored graph in MATLAB?

我目前在 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);

剧情如下:

为什么曲线相互镜像?我要求更好地了解 improfileMATLAB 中究竟取得了什么。

improfile 计算类似于 "path integral" 的东西,它为您提供用户指定路径周围的图像强度值。例如,如果您使用:

improfile(img,[1 1],[1 size(img,2)]);

img(:,1)相同。这是因为您在 improfile 中使用的路径是从 (1,1)(1,size(img,2)) ,即第一行。但是,您绝对可以添加更复杂的路径。

在您的例子中,您将沿着一条由 4 个点定义的路径行驶。要点是,如果我用结果数字代替你的等式:

(1,79)->(134,79)->(134,79)->(1,79)。因此,看看这个,很明显你的结果应该是镜像的,因为你在一条线上来回积分!


旁注:

你可以做到 plot(c_d); 而忘掉那个 n