2016-02-03 7 views
2

я в настоящее время работаю improfile на MATLAB с линией, проходящей через центр на рисунке:Почему результирующая моя функция imfile возвращается с зеркальным графиком в MATLAB?

enter image description here

После этого, я черчение равнодействующую, используя код ниже:

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); 

А вот сюжет:

enter image description here

Почему кривые зеркалируют друг друга? Я прошу лучше понять, что именно improfile, кажется, достигает в MATLAB.

ответ

3

improfile вычисляет что-то вроде «интеграла пути», он дает вам значения интенсивности изображения вокруг указанного пользователем пути. Например, если вы используете:

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). Таким образом, глядя на это, очевидно, что ваш результат должен быть отражен, потому что вы интегрируетесь по линии туда и обратно!


Sidenote:

вы можете сделать plot(c_d); и забыть об этом n

+0

Спасибо за предложение тоже! –