识别二值图像中的曲线

Identify curves in binary image

我有一个二值图像,我想在其中检测曲线并输出曲线的坐标像素位置。图像是一个嘈杂的图像,我想检测水平 运行 的两条曲线。

我正在使用 MATLAB 进行图像分析。如果您能为我提供一些识别这些曲线的提示,那就太好了。

示例图片:

如果图像保持这样,您可能可以采用一种非常简单的方法来逐行计算位(但这仅适用于保持水平或垂直的情况)。这将为您提供某种沿 y-coordinate 的直方图,让您可以对其中一条线的 y-coordinate 取平均值。

% Read the image
img = imread('To_detect_curves.png');
% Convert it to BW
img = rgb2gray(img);
% Get the size of the image for the loops
[width,height] = size(img);
bits_per_line = zeros(height,1);
% Sum over all lines (rows)
for idx=1:height
    bits_per_line(idx) = sum(img(idx,:));
end
plot(1:height,bits_per_line)

因此,您将得到如下所示的结果,您可以在其中轻松确定线条的 Y 坐标。

这肯定不会帮助您处理更复杂的图像,但对于您提供的图像应该可以。如果您有更多关于您想要做什么的信息,请告诉我们。

对他们使用 canny edge detector. But, in order to make it work well, you'll have to read about the parameters that go into it 和 "fiddle"。我希望 Canny 边缘检测在这个数据集上做得很好。

edge(yourImageHere, 'canny')