实验2图像增强

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

实验二图像增强

实验目的:

1.熟悉亮度变换函数imadjust的原理和使用;

2.理解直方图均衡化的基本原理,熟练掌握直方图显示函数

imhist、均衡化和规定化函数histeq;

3.熟悉平滑滤波原理及实现;

4.练习自己写函数。

实验内容:

1、编写一个m文件,完成以下功能:

输入参数:文件名

处理:(1)计算图像灰度的最大、最小值和平均值。

(2)将图像做反色变换,并画出变换函数的映射图;

输出:将每次处理的结果显示出来

自编m文件:

a=input('请输入图像文件名:');

figure

b=importdata(a);

imshow(b);

if isrgb(b)

b=rgb2gray(b);

end

figure(2)

imhist(b);

max=max(max(b))

min=min(min(b))

ave=mean2(b)

%c=255-b;

c=imadjust(b,[0 1],[1 0]); figure(3)

imshow(c);

figure;

imhist(c);

figure;

plot(b,c);

max =

58

min =

ave = 31.7112

2、分析图片chest.tif的特点和显示效果不好的原因,然后用

imadjust函数对图片chest.tif进行线性灰度变换,将其扩展到[0—255]的灰度空间,看看效果如何,并分析其直方图。试着自己编写m文件im2adjust,实现读入一个图片以后自动将其灰

度空间扩展到[0-255]。

输入:图片信息矩阵

输出:将输入图片的灰度范围扩展到【0-255】的结果矩阵

图片chest.tif的特点和显示效果不好的原因:对比度低,灰度值集中在0到60之间,其他区域则没有灰度值,致使图偏暗;

im=imread('chest.tif');

figure,imshow(im);

figure,imhist(im);

m=imadjust(im,[0 0.8],[0 1],0.65);

figure,imshow(m);

figure,imhist(m);

m=imadjust(im,[0 0.24],[0 1],1);

自编m文件:

function [a]=im2adjust(f)

[m,n]=size(f);

a=zeros(m,n);

max=f(1,1);

for i=1:m

for j=1:n

if f(i,j)>max

max=f(i,j);

end

end

end

min=f(1,1);

for i=1:m

for j=1:n

if f(i,j)

min=f(i,j)

end

end

end

for i=1:m

for j=1:n

a(i,j)=((255-0)/(max-min))*f(i,j);

end

end

a=uint8(a);

figure;imshow(a);

figure;imhist(a);

运行结果:im=imread('chest.tif');

>> im2adjust(im);

3、分别用不同的方式显示图片pollen和moon的直方图,并对其

进行均衡化。将得到的结果图片和原图片比较,效果如何?为什么对不同的图片进行均衡化会有如此差别?

a=imread('pollen.tif');

figure;

b=histeq(a);

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

subplot(2,2,2);imhist(a);

subplot(2,2,3);imshow(b);

subplot(2,2,4);imhist(b);

c=imread('moon.tif');

figure;

d=histeq(c);

subplot(2,2,1);subimage(c);

subplot(2,2,2);imhist(c);

subplot(2,2,3);imshow(d);

subplot(2,2,4);imhist(d);

均衡化之后,第一幅图对比度增强,图像的细节更加清楚;第二幅图因为原图像大量接近于0的灰度值映射到高灰度值的区域,所以过于明亮,外观被冲淡,处理效果不佳。

4、自己写一个m文件,完成histeq2函数的功能,输入为图片和

进行均衡化的低值和高值,如(f,min,max),输出为均衡化后的

图片。(注意:系统函数histeq是对0-255的范围进行均衡化,我要求是min,max间的灰度值进行均衡化)

自编m文件:

function [g]=histeq2(f,min,max)

[n,m]=size(f);

g=zeros(size(f));

f=double(f);

r=zeros(1,256);

y=zeros(1,256);

for i=1:n

for j=1:m

if f(i,j)>=min && f(i,j)<=max

r(f(i,j)+1)=r(f(i,j)+1)+1; %计算灰度值的个数end

end

end

r=r./(n*m); %计算各个灰度值占得比例

for k=1:256

for j=1:k

y(k)=y(k)+r(j);

相关文档
最新文档