数字图像处理与通信实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一、图像的输入、输出和显示
一、实验目的:
熟悉由图像输入设备、图像处理设备及图像输出设备组成的数字图像处理系统。
熟悉MATLAB软件开发环境。
学习MATLAB 编程环境下对图像的输入输出操作、颜色分量的理解、格式转换操作以及对图像的像素级运算操作。
二、实验设备:
计算机、matlab 7.0软件
三、实验原理
利用MATLAB图像处理工具箱中的函数,在MATLAB编程环境下,1)实现对彩色图像的颜色分量的操作;2)实现将彩色图像转换为灰度图像;3)实现对灰度图像的象素级运算,改变指定象素的灰度级。
四、实验内容:
1.将自己在课前准备好的真彩色图像文件输入计算机,运行MATLAB集成开发环境。
2.在MATLAB编程环境下,读取和显示该真彩色图像,通过对其颜色分量进行操作而显示仅保留G颜色分量的图像,并存入另一个文件;
3.将该真彩色图像转换为灰度图像,并显示;
4.对灰度图像进行象素级运算,使位于101-200行,101-200列的矩形区域内的像素的灰度值减半,显示运算结果;
5.将以上4种图像在同一窗口显示。
程序编码:
clc
clear all
J=imread('fabric.png');
subplot(2,2,1);
imshow(J);
title('原始图像');
J(:,:,1)=0;
J(:,:,3)=0;
subplot(2,2,2);
imshow(J);
title('保留G颜色图像');
imwrite(J,'C:\MATLAB7\work\1.png');
B=rgb2gray(J);
subplot(2,2,3);
imshow(B);
title('灰度图像');
imwrite(B,'C:\MATLAB7\work\2.png');
for i=101:200
for j=101:200
B(i,j)=uint8(0.5*double(B(i,j)));
end
end
subplot(2,2,4);
imshow(B);
title('灰度值减半的图像');
imwrite(B,'C:\MATLAB7\work\3.png');
实验二、图像的直方图统计一、实验目的:
掌握直方图统计的算法原理和程序设计,了解各种图像的直方图统计的意义及其用途。
二、实验设备:
计算机、matlab 7.0软件
三、实验原理
灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。
直方图的作法如下:
a)将图像的灰度级归一化
若图像的灰度级为:
在灰度级中,代表黑,代表白。
对于一幅给定的图像来说,每一个像素取得[0,1]区间内的灰度级是随机的,也就是说是一个随机变量。
b)计算各灰度级的像素概率
c)作图
建立直角坐标系,横轴表示r
k 的取值,纵轴表示p
r
(r
k
)的
取值,作p
r (r
k
)的函数图。
四、实验内容:
实现对一幅灰度图像的像素的统计,并绘制直方图。
程序编码:
I=imread('C:\MATLAB7\work\2.png');
figure(1)
subplot(1,2,1)
imshow(I);
title('原图')
add=[];
tab1=zeros(1,256)
for n=0:255
X=I==n;
add=[add;sum(sum(X))];
end;
[a b]=size(I);
final=add/(a*b);
subplot(1,2,2);
bar(0:255,final,'g');
title('灰度级图象')
实验三、图像增强(一)
一、实验目的:
进一步熟悉MATLAB软件开发环境,通过MATLAB图像处理编程实现图像的灰度变换,学习和提高MATLAB图像处理编程能力。
二、实验设备:
计算机、matlab 7.0软件
三、实验原理
(1)线性扩展
灰度级变换函数s=T(r)可为
灰度级变换函数如图1所示。
图1.灰度级变换函数(2)非线性扩展
灰度级变换函数s=T(r)可为S=c log(1+r)(3)灰度倒置
灰度级变换函数s=T(r)可为s=255-r (4)二值化
确定一阈值r
1,0<r
1
<255。
r>r
1
的灰度值置白,r<r
1
的灰
度值置黑。
四、实验内容:
1.选择一幅图像,设置输入/输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9。
2.设置非线性扩展函数的参数c=2。
3.采用灰度倒置变换函数s=255-r进行图像变换。
4.设置二值化图像的阈值,分别为level=0.4,level=0.7.
I=imread('C:\MATLAB7\work\2.png');
figure(1);
subplot(1,3,1);
imshow(I);
title('原图');
J=imadjust(I,[0.3 0.6],[0.1 0.9]); subplot(1,3,2);
imshow(J);
title('线形扩展');
r1=double(I);
r2=r1/255;
c=2;
k=c*log(1+r2);
subplot(1,3,3);
imshow(k);
title('非线形扩展');
m=255-I;
figure(2);
subplot(1,3,1);
imshow(m);
title('灰度倒置');
n1=im2bw(I,0.4);
n2=im2bw(I,0.7);
subplot(1,3,2);
imshow(n1);
title('二值化阈值0.4'); subplot(1,3,3);
imshow(n2);
title('二值化阈值0.7');
实验四、图像增强(二)
一、实验目的:
通过MATLAB图像处理编程实现图像的灰度变换与直方图运算,实现图像的噪声平滑,进一步巩固和理解理论课相关内容。
二、实验设备:
计算机、matlab 7.0软件
三、实验原理
利用MATLAB图像处理工具箱中的函数,在MATLAB编程环境下,1)实现图像的灰度变换与直方图运算;2)实现图像的噪声平滑。
四、实验内容:
1.开启计算机,运行MATLAB集成开发环境。
2.读入一幅灰度图像,用MATLAB编程实现该灰度图像的直方图绘制,图像的灰度级调整,图像的直方图均衡化等;
3.用MATLAB编程实现对该灰度图像加入高斯噪声和椒盐噪声,在此基础上选用合适的滤波器对带噪图像进行噪声平滑滤波;
4.将步骤2中得到的4个图像在同一窗口显示,并打印结果;5.将步骤3中得到的4个图像在同一窗口显示,并打印结果;I=imread('C:\MATLAB7\work\2.png');
subplot(2,2,1);
imshow(I);
title('灰度图象');
subplot(2,2,2);
imhist(I);
title('灰度图象直方图');
B=imadjust(I,[0.3 0.7],[0.1 1.0]); subplot(2,2,3);
imshow(B);
title('灰度级调整');
J=histeq(I);
subplot(2,2,4);
imshow(J);
title('直方图均衡化处理');
m=imread('C:\MATLAB7\work\2.png'); n=imnoise(m,'gaussian');
subplot(2,2,1);
imshow(n);
title('高斯噪声');
c=imnoise(m,'salt & pepper');
subplot(2,2,2);
imshow(c);
title('椒盐噪声');
h=fspecial('average');
k=imfilter(n,h);
subplot(2,2,3);
imshow(k);
title('均值滤波');
l=medfilt2(c);
subplot(2,2,4);
imshow(l);
title('中值滤波');。