用matlab编写,对指定图像(lena.bmp)进行锐化(简单梯度算法、ROBERT算子,Prewitt边缘算子和拉普拉斯算子),将原始图像及锐化后的图像都显示于屏幕上,比较锐化的效果。
时间: 2024-02-23 13:57:55 浏览: 56
MATLAB实现图像锐化
5星 · 资源好评率100%
好的,我会为您提供解答。
首先,我们需要加载lena.bmp图像,并在MATLAB中显示它。您可以使用以下代码:
```matlab
img = imread('lena.bmp');
imshow(img);
```
接下来,我们将使用不同的锐化算法来对图像进行锐化。以下是每个算法的MATLAB代码:
1. 简单梯度算法:
```matlab
kernel = [-1 -1 -1; -1 8 -1; -1 -1 -1];
sharp_img = imfilter(img, kernel);
```
2. ROBERT算子:
```matlab
kernel = [-1 0; 0 1];
sharp_img = imfilter(img, kernel);
```
3. Prewitt边缘算子:
```matlab
kernel = [-1 -1 -1; 0 0 0; 1 1 1];
sharp_img = imfilter(img, kernel);
```
4. 拉普拉斯算子:
```matlab
kernel = [0 -1 0; -1 5 -1; 0 -1 0];
sharp_img = imfilter(img, kernel);
```
最后,我们可以使用下面的代码将原始图像和锐化后的图像显示在同一张图上:
```matlab
subplot(1,2,1);
imshow(img);
title('原始图像');
subplot(1,2,2);
imshow(sharp_img);
title('锐化后的图像');
```
将所有代码组合在一起,就可以得到完整的MATLAB代码:
```matlab
img = imread('lena.bmp');
subplot(2,2,1);
imshow(img);
title('原始图像');
kernel = [-1 -1 -1; -1 8 -1; -1 -1 -1];
sharp_img = imfilter(img, kernel);
subplot(2,2,2);
imshow(sharp_img);
title('简单梯度算法');
kernel = [-1 0; 0 1];
sharp_img = imfilter(img, kernel);
subplot(2,2,3);
imshow(sharp_img);
title('ROBERT算子');
kernel = [-1 -1 -1; 0 0 0; 1 1 1];
sharp_img = imfilter(img, kernel);
subplot(2,2,4);
imshow(sharp_img);
title('Prewitt边缘算子');
kernel = [0 -1 0; -1 5 -1; 0 -1 0];
sharp_img = imfilter(img, kernel);
subplot(2,2,5);
imshow(sharp_img);
title('拉普拉斯算子');
```
运行上述代码,您将会在MATLAB窗口中看到原始图像和四种锐化算法的效果。
阅读全文