直方圖均衡實驗報告_第1頁
直方圖均衡實驗報告_第2頁
直方圖均衡實驗報告_第3頁
直方圖均衡實驗報告_第4頁
直方圖均衡實驗報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)字圖像處理實驗報告實驗二圖像直方圖均衡姓名:

*******

學(xué)號:

*********

專業(yè):

************

一.實驗?zāi)康膶W(xué)習(xí)并掌握圖像直方圖均衡的基本理論,并通過分析均衡前后的圖像驗證課堂教學(xué)內(nèi)容,總結(jié)直方圖均衡的特點。二.實驗內(nèi)容對圖像img2進(jìn)行直方圖均衡(img2為X光片圖像)1.對比均衡前后圖像的直方圖及特點,1圖形顯示其直方圖以及灰度映射關(guān)系2計算以下參數(shù):概率非零灰度數(shù),概率非零灰度中最大概率、最小概率、最大最小概率之比。3統(tǒng)計圖像中概率大于平均概率的灰度級數(shù);4計算非零概率的平均值和方差5您認(rèn)為哪些參數(shù)能夠表現(xiàn)圖像直方圖分布的均勻程度?試提取相關(guān)參數(shù)進(jìn)行測試。2.找一到兩幅圖像重復(fù)上述實驗。3.通過實驗結(jié)果對比,能得出什么結(jié)論?三、實驗報告要求1.源程序(C或Matlab):(1).畫直方圖的Matlab程序filname='E:\課件\大三下\圖像處理\實驗二\1.bmp';

//打開文件A=imread(filname);

//讀取文件信息imhist(A);

//畫出圖像文件的直方圖(2)C程序#include<stdio.h>#include<windows.h>#include<string.h>#include<math.h>BITMAPFILEHEADERbfh;BITMAPINFOHEADERbih;typedefstructPP{unsignedcharGRAY;}PIXEL;////畫出灰度映射關(guān)系圖////voiddraw(doubles[]){FILE*fout,*fin;inti,j;PIXELp[256][256];BITMAPFILEHEADERm_bfh;BITMAPINFOHEADERm_bih;RGBQUADcolorPanel[256];fin=fopen("1.bmp","rb");fread(&m_bfh,1,sizeof(BITMAPFILEHEADER),fin);fread(&m_bih,1,sizeof(BITMAPINFOHEADER),fin);fread(colorPanel,256,sizeof(RGBQUAD),fin);fclose(fin);fout=fopen("Graymappingrelationship.bmp","wb");m_bih.biWidth=256;m_bih.biHeight=256;m_bih.biSizeImage=256*256;m_bfh.bfSize=m_bfh.bfOffBits+m_bih.biSizeImage;for(i=0;i<256;i++)for(j=0;j<256;j++)

p[i][j].GRAY=255;for(i=0;i<256;i++){j=(int)s[i];p[i][j].GRAY=0;

}fwrite(&m_bfh,1,sizeof(BITMAPFILEHEADER),fout);fwrite(&m_bih,1,sizeof(BITMAPINFOHEADER),fout);fwrite(colorPanel,256,sizeof(RGBQUAD),fout);fwrite(p,256*256,1,fout);

fclose(fout);}////統(tǒng)計概率非零灰度數(shù)子函數(shù)///doublenonzero(doublep[])

{inti;doublesum=0;

for(i=0;i<256;i++)if(p[i]!=0)

sum=sum+1;

printf("概率非零灰度數(shù):%.2f\n",sum);returnsum;}////找到最大概率子函數(shù)////doublelmax(doublep[])

{inti;doublemax;for(i=0;i<256;i++)

//對max初始化

if(p[i]!=0){max=p[i];break;}for(i=0;i<256;i++)if(p[i]!=0&&p[i]>max)

max=p[i];

//找出概率非零最大值

printf("概率非零最大值:%lf\n",max);returnmax;}////找到最小概率子函數(shù)////doublelmin(doublep[])

{inti;doublemin;for(i=0;i<256;i++)

//對min初始化

if(p[i]!=0){min=p[i];break;}for(i=0;i<256;i++)if(p[i]!=0&&p[i]<min)

min=p[i];

//找出概率非零最小值printf("概率非零最小值:%lf\n",min);returnmin;}////求最大最小概率之比子函數(shù)////doublerate(doublemax,doublemin)

{doubler;r=max/min;printf("最大最小概率之比:%lf\n",r);returnr;

}////統(tǒng)計圖像中概率大于平均概率的灰度級數(shù)子函數(shù)////doublelager(doublep[])

{inti;doublesum=0;for(i=0;i<256;i++)

if(p[i]>1.0/256)

sum=sum+1;printf("圖像中概率大于平均概率的灰度級數(shù):%lf\n",sum);returnsum;

}////求非零概率的平均值的子函數(shù)////doubleaverage(doublesum){doubleaver;aver=1.0/sum;printf("非零概率的平均值:%lf\n",aver);return

aver;

}////求非零概率的方差的子函數(shù)////doublevariance(doublesum,doublep[],doubleaver){inti;doubleasum=0,var;for(i=0;i<256;i++)

