基于Visual C++的數(shù)字圖像處理_第1頁(yè)
基于Visual C++的數(shù)字圖像處理_第2頁(yè)
基于Visual C++的數(shù)字圖像處理_第3頁(yè)
基于Visual C++的數(shù)字圖像處理_第4頁(yè)
基于Visual C++的數(shù)字圖像處理_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 數(shù)字圖像處理設(shè)計(jì)1、 設(shè)計(jì)題目 基于Visual C+的圖像平滑、銳化處理2、 設(shè)計(jì)要求基于Visual C+的MFC程序設(shè)計(jì),實(shí)現(xiàn)對(duì)灰度圖像簡(jiǎn)單的平滑處理與拉普拉斯銳化處理。并能得到處理后所需的圖像。3、 設(shè)計(jì)原理(一)、圖像平滑 1 圖像平滑的基本概述圖像平滑是指用于突出圖像的寬大區(qū)域、低頻成分、主干部分或抑制圖像噪聲和干擾高頻成分,使圖像亮度平緩漸變,減小突變梯度,改善圖像質(zhì)量的圖像處理方法。 2 圖像平滑的基本方法 (1)線性濾波(領(lǐng)域平均法)對(duì)一些圖像進(jìn)行線性濾波可以去除圖像中某些類型的噪聲。領(lǐng)域平均法就是一種非常適合去除通過(guò)掃描得到的圖像中的噪聲顆粒的線性濾波。領(lǐng)域平均法是空間域

2、平滑噪聲技術(shù)。對(duì)于給定的圖像中的每個(gè)像素點(diǎn),取其領(lǐng)域S。設(shè)S含有M個(gè)像素,取其平均值作為處理后所得圖像像素點(diǎn)處的灰度。用一像素領(lǐng)域內(nèi)各像素灰度平均值來(lái)代替該像素原來(lái)的灰度,即領(lǐng)域平均技術(shù)。領(lǐng)域S的形狀和大小根據(jù)圖像特點(diǎn)確定。一般取的形狀是正方形、矩形及十字形等,S的形狀和大小可以在全圖處理過(guò)程中保持不變,也可以根據(jù)圖像的局部統(tǒng)計(jì)特性而變化,點(diǎn)(m,n)一般位于S的中心。如S為33領(lǐng)域,點(diǎn)(m,n)位于S中心,則 假設(shè)噪聲n是加性噪聲,在空間各點(diǎn)互不相關(guān),且期望為0,方差為,圖像g是未受污染的圖像,含有噪聲圖像f經(jīng)過(guò)加權(quán)平均后為 由上式可知,經(jīng)過(guò)平均后,噪聲的均值不變,方差,即方差變小,說(shuō)明噪聲

3、強(qiáng)度減弱了,抑制了噪聲。 (2)中值濾波 中值濾波是一種非線性濾波,由于它在實(shí)際運(yùn)算過(guò)程中并不需要圖像的統(tǒng)計(jì)特性,所以比較方便。但是對(duì)一些細(xì)節(jié)多,特別是點(diǎn)、線、尖頂細(xì)節(jié)多的圖像不宜采用中值濾波的方法。中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替。設(shè)有一個(gè)一維序列,取窗口長(zhǎng)度為m(m為奇數(shù)),對(duì)此序列進(jìn)行中值濾波,就是從輸入序列中相繼抽出m個(gè)數(shù),其中為窗口的中心位置,再將這m個(gè)點(diǎn)按其數(shù)值大小排列,取其序號(hào)為正中間的那作為輸出。用數(shù)學(xué)公式表示為: 例如,有一個(gè)序列為1,3,4,0,7,則中值濾波為重新排序后的序列0,1,3,4,7中間的值為3。此例若用平均濾

4、波,窗口也是取5,那么平均濾波輸出為。因此平均濾波的一般輸出為: 對(duì)于二維序列進(jìn)行中值濾波時(shí),濾波窗口也是二維的,但這種二維窗口可以有各種不同的形狀,如線狀、方形、圓形、十字形、圓環(huán)形等。二維數(shù)據(jù)的中值濾波可以表示為: 其中,A為濾波窗口。(2) 、圖像銳化 1 圖像銳化的基本概述圖像在傳輸過(guò)程中,通常質(zhì)量都要降低,除了噪聲因素外,圖像一般都要變得模糊。這主要是因?yàn)閳D像的傳輸或轉(zhuǎn)換系統(tǒng)的傳遞函數(shù)對(duì)高頻成分的衰減作用,造成圖像的細(xì)節(jié)輪廓不清晰。圖像銳化就是補(bǔ)償圖像的輪廓,使圖像比較清晰。 2 圖像銳化的基本方法 (1)微分算子法設(shè)有一副圖像,它的梯度用數(shù)學(xué)概念描述為一個(gè)向量,定義為 該向量的模為

