3)基于Canny算子的边缘检测

在图像处理领域中,Canny算子用于边缘检测的方法如下:

BW = edge(I, 'canny', thresh, sigma)
  • thresh:敏感度阈值参数,默认值为空矩阵[]
  • 此参数为一列向量,指定了阈值上下限
  • 第一个元素为阈值下限,第二个元素为阈值上限
  • 若只提供一个阈值元素,则视为上限值,下限值自动设定为其0.4倍。
  • 若无阈值指定,算法会自动确定。

示例:

b1 = imread('nir.bmp');
h58 = fspecial('gaussian', 5, 0.8);
b = imfilter(b1, h58);
bw1 = edge(b, 'sobel');  % Sobel算子
bw2 = edge(b, 'prewitt'); % Prewitt算子
bw3 = edge(b, 'roberts'); % Roberts算子
bw4 = edge(b, 'log');     % LoG算子
bw5 = edge(b, 'canny');   ?nny算子

figure; imshow(bw1); imwrite(bw1, 'nirbwsobel.bmp');
figure; imshow(bw2); imwrite(bw2, 'nirbwprewitt.bmp');
figure; imshow(bw3); imwrite(bw3, 'nirbwroberts.bmp');
figure; imshow(bw4); imwrite(bw4, 'nirbwlog.bmp');
figure; imshow(bw5); imwrite(bw5, 'nirbwcanny.bmp');
  • 本段代码展示了使用不同算子对图像进行边缘检测,包括SobelPrewittRobertsLoGCanny算子。通过imshow查看检测结果并用imwrite保存结果图像。