if(p[i]!=0)

asum=asum+pow((p[i]-aver),2);//printf("%lf\n",asum);

var=asum/sum;printf("非零概率的方差:%lf\n",var);returnvar;}/////主函數(shù)//////intmain(){FILE*fin,*fout;RGBQUADcolorPanel[256];PIXEL**bmpData;longi,j;doublenum[256]={0},p[256]={0},s[256]={0};doublemax,min,r,sum=0,asum=0,aver,psum=0,var;fin=fopen("1.bmp","rb");fread(&bfh,1,sizeof(BITMAPFILEHEADER),fin);fread(&bih,1,sizeof(BITMAPINFOHEADER),fin);fread(colorPanel,256,sizeof(RGBQUAD),fin);bmpData=(PIXEL**)malloc(bih.biHeight*sizeof(PIXEL*));for(i=0;i<bih.biHeight;i++){

bmpData[i]=(PIXEL*)malloc(bih.biWidth*sizeof(PIXEL));fread(bmpData[i],bih.biWidth,sizeof(PIXEL),fin);}fclose(fin);////對圖像進(jìn)行直方圖均衡////for(i=0;i<bih.biHeight;i++){

//二重循環(huán)遍歷圖象數(shù)據(jù)for(j=0;j<bih.biWidth;j++){num[bmpData[i][j].GRAY]++;

//當(dāng)前灰度級象素/總象素}

}for(i=0;i<256;i++)p[i]=num[i]/bih.biWidth/bih.biHeight;//計算灰度概率s[0]=p[0];for(i=1;i<256;i++){

s[i]=s[i-1]+p[i];

//計算累積概率(低灰度概率加到高灰度概率上)}for(i=0;i<256;i++){

//0~1映射到0~255s[i]=s[i]*255;for(j=0;j<256;j++){if(s[i]>=j-0.5&&s[i]<j+0.5)s[i]=j;}

}for(i=0;i<bih.biHeight;i++){

//對原圖像進(jìn)行直方圖均衡for(j=0;j<bih.biWidth;j++){bmpData[i][j].GRAY=(unsignedchar)s[bmpData[i][j].GRAY];}

}////計算各個參數(shù)////

sum=nonzero(p);

//概率非零灰度數(shù)

max=lmax(p);

//概率非零灰度中最大概率min=lmin(p);

//概率非零灰度中最小概率r=rate(max,min);

//最大最小概率之比asum=lager(p);

//圖像中概率大于平均概率的灰度級數(shù)aver=average(sum);

//非零概率的平均值var=variance(sum,p,aver);

//非零概率的方差draw(s);

//畫灰度映射關(guān)系曲線fout=fopen("3.bmp","wb");

fwrite(&bfh,1,sizeof(BITMAPFILEHEADER),fout);fwrite(&bih,1,sizeof(BITMAPINFOHEADER),fout);fwrite(colorPanel,256,sizeof(RGBQUAD),fout);for(i=0;i<bih.biHeight;i++)fwrite(bmpData[i],bih.biWidth,sizeof(PIXEL),fout);fclose(fout);return0;}2.程序流程圖:3.實驗結(jié)果圖像及對應(yīng)參數(shù):(1)圖一:均衡前:

均衡前直方圖:灰度映射:對應(yīng)參數(shù):均衡后:

均衡后的直方圖:對應(yīng)參數(shù):均衡前后灰度映射關(guān)系:橫軸表示均衡前的灰度,縱軸表示均衡后的灰度。(2)圖二:均衡前:

均衡前直方圖:對應(yīng)的參數(shù):均衡后:

均衡后直方圖:對應(yīng)參數(shù):均衡前后灰度映射關(guān)系:橫軸表示均衡前的灰度,縱軸表示均衡后的灰度。(3)圖三:均衡前:

均衡前直方圖:對應(yīng)參數(shù):均衡后:

均衡后直方圖:對應(yīng)參數(shù):均衡前后灰度映射關(guān)系:橫軸表示均衡前的灰度,縱軸表示均衡后的灰度。(4)圖四:均衡前:

均衡前直方圖:對應(yīng)參數(shù):均衡后:

均衡后直方圖:對應(yīng)參數(shù):均衡前后灰度映射關(guān)系:橫軸表示均衡前的灰度,縱軸表示均衡后的灰度。(5)圖五:均衡前:

均衡前直方圖:對應(yīng)參數(shù):均衡后:

均衡后直方圖:對應(yīng)參數(shù):均衡前后灰度映射關(guān)系:橫軸表示均衡前的灰度,縱軸表示均衡后的灰度。4.實驗結(jié)果分析及結(jié)論由實驗結(jié)果的參數(shù)分析,直方圖均衡前后有幾項參數(shù)變化較大。均衡后概率非零的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論