5、 上式所表示的稱為圖像的梯度,它是x,y的函數(shù),實(shí)際上也是圖像的梯度圖像。對(duì)于數(shù)字圖像來(lái)講,微分和只能用查分來(lái)近似。上式按差分運(yùn)算近似后的梯度表達(dá)式為 但是,實(shí)際計(jì)算時(shí),用這種方式計(jì)算量較大,為了節(jié)省計(jì)算機(jī)計(jì)算的時(shí)間,在計(jì)算精度允許的情況下,可蔡勇絕對(duì)差法。對(duì)應(yīng)的絕對(duì)差算法為 必須注意的是,用梯度計(jì)算時(shí),對(duì)于一個(gè)MN的數(shù)字圖像f(x,y)(x=0,M-1,y=0,N-1),點(diǎn)(M-1,y)和(X,N-1)的梯度是無(wú)法進(jìn)行計(jì)算的。因此,圖像f(x,y)的最后一行(第M-1行)和最后一列(第N-1列)的像素的梯度值應(yīng)該進(jìn)行特殊處理。常用的方法是(M-1,y)的梯度值用(M-2,y)的梯度值來(lái)代替,

6、(x,N-1)的梯度值用(x,N-2)的梯度值來(lái)代替。 (2)拉氏算子拉普拉斯算子是最簡(jiǎn)單的各向同性微分算子,具有旋轉(zhuǎn)不變性,比較適用于改善因?yàn)楣饩€的漫反射造成的圖像模糊。其原理是,在攝像記錄圖像的過(guò)程中,光點(diǎn)將光漫反射到其周圍區(qū)域,這個(gè)過(guò)程滿足擴(kuò)散方程: 經(jīng)過(guò)推導(dǎo),可以發(fā)現(xiàn)當(dāng)圖像的模糊是由光的漫反射造成時(shí),不模糊圖像等于模糊圖像減去它的拉普拉斯變換的常數(shù)倍。另外,人們還發(fā)現(xiàn),即使模糊不是由于光的漫反射造成的,對(duì)圖像進(jìn)行拉普拉斯變換也可以使圖像更清晰。拉普拉斯銳化的一維處理表達(dá)式是: 在二維情況下,拉普拉斯算子使走向不同的輪廓能夠在垂直的方向上具有類似于一維那樣的銳化效應(yīng),其表達(dá)式為: 對(duì)于離

7、散函數(shù),拉氏算子定義為 其中 = = = = = 同理 類似的有 所以有 則拉式算子的模板表示為: 4、 源程序清單 #include stdafx.h #include DIPDemo.h #include DIPDemoDoc.h #include DIPDemoView.h #include mainfrm.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_;#endif IMPLEMENT_DYNCREATE(CDIPDemoView, CScrollView) BE

8、GIN_MESSAGE_MAP(CDIPDemoView, CScrollView) /AFX_MSG_MAP(CDIPDemoView) ON_COMMAND(ID_ENHA_SMOOTH, OnEnhaSmooth) ON_COMMAND(ID_ENHA_SHARP, OnEnhaSharp) /AFX_MSG_MAP END_MESSAGE_MAP() CDIPDemoView:CDIPDemoView() : m_bLBtnDblClkSrv(0) / TODO: add construction code here CDIPDemoView:CDIPDemoView() void C

