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');
- 本段代码展示了使用不同算子对图像进行边缘检测,包括Sobel、Prewitt、Roberts、LoG及Canny算子。通过
imshow
查看检测结果并用imwrite
保存结果图像。