1

我有一些灰度图,如下图:</p>

原来的

该图像就像一个“圆盘”,在非黑色区域包含大量噪声。我想检测其中的线条。这条线很容易被眼睛看到,但很难被电脑看到。我分发了这条线以进行更好的演示。

显示线

现在我尝试了很多方法,比如霍夫线变换、Radon变换等等。但是,很难判断我是否以错误的方式使用它们,或者这些方法不适用于这项任务。

我是图像处理的初学者。这里有人可以提供一些想法吗?非常感谢!

4

1 回答 1

2

您可以尝试使用 Gabor 过滤器。这是一个开始:

img = imread('https://i.stack.imgur.com/sHA7w.png');
% gray out empty spaces
img(img == 0) = 123;
% create gabor filter bank
wavelength = 6;
orientation = 5:5:180;
g = gabor(wavelength,orientation);
outMag = imgaborfilt(img,g);
% plot the magnitude at peak orientation
ii = 23;
figure
imagesc(outMag(:,:,ii))
title(['Magnitude at ',num2str(orientation(ii)),'deg'])
% create a mask
mask = outMag(:,:,ii) > 250;
figure;
imshow(mask)

您仍然必须检测在哪一层您获得了高幅度,并过滤蒙版以隐藏边缘和小块。

于 2019-11-12T15:16:37.263 回答