数字图像处理学实验报告

更新时间:2023-07-21 00:22:02 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

实验一

实验二

实验三

实验四

实验五

数字图像读取及色彩、亮度对比度变化 3 数字图像空间域增强 7 数字图像的噪声去除 9 频率域低通和高通滤波 11 数字图像复原 17

南昌大学实验报告

姓名: 学 号: 专业班级: 实验类型:□ 验证 □ 综合 ▇ 设计 □ 创新 实验日期:

实验一 数字图像读取及色彩、亮度对比度变化

一.实验目的

了解数字图像的存储格式,并学会对图像的某些视觉特征作简单处理。

二.实验要求

1.从最常用的“.BMP”图像格式中读取图像数据;

2.对数字图像的表示方式(如RGB、YUV)及各种表示方式之间的转换有初步了解;

3.根据输入参数改变数字图像的色彩、亮度、对比度。

三.实验环境

操作系统:Windows XP

实验平台:Matlab

四.实验内容

1. 利用工具(如ACDSee、PhotoShop)将Sample1-1.jpg转换为Sample1-1.bmp;

2. 将BMP图像内容读入内存数组;

3. 通过访问数字图像RGB三个通道的对应矩阵,改变数字图像的色彩;

4. 将数字图像的RGB表示转换为YUV表示;

Y=0.30R+0.59G+0.11B

U=0.70R-0.59G-0.11B

V=-0.30R-0.59G+0.89B

5. 通过访问Y(亮度)通道,改变数字图像的亮度;

实验图像:

五.实验处理和结果

1. 读入图像,分离RGB三个通道,结果如下:

代码如下:

读入图像并分离RGB,显示;

src = imread('sample1-1.bmp');

[r c d] = size(src);

R = src;

G = src;

B = src;

R(:,:,2) = zeros(r,c);

R(:,:,3) = zeros(r,c);

G(:,:,1) = zeros(r,c);

G(:,:,3) = zeros(r,c);

B(:,:,1) = zeros(r,c);

B(:,:,2) = zeros(r,c);

subplot(1,3,1);

imshow(R); title('R分量');

subplot(1,3,2);

imshow(G); title('G分量');

subplot(1,3,3);

imshow(B); title('B分量');

2、修改RGB值(反色),改变图像的色彩,结果如下:

代码如下:

修改RGB的值(这时采用了反色),改变图像的色彩;

R(:,:,1) = 255 - R(:,:,1); % 为了进行后面的实验,请注释此行

G(:,:,2) = 255 - G(:,:,2); % 为了进行后面的实验,请注释此行

B(:,:,3) = 255 - B(:,:,3); % 为了进行后面的实验,请注释此行

subplot(2,3,1);

imshow(R); title('R分量反色');

subplot(2,3,2);

imshow(G); title('G分量反色');

subplot(2,3,3);

imshow(B); title('B分量反色');

subplot(2,3,4);

imshow(src); title('原图');

subplot(2,3,6);

imshow(R+G+B); title('反色');

3.将RGB转为YUV,结果如下:

代码如下:

R = double(R(:,:,1));

G = double(G(:,:,2));

B = double(B(:,:,3));

Y = 0.299*R + 0.587*G + 0.114*B;

U = -0.147*R - 0.289*G + 0.436*B;

V = 0.615*R - 0.515*G - 0.100*B;

subplot(2,3,1);

imshow(uint8(Y)); title('Y分量');

subplot(2,3,2);

imshow(uint8(U)); title('U分量');

subplot(2,3,3);

imshow(uint8(V)); title('V分量');

4.修改Y分量(这里除以1.5),重新由YUV转为RGB,结果如下:

代码如下:

Y = Y/1.5;

R = Y + 1.140*V;

G = Y - 0.395*U - 0.581*V;

B = Y + 2.032*U;

rgb(:,:,1) = uint8(R(:,:));

rgb(:,:,2) = uint8(G(:,:));

rgb(:,:,3) = uint8(B(:,:));

subplot(2,3,4);

imshow(rgb); title('修改亮度');

六.小结

通过本次实验,掌握了基本的图像颜色空间变换,及简单的图像修改。

南昌大学实验报告

姓名: 学 号: 专业班级: 实验类型:□ 验证 □ 综合 ▇ 设计 □ 创新 实验日期:

实验二 数字图像空间域增强

一.实验目的

了解数字图像的灰度变换和 (0.4,0.6,0.8)校正。

二.实验要求

1. 了解图像的灰度变换。

2. 对图像进行 校正。

三.实验环境

操作系统:Windows XP

实验平台:Matlab

四.实验内容

