MATLAB 编程实现一阶锐化(sobel算子)和二阶锐化
时间: 2024-06-08 14:10:47 浏览: 103
一阶锐化(Sobel算子):
Sobel算子是一种常用的图像边缘检测算子,可以用于一阶锐化,实现代码如下:
```matlab
I = imread('test.jpg');
I = rgb2gray(I);
% Sobel算子
h1 = [-1,0,1;-2,0,2;-1,0,1];
h2 = [-1,-2,-1;0,0,0;1,2,1];
% 一阶锐化
Gx = conv2(double(I),h1,'same');
Gy = conv2(double(I),h2,'same');
G = sqrt(Gx.^2+Gy.^2);
% 显示结果
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(G));title('一阶锐化(Sobel算子)');
```
二阶锐化:
二阶锐化常用的算子有拉普拉斯算子和高斯拉普拉斯算子,实现代码如下:
```matlab
I = imread('test.jpg');
I = rgb2gray(I);
% 拉普拉斯算子
h = [0,-1,0;-1,4,-1;0,-1,0];
% 高斯拉普拉斯算子
% h = fspecial('log',3);
% 二阶锐化
G = conv2(double(I),h,'same');
% 显示结果
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(G));title('二阶锐化(拉普拉斯算子)');
```
其中,如果使用高斯拉普拉斯算子,可以用 `fspecial` 函数生成卷积核。
阅读全文