function KirschEdgeDetection(image)
% 读取图像
I = imread("beijingbangwan.jpg");
% 转换为灰度图像
grayI = rgb2gray(I);
% 定义 Kirsch 算子
kirsch_masks = cat(3, [-3 -3 5; -3 0 5; -3 -3 5], ...
[-3 5 5; -3 0 5; -3 -3 -3], ...
[5 5 5; -3 0 -3; -3 -3 -3], ...
[5 5 -3; 5 0 -3; -3 -3 -3], ...
[5 -3 -3; 5 0 -3; 5 -3 -3], ...
[-3 -3 -3; 5 0 -3; 5 5 -3], ...
[-3 -3 -3; -3 0 -3; 5 5 5], ...
[-3 -3 -3; -3 0 5; -3 5 5]);
% 应用 Kirsch 算子
edge_magnitude = zeros(size(grayI));
for i = 1:8
% 使用每个 Kirsch 算子进行卷积
filtered = imfilter(double(grayI), kirsch_masks(:,:,i), 'same');
% 计算最大边缘强度
edge_magnitude = max(edge_magnitude, filtered);
end
% 显示结果
figure, imshow(I), title('Original Image');
figure, imshow(edge_magnitude, []), title('Edge Magnitude Using Kirsch Operator');
% 将边缘结果与灰度图像相加
combined_image = imadd(uint8(edge_magnitude), grayI);
figure, imshow(combined_image), title('Combined Image');
end
Kirsch算子边缘检测算法(Matlab)
于 2024-03-21 15:23:19 首次发布