1. 利用工具(如ACDSee、PhotoShop)将图像sample2-1.jpg转换为sample2-1.bmp

2. 将BMP图像内容读入内存数组。

3. 对图像进行校正 较正,分别取值为0.4,0.6,0.8.

4. 调整图像的灰度。

实验图像:

五.实验处理和结果

1、对源图像进行标准化,使像素的RGB值的范围为0到1

代码如下:

src = imread('sample2-1.bmp');

src = double(src);

src = src / 256.0;

2、对源图像的各像素,采用不同的珈玛值进行校正,并显示比较,结果如下

代码如下:

gamma0p4 = uint8(src.^(1/0.4).*256.0);

gamma0p6 = uint8(src.^(1/0.6).*256.0);

gamma0p8 = uint8(src.^(1/0.8).*256.0);

subplot(2,2,1);

imshow(src); title('源图像');

subplot(2,2,2);

imshow(gamma0p4); title('0.4');

subplot(2,2,3);

Imshow(gamma0p4); title('0.6');

subplot(2,2,4);

imshow(gamma0p4); title('0.8');

六.小结

通过本次实验,掌握了珈玛校正的原理及操作方法。

南昌大学实验报告

姓名: 学 号: 专业班级: 实验类型:□ 验证 □ 综合 ▇ 设计 □ 创新 实验日期:

实验三 数字图像的噪声去除

一.实验目的

学会用滤波器去除图像中的噪声。

二. 实验要求

1.用均值滤波器去除图像中的噪声;

2.用中值滤波器去除图像中的噪声;

3.比较两种方法的处理结果

三.实验环境

操作系统:Windows XP

实验平台:Matlab

四.实验内容

1. 将BMP图像内容读入内存数组;

2. 用均值滤波器去除图像中的噪声;

3. 用中值滤波器去除图像中的噪声;

4. 将两种处理方法的结果与原图比较;注意两种处理方法对边缘的影响。 实验图像:

五.实验处理和结果

1、对源图像进行3*3的均值滤波,结果如下:

代码如下:

src = imread('sample3-2.bmp');

[r,c] = size(src);

output = src;

n = 3; k = (n-1)/2;

for row = 1+k:r-k

for column = 1+k:c-k

m = src(row-k:row+k,column-k:column+k);

temp = sum(sum(m,1),2)*(1/n/n);

output(row, column) = uint8(temp);

end

end

imshow(output);

在本代码中,边缘并没有被处理,而是直接采用源图像的对应值。

2、对源图像进行3*3的中值滤波,结果如下:

代码如下:

src = imread('sample3-2.bmp');

[r,c] = size(src);

output = src;

n = 3;

k = (n-1)/2;

for row = 1+k:r-k

for column = 1+k:c-k

m = src(row-k:row+k,column-k:column+k);

v = m(1:end);

v = sort(v);

output(row, column) = v((n*n-1)/2+1);

end

end

imshow(output);

在本代码中,边缘并没有被处理,而是直接采用源图像的对应值。

3、比较:

从结果图像中看出,滤波后的图像比之前的图像模糊,但是可以基本滤去噪声。而从直观上比较两种滤波,均值滤波的结果比中值滤波的结果亮一点。

六.小结

通过本次实验,掌握了简单的滤波器原理及过滤方法。

南昌大学实验报告

姓名: 学 号: 专业班级: 实验类型:□ 验证 □ 综合 ▇ 设计 □ 创新 实验日期:

实验四 频率域低通和高通滤波

一.实验目的

学会两种简单的频域低通和高通滤波方法。

二. 实验要求

1. 使用布特沃斯和高斯滤波器进行低通滤波;

2.使用布特沃斯和高斯滤波器进行高通滤波。

三.实验环境

操作系统:Windows XP

实验平台:Matlab

四.实验内容

1、用布特沃思低通滤波器对图像进行低通滤波;

2、用高斯低通滤波器对图像进行低通滤波;

3、用布特沃思高通滤波器对图像进行高通滤波;

4、用高斯高通滤波器对图像进行高能滤波;

实验图像:

五.实验处理和结果

1、对源图像进行进行空间域到频域的变换,结果如下:

代码如下:

src = imread('sample4-2.bmp');

[r,c] = size(src);

f = fftshift(fft2(double(src)));

mx = max(max(f,[],1),[],2);

imf = abs(f)/mx*25600;

imshow(uint8(imf));

2、进行频域的高斯低通滤波,结果如下:(取D0为10,20,40,80)

代码如下:

D0 = [20,50,80,120];

D = f;

H = D;

for row = 1:r

for column = 1:c

D(row,column) = sqrt((row-r/2)^2+(column-c/2)^2);

