我有一个二进制图像,我想在其中检测曲线并输出曲线的坐标像素位置。图像是一个嘈杂的图像,我想检测水平运行的两条曲线。
我正在使用MATLAB执行图像分析。如果您能为我提供一些识别这些曲线的提示,那就太棒了。
示例图片:
答案 0 :(得分: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坐标。
这肯定无法帮助您处理更复杂的图像,但对于您提供的图像应该这样做。如果您有关于您想要做什么的更多信息,请告诉我们。
答案 1 :(得分:1)
使用canny edge detector。但是,为了使其运作良好,您将不得不阅读parameters that go into it和“小提琴”。我希望Canny边缘检测在这个数据集上做得很好。
edge(yourImageHere, 'canny')