資源描述:
《基于灰度查找表的圖像增強》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于灰度查找表的圖像增強專業(yè):班級:學(xué)號:姓名:日期:2006-6-25一.實習(xí)目的和意義1.學(xué)習(xí)基于灰度查找表的圖像增強(灰度線性變換)算法的方法,掌握其減少計算量的原理;2.實用VC編程語言實現(xiàn)基于灰度查找表灰度線性變換算法;3.鞏固和提高VC編程的能力。二.實習(xí)原理和方法實習(xí)原理是對影像點灰度進行線性變換,從而達到圖象增強的目的。灰度點運算的基本算法為:pData[i]=pData[i]*a+b。對于一幅1024*768的BMP位圖對于上式的運算次數(shù)為:1024*768若建立灰度查找表,GrayMin=
2、GrayMin+1次,大大減少加法運算的次數(shù)對于圖像上每個像素變換后的灰度直接在LookTable中尋找。所以應(yīng)該先建立一個影像的灰度查找表,然后對每個像素點進行灰度處理時直接調(diào)用查找表之中對應(yīng)值,以此大大減少加法計算量。三.實習(xí)過程和步驟1.用MFCAppWizard創(chuàng)建以“學(xué)號姓名”命名的項目:選擇MultipleDocunment;選擇視圖類基類CScrollView;2.根據(jù)給定DIBAPI.H,DIBAPI.CPP,MyFile.CPP文件,完成位圖讀寫顯示。3.添加菜單和對話框,設(shè)置對話框的控件,界面如下圖所示:4.建立菜單的消息的響應(yīng)函數(shù),注意Slider控件的范圍,由于其數(shù)據(jù)
3、類型是整型的,所以在設(shè)置其范圍時應(yīng)該擴大一定倍數(shù),然后在實際計算時在除以這個倍數(shù),這樣可以提高滑塊的精度,可以間接的得到小數(shù)點后幾位數(shù)值。代碼如下:voidCxxls::OnCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult){m_slidera.SetRange(0,500);UpdateData(TRUE);m_a=(double)m_slidera.GetPos()/100;UpdateData(FALSE);*pResult=0;}5.編寫功能函數(shù)1)基于灰度查找表的圖像線形變換①首先創(chuàng)建一個灰度查找表,代碼如下:intmax=p[0];in
4、tmin=p[0];for(inta=0;a=max){max=p[LineBytes*a+b];}if(p[LineBytes*a+b]<=min){min=p[LineBytes*a+b];}}}intLookTable[256];inti,j;for(i=min-1;i255)LookTable[i]=255;if(LookTable[i]<0)Loo
5、kTable[i]=0;}②通過調(diào)用灰度查找表,對圖像進行線形變換,代碼如下:intt;for(intx=0;x6、hdib;hdib=pDoc->GetHDIB();if(hdib==NULL){MessageBox("請先打開一幅BMP圖象!","系統(tǒng)消息",MB_ICONINFORMATION
7、MB_OK);return;}LPSTRpDIB=(LPSTR)LocalLock(hdib);LPBYTEpData=(LPBYTE)::FindDIBBits(pDIB);BITMAPINFOHEADER*lpDIBHdr;//位圖信息頭結(jié)構(gòu)指針;BYTE*lpDIBBits;//指向位圖像素灰度值的指針;lpDIBHdr=(BITMAPINFOHEADER*)GlobalLock(hdib);//得到圖
8、像的位圖頭信息lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);CZhifangtudialog;inti,j;intwImgWidth=::DIBWidth(pDIB);intwImgHeight=::DIBHeight(pDIB);//a[]數(shù)組用來存放各個灰度級出現(xiàn)的概率;floata[256];for(i=0;