实验三灰度变换与直方图处理一、实验目的1、理解图像直方图的含义;2、掌握MATLAB中灰度转换和直方图处理相关函数;3、了解直方图均衡化的实现方法。二、实验步骤及内容1、灰度转换灰度变换是图像增强技术中最简单的一类。常用的三类基本函数:线性函数、对数函数、幂次函数。(1)图像反转:对教材中61页的图像Fig3.04(a)的图像进行反转变换Image=imread('Fig3.04(a).jpg');imshow(Image);Image=255-double(Image);%反转figure(2),imshow(uint8(Image));11电子韦志东62页的图像Fig3.05(a)进行对数变换(2)对数变换:对教材中closeallImage=imread('Fig3.05(a).jpg');imshow(Image);Image=log(1+double(Image));%对数变换figure(2),imshow(Image,[]);图像Fig3.09(a)进行幂次变换)幂次变换:对教材中(366页的closeallImage=imread('Fig3.09(a).jpg');imshow(Image);Image2=double(Image).^3.0;%γ=3figure(2),imshow(Image2,[]);Image2=double(Image).^4.0;figure(3),imshow(Image2,[]);Image2=double(Image).^5.0;figure(4),imshow(Image2,[]);、灰度直方图的显示imhist2imhist是MATLAB提供的显示图像灰度直方图的函数。(1)显示图像cameraman.tif的直方图。closeallx=imread('cameraman.tif');figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)(2)还可以将直方图显示成其他形式,比如柱形图(续一)或者折线图(续二)。(续一):h=imhist(x);h1=h(1:10:256);horz=1:10:256;bar(horz,h1)axis([0255015000])set(gca,'xtick',0:50:255)set(gca,'ytick',0:2000:15000)(续二):h=imhist(x);plot(h)axis([0255015000])set(gca,'xtick',0:50:255)set(gca,'ytick',0:2000:15000)思考题1:显示教材中71页,暗、亮、低对比度和高对比度图以及它们对应的直方图,即显示实验文件夹中Fig3.15(a)1.jpg~Fig3.15(a)4.jpg各图的直方图,观察其直方图的分布情况,进一步了解直方图的含义。图2-1暗、亮、低对比度和高对比度图(1)closeallx=imread(‘Fig3.15(a)1.jpg');figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)(2)closeallx=imread('Fig3.15(a)2.jpg');figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)(3)closeallx=imread('Fig3.15(a)3.jpg');figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)(4)closeallx=imread('Fig3.15(a)4.jpg');figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)3、图像的强度调整函数imadjust(1)imadjust是MATLAB提供的图像强度调整函数。利用它也可以实现图像反转。closeallI=imread('Fig3.04(a).jpg');imshow(I,[]);JJ=imadjust(I,[01],[10]);figure(2),imshow(JJ,[])(2)使用imadjust函数对cameraman.tif图像进行灰度压缩closeallx=imread('cameraman.tif');figuresubplot(2,2,1),imshow(x)subplot(2,2,2),imhist(x)subplot(2,2,3)y=imadjust(x,[],[0.40.6]);%imadjust函数进行灰度压缩imshow(y)imhist(y)subplot(2,2,4),2:思考题用函数的使用方法,把实验文件夹中的lena_adjust.bmp查看imadjust的结果,写出命令。2-2imadjust进行灰度范围拉伸,得出类似图图像lenaimadjust2-2图调整closeallx=imread('lena_adjust.bmp');figuresubplot(2,2,1),imshow(x)subplot(2,2,2),imhist(x)subplot(2,2,3)y=imadjust(x,[0.40.542],[]);imshow(y)subplot(2,2,4),imhist(y)(注解:>>max(x(:))ans=138>>min(x(:))ans=102>>102/255ans=0.4000>>138/255ans=0.5412)histeq、直方图均衡化3.直方图均衡化是图像增强的一个重要方法,人们已经提出了很多直方图均衡化和规定化的算法,其中基于累积分布函数的算法最为经典。histeq命令就是基于这种经典的算法。对教材中75页的图像Fig3.15(a)1.jpg的进行直方图均衡化处理。closeallImage=imread('Fig3.15(a)1.jpg');Out_Image=histeq(Image);figuresubplot(1,2,1),imshow(Image)subplot(1,2,2),imhist(Image)figuresubplot(1,2,1),imshow(Out_Image)subplot(1,2,2),imhist(Out_Image)思考题3:编写m程序,显示图像的直方图,并与imhist()函数结果做比较。(提示:对图像I的灰度值进行统计,myhist(I(i,j)+1)=myhist(I(i,j)+1)+1;图像灰度值I(i,j)的范围是【0255】,matlab中数组下标是从1开始的。用)来显示统计结果。plot(myhist).closeallP=imread('Fig3.04(a).jpg');y=zeros(1,256);[mn]=size(P)fori=1:mforj=1:ny(double(P(i,j))+1)=y(double(P(i,j))+1)+1;endendfiguresubplot(1,2,1),plot(y)subplot(1,2,2),imhist(P)三、实验报告及要求1、按照上述实验步骤把实验结果截图(所有的实验图像标上自己的学号姓名)。2、回答思考题,写出实现的命令及实验结果截图,分析结果附上文字说明。3、使用word文档写报告,交电子文档;