数字图像处理实验报告--直方图规定化

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数字图像处理实验报告实验名称:直方图规定化姓名:班级:学号:专业:电子信息工程(2+2)指导教师:陈华华实验日期:2012年5月24日直方图匹配(规定化)直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。这时可以采用比较灵活的直方图规定化。一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑N≤M的情况):(1)如同均衡化方法中,对原始图的直方图进行灰度均衡化:(2)规定需要的直方图,并计算能使规定的直方图均衡化的变换:(3)将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。一、A图直方图规定B图Matlab程序:%直方图规定化clearallA=imread('C:\Users\hp\Desktop\A.tif');%读入A图像imshow(A)%显示出来title('输入的A图像')%绘制直方图[m,n]=size(A);%测量图像尺寸B=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255B(k+1)=length(find(A==k))/(m*n);%计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g');%绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])C=imread('C:\Users\hp\Desktop\B.tif');%读入B图像imshow(C)%显示出来title('输入的B图像')%绘制直方图[m,n]=size(C);%测量图像尺寸D=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255D(k+1)=length(find(C==k))/(m*n);%计算每级灰度出现的概率,将其存入D中相应位置endfigure,bar(0:255,D,'g');%绘制直方图title('B图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);fori=1:256forj=1:iS1(i)=D(j)+S1(i);%计算B灰度图累计直方图endendcounts=Bfigure,bar(0:255,counts,'r')title('A图像直方图')S2=zeros(1,256);fori=1:256forj=1:iS2(i)=counts(j)+S2(i);endend;%累计规定化直方图%对比直方图,找到相差最小的灰度级fori=1:256forj=1:255ifS1(j)=S2(i)&S1(j+1)=S2(i)ifabs(S1(j)-S2(i))=abs(S1(j+1)-S2(i))T(i)=j;elseT(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);fori=2:255ifT(i-1)0fork=(T(i-1)+1):T(i)H(i)=H(i)+D(k);endelseH(i)=0;endendfigure,bar(0:255,H,'g')%显示规定化后的直方图title('A规定B后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=C;%将各个像素归一化后的灰度值赋给这个像素fori=1:mforj=1:nfork=2:255ifT(k-1)=C(i,j)&C(i,j)=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA)%显示规定化后的图像title('A规定B后图像')imwrite(PA,'guidinghua.bmp');二、用已知直方图规定A图规定灰度为[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1]Matlab程序:clearallA=imread('C:\Users\hp\Desktop\B.tif');%读入A图像imshow(A)%显示出来title('输入的A图像')%绘制直方图[m,n]=size(A);%测量图像尺寸B=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255B(k+1)=length(find(A==k))/(m*n);%计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g');%绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);fori=1:256forj=1:iS1(i)=B(j)+S1(i);%计算原灰度图累计直方图endendcounts=[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1];%规定化直方图figure,bar(1:300,counts,'r')title('规定化直方图')S2=zeros(1,256);fori=1:256forj=1:iS2(i)=counts(j)+S2(i);endend;%累计规定化直方图%对比直方图,找到相差最小的灰度级fori=1:256forj=1:256ifS1(j)=S2(i)&S1(j+1)=S2(i)ifabs(S1(j)-S2(i))=abs(S1(j+1)-S2(i))T(i)=j;elseT(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);fori=2:256ifT(i-1)0fork=(T(i-1)+1):T(i)H(i)=H(i)+B(k);endelseH(i)=0;endendfigure,bar(0:255,H,'g')%显示规定化后的直方图title('规定化后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=A;%将各个像素归一化后的灰度值赋给这个像素fori=1:mforj=1:nfork=2:256ifT(k-1)=A(i,j)&A(i,j)=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA)%显示规定化后的图像title('规定化后图像')imwrite(PA,'guidinghua.bmp');

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功