end

end

for type = 1:length(D0)

H = exp(D.^2/(2*D0(type)^2)*(-1));

f2 = f.*H;

f2 = ifft2(ifftshift(f2));

subplot(2,2,type);

imshow(uint8(real(f2)));

title(D0(type));

end

从结果可知,D0越小,结果越模糊,去噪效果越好;D0越大,则相反。

3、进行频域的高斯高通滤波,结果如下:(取D0为10,20,40,80)

代码如下:

D0 = [10,20,40,80];

n = 2;

D = f;

H = D;

for row = 1:r

for column = 1:c

D(row,column) = sqrt((row-r/2)^2+(column-c/2)^2);

end

end

for type = 1:length(D0)

H = 1 - exp(D.^2/(2*D0(type)^2)*(-1));

f2 = f.*H;

f2 = ifft2(ifftshift(f2));

subplot(2,2,type);

imshow(uint8(real(f2)));

title(D0(type));

end

4、进行频域的布特沃斯低通滤波,结果如下:(取D0为10,20,40,80,n为2)

代码如下:

D0 = [10,20,40,80];

n = 2;

D = f;

H = D;

for row = 1:r

for column = 1:c

D(row,column) = sqrt((row-r/2)^2+(column-c/2)^2);

end

end

for type = 1:length(D0)

H = 1./(1+(D/D0(type)).^(2*n));

f2 = f.*H;

f2 = ifft2(ifftshift(f2));

subplot(2,2,type);

imshow(uint8(real(f2)));

title(D0(type));

end

5、进行频域的布特沃斯高通滤波,结果如下:(取D0为10,20,40,80,n为2)

代码如下:

D0 = [10,20,40,80];

n = 2;

D = f;

H = D;

for row = 1:r

for column = 1:c

D(row,column) = sqrt((row-r/2)^2+(column-c/2)^2);

end

end

for type = 1:length(D0)

H = 1 - 1./(1+(D/D0(type)).^(2*n));

f2 = f.*H;

f2 = ifft2(ifftshift(f2));

subplot(2,2,type);

imshow(uint8(real(f2)));

title(D0(type));

end

六.小结

通过本次实验,掌握了频域滤波的基本原理及高斯/布特沃斯高低通滤波。

南昌大学实验报告

姓名: 学 号: 专业班级: 实验类型:□ 验证 □ 综合 ▇ 设计 □ 创新 实验日期:

实验五 数字图像复原

一.实验目的

了解Fourier变换、反变换的算法实现,掌握频域逆滤波和维纳滤波图像复原的方法。

二.实验要求

1.用Fourier变换算法对图像作二维Fourier变换。

2.用Fourier反变换算法对图像作二维Fourier反变换。

3.频域逆滤波和维纳滤波图像复原。

三.实验环境

操作系统:Windows XP

实验平台:Matlab

四.实验内容

1.将BMP格式图像内容读入内存数组;

2.用快速Fourier变换算法,对图像作二维FFT变换得到G(u,v);

(考虑图像为256*256,可以采用快速Fourier变换方法)

3.进行频域逆滤波和维纳滤波;

4.进行Fourier反变换得到g(x,y);

实验图像:

五.实验处理和结果

1、进行逆滤波的操作,这里的H(u, v)是自定义的,结果如下:

代码如下:

src = imread('sample5-1.jpg');

src = rgb2gray(src);

[r, c] = size(src);

H = zeros(r, c);

k = 0.00001;

for row = 1:r

for column = 1:c

H(row, column) = exp(-k*(( row-r/2)^2+( column -c/2)^2)^(5/6));

end

end

f = fftshift(fft2(double(src)));

f = f./H;

f = ifft2(ifftshift(f));

f = uint8(real(f));

imshow(f);

由于给出了源图片,所以这里H(u, v)也可以由后面的图像的频域值除以源图片的频域值得出。

2、进行维纳滤波的操作,这里的H(u, v)是自定义的,结果如下:

代码如下:

src = imread('sample5-1.jpg');

src = rgb2gray(src);

[r, c] = size(src);

H = zeros(r, c);

k = 0.0001;

for row = 1:r

for column = 1:c

H(row,column) = exp(-k*((row-r/2)^2+(column-c/2)^2)^(5/6)); end

end

spectrum = H.^2;

f = fftshift(fft2(double(src)));

HW = H./(spectrum + 0.0001);

f = f.*(HW);

f = ifft2(ifftshift(f));

f = uint8(real(f));

imshow(f);

六.小结

通过这次实验,掌握了图像恢复的基本原理和简单的手法。

本文来源:https://www.bwwdw.com/article/niu1.html

Top