clear all; close all;
I = imread('cameraman.tif');
I = im2double(I);
I = imnoise(I, 'salt & pepper', 0.01);
PSF = fspecial('average', 3);
Q1 = 1.6;
Q2 = -1.6;
j1 = imfilter(I.^(Q1+1), PSF);
j2 = imfilter(I.^Q1, PSF);
J = j1 ./ j2;
k1 = imfilter(I.^(Q2+1), PSF);
k2 = imfilter(I.^Q2, PSF);
K = k1 ./ k2;
figure;
subplot(131);
imshow(I);
title('Original Image with Salt and Pepper Noise');
subplot(132);
imshow(J);
title('Processed Image with Enhanced Contrast (Q1)');
subplot(133);
imshow(K);
title('Processed Image with Enhanced Contrast (Q2)');
解释:
-
clear all; close all;
:清空工作空间中的所有变量并关闭所有图形窗口。 -
I = imread('cameraman.tif');
:读取名为cameraman.tif
的图像,并赋值给I
。 -
I = im2double(I);
:将图像I
的数据类型转换为双精度浮点数,以便进行后续处理。 -
I = imnoise(I, 'salt & pepper', 0.01);
:在图像I
上添加椒盐噪声,噪声密度为0.01。 -
PSF = fspecial('average', 3);
:创建一个平均滤波器的点扩散函数(PSF),大小为3x3,用于模糊处理。 -
Q1 = 1.6; Q2 = -1.6;
:定义两个指数因子Q1
和Q2
,用于调整图像的对比度。 -
j1 = imfilter(I.^(Q1+1), PSF);
:对图像I
的每个像素值进行指数变换(Q1+1
次幂),然后应用平均滤波器。 -
j2 = imfilter(I.^Q1, PSF);
:对图像I
的每个像素值进行指数变换(Q1
次幂),然后应用平均滤波器。 -
J = j1 ./ j2;
:将两个滤波后的图像进行除法运算,以增强图像的对比度。 -
k1 = imfilter(I.^(Q2+1), PSF);
:对图像I
的每个像素值进行指数变换(Q2+1
次幂),然后应用平均滤波器。 -
k2 = imfilter(I.^Q2, PSF);
:对图像I
的每个像素值进行指数变换(Q2
次幂),然后应用平均滤波器。 -
K = k1 ./ k2;
:将两个滤波后的图像进行除法运算,以增强图像的对比度。 -
figure;
:创建一个新的图形窗口。 -
subplot(131); imshow(I);
:在第一个子图(1,3,1)中显示添加了椒盐噪声的原始图像I
。 -
subplot(132); imshow(J);
:在第二个子图(1,3,2)中显示使用Q1
增强对比度的图像J
。 -
subplot(133); imshow(K);
:在第三个子图(1,3,3)中显示使用Q2
增强对比度的图像K
。
拓展:
- 保存图像:可以将处理后的图像
J
和K
保存为文件。
% 保存处理后的图像
imwrite(uint8(J), 'cameraman_with_enhanced_contrast_q1.png');
imwrite(uint8(K), 'cameraman_with_enhanced_contrast_q2.png');
-
调整对比度参数:可以尝试使用不同的对比度参数
Q1
和Q2
,来观察对图像的影响。 -
应用不同的滤波器:可以尝试使用不同的滤波器,如高斯滤波器、中值滤波器等,来观察对图像的影响。
-
分析处理效果:可以进一步分析处理后的图像效果,比如通过计算图像的均值和方差。
-
比较不同处理方法的影响:可以比较不同图像处理方法对图像质量的影响,以评估不同方法的效果。