数字图像处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二○一八~二○一九学年第一学期信息科学与工程学院课程设计报告书
课程名称:数字图像处理
班级:
学号:
姓名:
指导教师:
二○一八年十二月
一、课程设计目的:
1. 掌握读、写、显示图像的基本方法。
2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。
3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。
二、课程设计内容及要求:
1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。
2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。
3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。
三、详细设计步骤:
1、所使用的图像文件都保存在Matlab 安装目\toolbox\images\imdemos
子目录下。
2、图像的读、写、显示操作。运用Matlab 图像处理工具箱中的imread
函数分别读入灰度图像pout.tif、二值图像blobs.png 和RGB 图像
peppers.png,观察相应的图像矩阵,并运用imshow 函数显示相应图像。
3、对一个RGB 彩色图像peppers.png,分别抽取其R、G、B 三个分
量层,并显示各层图像。
1、以灰度图像pout.tif 为例,运用灰度变换法实现图像增强。
2、运用Matlab 编程实现灰度直方图的统计以及直方图均衡化处理过程:
(1)计算并绘制原始图像的灰度直方图;
(2)根据离散累计分布函数,对原始灰度直方图进行均衡化处理,
绘制均衡化后的灰度直方图;
(3)生成均衡化处理后的新图像,显示并保存。
(4)比较原始图像和新图像的对比度。
(1)利用Matlab 函数IMNOISE(),在原图上分别叠加高斯噪声和椒
盐噪声
(2)实现均值滤波和中值滤波的功能,去除噪声;
(3)调整窗口大小,采用对比均值滤波中值滤波的性能;
1、以灰度图像rice.png 为例,实现Roberts 算子、Sobel 算子、Prewitt算子对其进行边缘检测,并实现根据梯度生成 5 种不同的增强图像。
2、若向原始图像rice.png 中加入高斯噪声,利用(1)中的函数,对噪声图像分别运用Roberts 算子、Sobel 算子、Prewitt 算子进行边缘检测,观察检测结果,试比较3 种边缘检测算子的抗噪声干扰能力。
四、程序代码及图形:
实验一
实验内容1
i=imread('C:\Program
Files\MATLAB\R2014a\toolbox\images\imdata\pout.tif');
imshow(i);
a=imread('C:\Program
Files\MATLAB\R2014a\toolbox\images\imdata\pears.png');
k=imread('C:\Program
Files\MATLAB\R2014a\toolbox\images\imdata\blobs.png');
r=a(:,:,1);
g=a(:,:,2);
b=a(:,:,3);
figure;imshow(a);
figure;imshow(r);
figure;imshow(g);
figure;imshow(b);
figure;imshow(k);
******************************************************************************* 实验内容2
灰度图均衡化
I=imread('C:\Program
Files\MATLAB\R2014a\toolbox\images\imdata\pout.tif');
J=im2double(I);
[R, C] = size(I);
cnt = zeros(1, 256);
for i = 1 : R
for j = 1 : C
cnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1;
end
end
f = zeros(1, 256);
f = double(f); cnt = double(cnt);
for i = 1 : 256
f(1, i) = cnt(1, i) / (R * C);
end
for i = 2 : 256
f(1, i) = f(1, i - 1) + f(1, i);
end
for i = 1 : 256
f(1, i) = f(1, i) * 255;
end
I = double(I);
for i = 1 : R
for j = 1 : C
I(i, j) = f(1, I(i, j) + 1);
end
end
I = uint8(I);
figure(1)
subplot(121)
imhist(J);
title('灰度直方图');
subplot(122)
imhist(I);
title('均衡化后的灰度直方图');
figure(2)
subplot(121)