我的建议是:
- 过滤噪音
- 创建没有线条的图像
- 从有线条的图像中减去没有线条的图像
- 应用阈值
- 后处理图像
代码:
close all;
% acquire input image
img = imread('ridges.bmp');
img = rgb2gray(img);
% remove some noise
img_gauss = imfilter(img,fspecial('gaussian',10,2));
figure();
imshow(img_gauss);
% remove all the lines from the image
img_filtered = medfilt2(img_gauss,[31,31],'symmetric');
figure();
imshow(img_filtered);
% subtract image without lines from image with lines
img_subtracted = uint8(double(img_gauss)-double(img_filtered)+127);
figure();
imshow(img_subtracted);
% threshold
img_thresh = img_subtracted>130;
figure();
imshow(img_thresh);
% use open to remove some noise
figure();
img_opened = imopen(img_thresh,ones(3));
imshow(img_opened);
