资源描述:
《计算图像间互信息的报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、西北工业大学自动化学院信息工程专业信息论实验报告计算图像间的互信息090307022007302171马志强2009/10/20摘要:基于Matlab程序,计算出图像的熵和两幅差异不大的图像之间的互信息,从而加深对互信息和熵值的理解.关键字:Matlab工程应用,信息熵与互信息.一.实验目的:利用Matlab计算两幅差异不大的图片熵值和互信息的值,并通过对图片差异较大区域进行裁剪,增多两个图片相同的区域,从而使得两图片的互信息的值增加,重发以上的操作多次,达到可获得的互信息的最大值,将获得的两个图片进行比较,验证互信息是否会根据图片拥有更多的相似区域而有所增大。二.实验步骤:
2、1.获取图片:由于rgb图像的像素范围过大,所以实验所用的图片采用像素范围只有0—255的gray图像(灰度图像);可以通过对同一张彩色图片进行灰度处理,也可以直接通过摄像设备获取灰度图像,拍照时应该注意尽量保持两张图片的差异尽可能的小,原因在于人为的摄像中存在不可避免的误差,从而导致最后的结果中的互信息值过于小,即使通过剪裁等手段也无法有效提高互信息的值;将选择好的图片进行剪裁,如果是直接拍摄的两张图片,可以略过此步骤,方法是只减少图片中的极少部分的像素,而且更改的像素希望是条状,然后保存两张图片,供实验中使用。2.上机操作:将事先准备好的程序输入到Matlab中,利用Ma
3、tlab的图片处理及转换功能,计算出图像的熵值和两个图像的互信息值,进行比较,以下附图及部分程序:3.记录数据以上程序运行出的结果分列如下:本部分程序用于计算出下面的图片的熵值a=imread('1.jpg');img=rgb2gray(a);b=imread('2.jpg');[M,N]=size(img);temp=zeros(M,N);figure,imshow(img);%Tocalculatethestatisticalcharacterofimage¡¯sgraylevel,whichmeanstocalculatethenumberofeachgrayform=
4、1:M;forn=1:N;ifimg(m,n)==0;i=1;elsei=img(m,n);endtemp(i)=temp(i)+1;endendtemp=temp./(M*N);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CalculatetheEntropyaccordingtothedefination%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%EntropyResult=0;fori=1:length(temp)iftemp(i)==0;EntropyResult=EntropyResult;elseEntropyResu
5、lt=EntropyResult-temp(i)*log2(temp(i));endend以下程序段用于计算下面两幅图片的互信息:a=imread('1.jpg');a=rgb2gray(a);b=imread('2.jpg');b=rgb2gray(b);%mi=MI(a,b)%CaculateMIofaandbintheregionoftheoverlappart%Tocalculatetheoverlappingregions[Ma,Na]=size(a);[Mb,Nb]=size(b);M=min(Ma,Mb);N=min(Na,Nb);hab=zeros(256,2
6、56);ha=zeros(1,256);hb=zeros(1,256);ifmax(max(a))~=min(min(a))a=(a-min(min(a)))/(max(max(a))-min(min(a)));elsea=zeros(M,N);endifmax(max(b))-min(min(b))b=(b-min(min(b)))/(max(max(b))-min(min(b)));elseb=zeros(M,N);enda=double(int16(a*255))+1;b=double(int16(b*255))+1;fori=1:Mforj=1:Nindexx=a(i
7、,j);indexy=b(i,j);hab(indexx,indexy)=hab(indexx,indexy)+1;ha(indexx)=ha(indexx)+1;hb(indexy)=hb(indexy)+1;endendhsum=sum(sum(hab));index=find(hab~=0);p=hab/hsum;Hab=sum(sum(-p(index).*log(p(index))));hsum=sum(sum(ha));index=find(ha~=0);p=ha/hsum;Ha=sum(s