0

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

我正在使用 MATLAB 执行图像分析。如果你能给我一些关于识别这些曲线的提示,那就太好了。

示例图片:

在此处输入图像描述

4

2 回答 2

1

如果图像保持这样,您可能可以做一个非常简单的方法来逐行计算位(但这只有在它们保持水平或垂直时才有效)。这将为您提供某种沿 y 坐标的直方图,使您可以平均其中一条线的 y 坐标。

% 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 坐标。

结果

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

于 2016-01-18T17:32:48.107 回答
1

使用精明的边缘检测器。但是,为了使其正常工作,您必须阅读其中的参数,并“摆弄”它们。我希望 Canny 边缘检测在这个数据集上做得很好。

edge(yourImageHere, 'canny')
于 2016-01-18T18:48:48.533 回答