Как обнаружить плавные кривые в Matlab

Я пытаюсь обнаружить изогнутый конвейер на изображении. Я использовал следующий код, используя преобразование Хафа, чтобы обнаружить его края

%# load image, and process it
I = imread('ggp\2.jpg');
g = rgb2gray(I);
bw = edge(g,'Canny');

[H,T,R] = hough(bw);

P  = houghpeaks(H,500,'threshold',ceil(0.4*max(H(:))));

% I apply houghlines on the grayscale picture, otherwise it doesn't detect 
% the straight lines shown in the picture
lines = houghlines(g,T,R,P,'FillGap',5,'MinLength',50);
figure, imshow(g), hold on

for k = 1:length(lines)

    xy = [lines(k).point1; lines(k).point2];

    deltaY = xy(2,2) - xy(1,2);
    deltaX = xy(2,1) - xy(1,1);
    angle = atan2(deltaY, deltaX) * 180 / pi;
    if (angle == 0)

        plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

        % Plot beginnings and ends of lines
        plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
        plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');        
    end
end

Как показано, две прямые линии успешно обнаруживают верхний и нижний края конвейера, но я не знаю, как определить, изогнут он или нет (на рисунке он изогнут) и как рассчитать степень этого.

Кривая примерно нарисована вручную на рисунке ниже (красным цветом):

Я не нашел ни кода, ни функции для преобразования Хафа в matlab для обнаружения таких гладких кривых (например, полиномы 2-й степени:y= a*x^2). Любое другое решение также приветствуется.

Это оригинальное изображение:

Ответы на вопрос(1)

Ваш ответ на вопрос