2、彩色图像的锐化: 1)读取图像‘lena.jpg’并转化为[0,1]范围内的双精度数据I; 2)分别提取图像的R、G、B三个通道; 3)生成一个3*3的拉普拉斯滤波器(fspecial函数); 4)对R、G、B三个通道分别使用3)中定义的拉普拉斯滤波器进行滤波(imfilter函数); 5)使用cat函数将滤波后的R、G、B三个通道合成为彩色图像I1。 6)从原图像中减去滤波后的彩色图像I1得到锐化后的图像I_sharp1; 7)使用提供的rgb2hsi函数将lena彩色图像转换为HSI图像; 8)分别提取图像的H、S、I三个分量; 9)对I分量使用3)中定义的拉普拉斯滤波器进行滤波; 10)使用cat函数将H、S、以及滤波后的I分量合成为HSI图像; 11)使用提供的hsi2rgb函数将HSI图像转换为RGB图像I2; 12)从原图像中减去滤波后的彩色图像I2得到锐化后的图像I_sharp2; 13)将原彩色图像I,滤波后的彩色图像I_sharp1以及滤波后的彩色图像I_sharp2显示在同一图像框中。
时间: 2024-03-25 15:36:00 浏览: 59
Assignment1.rar_lena_lena.bmp_matlab 抖动_图像抖动_灰度 抖动
好的,下面是这个问题的代码实现:
```matlab
% 读取图像
I = imread('lena.jpg');
% 将图像转换为[0,1]范围内的双精度数据
I = im2double(I);
% 分别提取图像的R、G、B三个通道
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
% 生成一个3*3的拉普拉斯滤波器
lap_filter = fspecial('laplacian');
% 对R、G、B三个通道分别使用拉普拉斯滤波器进行滤波
R_filtered = imfilter(R, lap_filter);
G_filtered = imfilter(G, lap_filter);
B_filtered = imfilter(B, lap_filter);
% 使用cat函数将滤波后的R、G、B三个通道合成为彩色图像I1
I1 = cat(3, R_filtered, G_filtered, B_filtered);
% 从原图像中减去滤波后的彩色图像I1得到锐化后的图像I_sharp1
I_sharp1 = I - I1;
% 将lena彩色图像转换为HSI图像
HSI = rgb2hsi(I);
% 分别提取图像的H、S、I三个分量
H = HSI(:,:,1);
S = HSI(:,:,2);
I = HSI(:,:,3);
% 对I分量使用拉普拉斯滤波器进行滤波
I_filtered = imfilter(I, lap_filter);
% 使用cat函数将H、S、以及滤波后的I分量合成为HSI图像
HSI_filtered = cat(3, H, S, I_filtered);
% 将HSI图像转换为RGB图像I2
I2 = hsi2rgb(HSI_filtered);
% 从原图像中减去滤波后的彩色图像I2得到锐化后的图像I_sharp2
I_sharp2 = I - I2;
% 将原彩色图像I,滤波后的彩色图像I_sharp1以及滤波后的彩色图像I_sharp2显示在同一图像框中
subplot(1,3,1);
imshow(I);
title('Original Image');
subplot(1,3,2);
imshow(I_sharp1);
title('Sharpened Image 1');
subplot(1,3,3);
imshow(I_sharp2);
title('Sharpened Image 2');
```
执行上述代码后,会在MATLAB的图像窗口中显示出原图像、使用RGB通道滤波后的锐化图像以及使用HSI分量滤波后的锐化图像。您可以根据需要修改代码,并对结果进行分析和比较。
阅读全文