9、DIPDemoView:OnDraw(CDC* pDC) BeginWaitCursor(); / 顯示等待光標(biāo) CDIPDemoDoc* pDoc = GetDocument(); / 獲取文檔 ASSERT_VALID(pDoc); if(pDoc-m_Image.IsValidate() CPalette* pOldPalette; CPalette* pPalette = pDoc-GetDocPalette(); if(pPalette!=NULL) pOldPalette = pDC-SelectPalette(pPalette, FALSE); pDC-RealizePalett

10、e(); /更新系統(tǒng)調(diào)色板 pDoc-m_Image.Draw(pDC); /繪制圖像 if(pPalette!=NULL) pDC-SelectPalette(pOldPalette, FALSE); EndWaitCursor(); / 恢復(fù)正常光標(biāo) void CDIPDemoView:OnEnhaSmooth() / 圖像平滑 CDIPDemoDoc* pDoc = GetDocument(); / 獲取文檔 CImgProcess imgInput = pDoc-m_Image; / 輸入對(duì)象 if (imgInput.m_pBMIH-biBitCount!=8) AfxMessage

11、Box(不是8-bpp灰度圖像,無(wú)法處理!); return; / 檢查圖像是灰度圖 CImgProcess imgOutput = imgInput; / 輸出的臨時(shí)對(duì)象 intnTempH;/ 模板高度 intnTempW; / 模板寬度 FLOAT fTempC;/ 模板系數(shù) intnTempMX;/ 模板中心元素X坐標(biāo) intnTempMY;/ 模板中心元素Y坐標(biāo) FLOATaValue25 = 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0

12、.0, 0.0, 0.0, 0.0, 0.0, 0.0,; BeginWaitCursor(); / 更改光標(biāo)形狀 nTempH = 3; nTempW = 3; nTempMX = 1; nTempMY = 1; fTempC = (FLOAT) (1.0 / 9.0); / 初始化對(duì)話框變量值 imgInput.Template(&imgOutput, nTempH, nTempW, nTempMY, nTempMX, aValue, fTempC); / 調(diào)用Template()函數(shù)實(shí)現(xiàn)平滑濾波 pDoc-m_Image = imgOutput; / 將結(jié)果返回給文檔類 pDoc-Set

13、ModifiedFlag(TRUE); / 設(shè)置臟標(biāo)記 pDoc-UpdateAllViews(NULL); / 更新視圖 EndWaitCursor(); / 恢復(fù)光標(biāo) void CDIPDemoView:OnEnhaSharp() / 拉普拉斯銳化 CDIPDemoDoc* pDoc = GetDocument(); / 獲取文檔 CImgProcess imgInput = pDoc-m_Image; / 輸入對(duì)象 if (imgInput.m_pBMIH-biBitCount!=8) AfxMessageBox(不是8-bpp灰度圖像,無(wú)法處理!); return; / 檢查圖像是灰度

14、圖 CImgProcess imgOutput = imgInput; / 輸出的臨時(shí)對(duì)象 int nTempH; / 濾波器的高度 int nTempW; / 濾波器的寬度 int nTempMX; / 中心元素的X坐標(biāo) int nTempMY; / 中心元素的Y坐標(biāo) FLOATfCoef;/ 模板系數(shù) BeginWaitCursor(); nTempW = 3; nTempH = 3; fCoef = 1.0; nTempMX = 1; nTempMY = 1; / 設(shè)置拉普拉斯模板參數(shù) imgInput.Template(&imgOutput, nTempH, nTempW, nTemp

15、MY, nTempMX, Template_Laplacian2, fCoef); / 調(diào)用Template()函數(shù)用拉普拉斯模板銳化 pDoc-m_Image = imgOutput; / 將結(jié)果返回給文檔類 pDoc-SetModifiedFlag(TRUE); / 設(shè)置臟標(biāo)記 pDoc-UpdateAllViews(NULL); / 更新視圖 EndWaitCursor(); / 恢復(fù)光標(biāo) 5、 設(shè)計(jì)結(jié)果設(shè)計(jì)程序運(yùn)行結(jié)果如下圖所示,運(yùn)行后原始圖像如下: 進(jìn)行圖像平滑處理后如下圖所示:圖像進(jìn)行拉普拉斯銳化后如下示:6、 收獲和體會(huì)在這一個(gè)禮拜的圖像處理程序設(shè)計(jì)中,我經(jīng)過(guò)多次的實(shí)踐和多次的失

16、敗,終于在最后成功設(shè)計(jì)好了程序。同時(shí)深刻體會(huì)到圖像平滑讓圖像中的細(xì)節(jié)成分越來(lái)越少,而相對(duì)的,圖像銳化則是凸顯圖像的細(xì)節(jié)部分。圖像平滑處理,在很多噪聲的情況下,圖像平滑能夠有效的減弱噪聲對(duì)圖像的影響。無(wú)論是高斯噪聲、椒鹽噪聲還是乘性噪聲,都能很好的在圖像平滑中將這幾種噪聲很好的去除。雖然不能完全復(fù)原如原圖一樣的情況,但是在圖像平滑過(guò)后,噪聲在圖像中的存在確實(shí)少了許多。但是對(duì)于一些本身比較清晰的圖像,效果就不那么明顯了。圖像平滑的弊端在于會(huì)把圖像本身一些很好的細(xì)節(jié)部分給模糊掉,從而降低圖像的質(zhì)量。對(duì)一些分辨率很高而且細(xì)節(jié)很唯美的圖像來(lái)說(shuō),圖像平滑來(lái)處理噪聲反而效果不是很好。而在圖像的銳化中則是讓圖像變得更為清晰。通過(guò)圖像銳化可以使圖像的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論