Я изучаю, как hough
и houghlines
работают в MATLAB, но я не могу заставить код примера, найденный в документации функции, корректно вести себя даже для simple line. Я рисовал Paint.MATLAB: не может получить houghlines, чтобы обнаружить даже простую линию?
Вот код, который я использую:
clear all; clc; close all
I = imread('lines2.png');
BW = im2bw(I);
[H,T,R] = hough(BW,'Theta',-90:0.1:89.99,'RhoResolution',1);
P = houghpeaks(H,2);
lines = houghlines(H,T,R,P,'FillGap',10,'MinLength',1);
figure, imshow(I), hold on
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
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
Я получаю this результат (концы линий лежат за пределами самого изображения). Кто-нибудь еще может воспроизвести его?
Я попытался изменить параметры для hough
, но ни один из моих тестов не дал ожидаемого результата. Фактически, установка параметра параметра 'Theta'
на 1 приводит к тому, что линия не получается справа. Я также попытался инвертировать изображение с BW=~BW;
, но затем я получаю только строку, очень удаленную от рамки ...
О, Боже, я не могу поверить, что не заметил этого! Большое вам спасибо за указание на это; Я предполагаю, что это одна из тех ошибок, которые вы только что прочитали снова и снова, пока не поняли несколько дней со свежим умом. В любом случае, вы спасли меня некоторое время при волочении: D – yuyu2809