数字图像(图像增强)实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验:图像增强

1.实验目的

(1)熟悉并学会使用MATLAB中图像增强的相关函数

(2)了解图像增强的办法、去噪的方法和效果。

2.实验主要仪器设备

(1)微型计算机:Intel Pentium及更高。

(2)MATLAB软件(含图像处理工具箱)。

(3)典型的灰度、彩色图像文件。

3.实验原理

(1)将一副图像视为一个二维矩阵,用MATLAB进行图像增强。

(2)利用MATLAB图像处理工具箱中的函数imread(读)、imshow(显示)、imnoise(加噪)、filter(滤波)对图像进行去噪处理。

(3)图像灰度修正:灰度变换。对不满意的图像通过线性或非线性灰度映射关系进行变换,其效果可以得到明显提高。通过分析,会发现变换前后图像的直方图也发生相应的变化。

(4)图像平滑方法:领域平均、中值滤波。分析图像降质的性质,区分平稳性还是非平稳型、加性还是乘性等,采用合适的去噪方法,可以去除或降低噪声对图像的影响。从频率域看,平均操作在降低噪声的同时衰减了图像的高频分量,会影响图像细节的重现。中值滤波对某些信号具有不变形,适用于消除图像中的突发干扰,但如果图像含有丰富的细节,则不宜使用。(5)图像锐化方法:人眼对目标的边缘和轮廓较为敏感,对图像进行锐化,有助于突出图像的这些特征。从频率域看,锐化提升了图像的高频分量。4.实验容

(1)图像灰度修正。

(2)图像平滑方法。

(3)图像锐化方法。

5.实验步骤

(1)图像灰度修正。读入一幅灰度级分布不协调的图像,分析其直方图。根据直方图,设计灰度变换表达式,或调用imadjuct函数。调整变换表达式的参数,直到显示图像的灰度级分布均衡为正。

(2)图像平滑方法。对有噪声图像或人为加入噪声的图像进行平滑处理。根据噪声的类型,选择不同的去噪方法,如领域平均、中值滤波等方法,调用filter2、medfilt2函数,选择不同的滤波模板和参数,观测和分析各种去噪方法对不同噪声图像处理的去噪或降噪效果。

(3)图像锐化方法。读入一幅边缘模糊地图像,利用罗伯茨梯度对图像进行4种蜕化处理,比较各自效果。

1.图像灰度修正

img = imread('d:\001.bmp'); figure();imshow(img);

I = double(img);

val=max(max(I));

a=log2(val);

b=round(a);

max_gray=2^b;

[H, W]=size(I);

J = zeros(H, W);

for i = 1 : H for j = 1 : W

J(i,j)=max_gray-1-I(i,j);

end % endfor j

end % endfor i

img2 = uint8(J);

subplot(1,2,1),imshow(img);title('原图');

subplot(1,2,2),imshow(img2);title('变换后');

imwrite(img2,'d:\2.bmp');

实验截图:

2.1程序代码:

img = imread('d:\LENA_8G_4bit.bmp');

figure();imshow(img);

subplot(2,1,1);imshow(img);

subplot(2,1,2);imshow(img);

I = double(img);%matlab 不支持uint8类型数据的矩阵运算,因此首先要将图像数据转换为double类型,计算后再转换为uint8类型

[H, W]=size(I);

J = zeros(H, W);

for i = 1 : H

for j = 1 : W

J(i,j) =255.0/15.0*I(i,j);

end;% endfor j

end; % endfor i

img2 = uint8(J);

subplot(1,2,1),imshow(img,[]);title('原图');

subplot(1,2,2),imshow(img2);title('变换后');

imwrite(img2,'d:\LENA_255G .bmp');

实验截图:

2.2程序代码:

img = imread('d:\LENA_255G .bmp');

figure();imshow(img);

subplot(2,1,1);imshow(img);

subplot(2,1,2);imshow(img);

I = double(img);%matlab 不支持uint8类型数据的矩阵运算,因此首先要将图像数据转换为double类型,计算后再转换为uint8

[H, W]=size(I);

J = zeros(H, W);

for i = 1 : H

for j = 1 : W

if I(i,j)<30

J(i,j)=I(i,j);

elseif I(i,j)<150

J(i,j) = 170.0/120.0*(I(i,j)-30)+30; else

J(i,j)= 55.0/105.0*(I(i,j)-150)+200; end;

end ;% endfor j

end; % endfor i

img2 = uint8(J);

subplot(1,2,1),imshow(img,[]);title('原图');

subplot(1,2,2),imshow(img2,[]);title('变换后'); imwrite(img2,'d:\L.bmp');

实验截图:

3.1程序代码:

img=imread('d:\GIRL_8G.bmp');

I = double(img);

[H, W]=size(I);

max_gray=max(max(I));

L=ceil(log2(max_gray));

gray=2^L-1;

x=0:gray;

y=zeros(1,gray+1); for i=1:H

for j=1:W y(img(i,j)+1)=y(img(i,j)+1)+1;

end;

end;

y1=y/(H*W);

相关文档
最新文档