Как я могу выпрямить линию, нарисованную вручную в Matlab?
Я работаю над проектом обработки изображений, где мне нужно обнаружить углы. Но когда я пытаюсь обнаружить углы с помощью функции corner
, он обнаруживает небольшие смещения как углы, как показано.
Я пробовал с различными порогами от 0 до 0,24 и не мог получить результаты пищи.
imgskele = bwmorph(imgfill,'thin',Inf);
C = corner(imgspur, 'SensitivityFactor', 0.24);
figure; imshow(imgspur);
hold on;
plot(C(:,1), C(:,2),'bo','MarkerSize',10,'MarkerFaceColor','g');
hold off;
Так я имею в виду настройки (перерисовки) линию, чтобы сделать ее прямой линией, соединяющей те точки
Edit 1:
Вот полные размеры исходного и вывода изображения:
Возможно, это алгоритм Peucker? Проверьте алгоритм Википедии Рамер-Дуглас-Пьюкер –
@MarkSetchell: Наверное, это излишнее, но основная идея разумна. – MSalters
Ваш * "начальный образ" * не соответствует вашему * "изображению результатов" *, поэтому трудно понять, что заставляет OpenCV думать, что есть углы. Можете ли вы показать полное начальное изображение, содержащее «углы» *, пожалуйста? –