DSP課設(shè)數(shù)字圖像處理-二值化_第1頁
DSP課設(shè)數(shù)字圖像處理-二值化_第2頁
DSP課設(shè)數(shù)字圖像處理-二值化_第3頁
DSP課設(shè)數(shù)字圖像處理-二值化_第4頁
DSP課設(shè)數(shù)字圖像處理-二值化_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

DSP技術(shù)及應(yīng)用課程設(shè)計報告課題名稱:數(shù)字圖像處理——二值化學(xué)院:電氣信息工程學(xué)院專業(yè):通信工程班級:姓名:學(xué)號:指導(dǎo)教師:董勝成績:日期:2014.6.9-2014.6.20目錄一、設(shè)計目的及要求2二、設(shè)計所需的軟件介紹2三、設(shè)計原理3程序流程圖6設(shè)計程序7處理后的效果展示11課程設(shè)計心得15八、 參考文獻(xiàn)16設(shè)計目的及要求:目的:1、掌握CCStudio3.3的安裝和配置;2、掌握數(shù)字圖像處理的原理、基本算法和各種圖像處理技術(shù);3、掌握圖像的灰度化、二值化和灰度直方圖的原理及編程思路;4、掌握圖像濾波(圖像銳化、中值濾波、邊緣檢測、特征識別等)的基本原理及編程方法及編程思路;要求:能夠根據(jù)設(shè)計題目要求查閱檢索有關(guān)的文獻(xiàn)資料,結(jié)合題目選學(xué)有關(guān)參考書。查詢相關(guān)資料,初步制定設(shè)計方案。2、用CCS軟件進(jìn)行C語言設(shè)計相關(guān)算法,實現(xiàn)對圖像的采集及處理。3、編寫相應(yīng)的C語言程序?qū)崿F(xiàn)各種圖像處理。二、設(shè)計所需的軟件介紹:英文全稱:CodeComposerStudio中文譯名:代碼調(diào)試器,代碼設(shè)計套件。CCS的全稱是CodeComposerStudio,它是美國德州儀器公司(TexasInstrument,TI)出品的代碼開發(fā)和調(diào)試套件。TI公司的產(chǎn)品線中有一大塊業(yè)務(wù)是數(shù)字信號處理器(DSP)和微處理器(MCU),CCS便是供用戶開發(fā)和調(diào)試DSP和MCU程序的集成開發(fā)軟件。CodeComposerStudiov3.3(CCStudiov3.3)是用于TIDSP、微處理器和應(yīng)用處理器的集成開發(fā)環(huán)境。CodeComposerStudio包含一整套用于開發(fā)和調(diào)試嵌入式應(yīng)用的工具。它包含適用于每個TI器件系列的編譯器、源碼編輯器、項目構(gòu)建環(huán)境、調(diào)試器、描述器、仿真器以及多種其它功能。CodeComposerStudioIDE提供了單個用戶界面,可幫助您完成應(yīng)用開發(fā)流程的每個步驟。借助于精密的高效工具,用戶能夠利用熟悉的工具和界面快速上手并將功能添加至他們的應(yīng)用。產(chǎn)品版本:CCS有多個版本可供選擇。各版本支持的處理器不同。但所有v3.3均使用以下各項:主機(jī):PC操作系統(tǒng):MicrosoftWindowsVista、XP和2000支持的內(nèi)核白金版:TMS320C6000、TMS320C5000、TMS320C2000、TMS470、TMS570、ARM7、ARM9、ARM11、ARMCortexM3、ARMCortexR4、ARMCortexA8和MSP430C2000版:TMS320F28x和TMS320F24x三、設(shè)計原理:1、圖像的二值化原理:圖像的二值化處理就是講圖像上的點的灰度置為0或255,也就是講整個圖像呈現(xiàn)出明顯的黑白效果。即將256個亮度等級的灰度圖像通過適當(dāng)?shù)拈y值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。在數(shù)字圖像處理中,二值圖像占有非常重要的地位,特別是在實用的圖像處理中,以二值圖像處理實現(xiàn)而構(gòu)成的系統(tǒng)是很多的,要進(jìn)行二值圖像的處理與分析,首先要把灰度圖像二值化,得到二值化圖像,這樣子有利于再對圖像做進(jìn)一步處理時,圖像的集合性質(zhì)只與像素值為0或255的點的位置有關(guān),不再涉及像素的多級值,使處理變得簡單,而且數(shù)據(jù)的處理和壓縮量小。為了得到理想的二值圖像,一般采用封閉、連通的邊界定義不交疊的區(qū)域。所有灰度大于或等于閥值的像素被判定為屬于特定物體,其灰度值為255表示,否則這些像素點被排除在物體區(qū)域以外,灰度值為0,表示背景或者例外的物體區(qū)域。如果某特定物體在內(nèi)部有均勻一致的灰度值,并且其處在一個具有其他等級灰度值的均勻背景下,使用閥值法就可以得到比較的分割效果。如果物體同背景的差別表現(xiàn)不在灰度值上(比如紋理不同),可以將這個差別特征轉(zhuǎn)換為灰度的差別,然后利用閥值選取技術(shù)來分割該圖像。動態(tài)調(diào)節(jié)閥值實現(xiàn)圖像的二值化可動態(tài)觀察其分割圖像的具體結(jié)果。實現(xiàn)二值化有如下幾種方法:方法一:該方法非常簡單,對RGB彩色圖像灰度化以后,掃描圖像的每個像素值,值小于127的將像素值設(shè)為0(黑色),值大于等于127的像素值設(shè)為255(白色)。該方法的好處是計算量少速度快。缺點更多首先閾值為127沒有任何理由可以解釋,其次完全不考慮圖像的像素分布情況與像素值特征??梢哉f該方法是史最弱智的二值處理方法一點也不為過。方法二:最常見的二值處理方法是計算像素的平均值K,掃描圖像的每個像素值如像素值大于K像素值設(shè)為255(白色),值小于等于K像素值設(shè)為0(黑色)。該方法相比方法一,閾值的選取稍微有點勝出之處。但是可能導(dǎo)致部分對象像素或者背景像素丟失。二值化結(jié)果不能真實反映源圖像信息。方法三:使用直方圖方法來尋找二值化閾值,直方圖是圖像的重要特質(zhì),直方圖方法選擇二值化閾值主要是發(fā)現(xiàn)圖像的兩個最高的峰,然后在閾值取值在兩個峰之間的峰谷最低處。該方法相對前面兩種方法而言稍微精準(zhǔn)一點點。結(jié)果也更讓人可以接受。方法四:使用近似一維Means方法尋找二值化閾值,該方法的大致步驟如下:(1).一個初始化閾值T,可以自己設(shè)置或者根據(jù)隨機(jī)方法生成。(2).根據(jù)閾值圖每個像素數(shù)據(jù)P(n,m)分為對象像素數(shù)據(jù)G1與背景像素數(shù)據(jù)G2。(n為行,m為列)(3).G1的平均值是m1,G2的平均值是m2(4).一個新的閾值T’=(m1+m2)/2(5).回到第二步,用新的閾值繼續(xù)分像素數(shù)據(jù)為對象與北京像素數(shù)據(jù),繼續(xù)2~4步,直到計算出來的新閾值等于上一次閾值。數(shù)字圖像邊緣檢測基本原理:邊緣是圖像局部特征不連續(xù)性(灰度突變、顏色突變和紋理結(jié)構(gòu)突變等)的反映,它標(biāo)志著一個區(qū)域的終結(jié)和另外一個區(qū)域的開始。邊緣提取首先檢測出圖像局部特性的不連續(xù)性,然后再將這些不連續(xù)的邊緣像素連成完備的邊界。邊緣的特征是邊沿走向的像素變化平緩,而垂直于邊緣方向的像素變化劇烈,所以,提取邊緣的算法就是檢測出符合邊緣特性的邊緣像素的算子。

兩個具有不同灰度值的相鄰區(qū)域之間總存在邊緣,邊緣是灰度值不連續(xù)的結(jié)果,這種不連續(xù)性通??梢岳们髮?dǎo)數(shù)的方法檢測到。邊緣是圖像上灰度變化最劇烈的地方,傳統(tǒng)的邊緣檢測就是利用了這個特點,對圖像各個像素點進(jìn)行微分或求二階微分來確定邊緣像素點。一階微分圖像的峰值處對應(yīng)著圖像的邊緣點;二階微分圖像的過零點處對應(yīng)著圖像的邊緣點。根據(jù)數(shù)字圖像的特點,處理圖像過程中常采用差分來代替導(dǎo)數(shù)運(yùn)算,對于圖像的簡單一階導(dǎo)數(shù)運(yùn)算,由于具有固定的方向性,只能檢測特定方向的邊緣,所以不具有普遍性。為了克服一階導(dǎo)數(shù)的缺點,我們定義圖像的梯度為梯度算子,它是圖像處理中最常用的一階微分算法。圖像梯度的最重要性質(zhì)是梯度的方向是在圖像灰度最大變化率上,它恰好可以反映出圖像邊緣上的灰度變化

邊緣檢測的基本思想是首先利用邊緣增強(qiáng)算子,突出圖像中的局部邊緣,然后定義像素的“邊緣強(qiáng)度”,通過設(shè)置門限的方法提取邊緣點集。常用的邊緣檢測一階導(dǎo)數(shù)算子有Robert算子、Sobel算子、Prewitt算子、LOG算子和Canny算子,常用的邊緣檢測二階導(dǎo)數(shù)算子是拉普拉斯算子。設(shè)計流程圖:五.設(shè)計程序:/***************************main.c文件*****************************/#defineIMAGEWIDTH80#defineIMAGEHEIGHT80#defineMODEPHOTO11#defineMODEPHOTO22#defineMODEPHOTO33#defineMODEPHOTO44externvoidInitImage(unsignedintNmode,unsignedchar*pImage,intnWidth,intnHeight);externvoidbinarization(intnWidth,intnHeight);unsignedchardbImage[IMAGEWIDTH*IMAGEHEIGHT];unsignedchardbTargetImage[IMAGEWIDTH*IMAGEHEIGHT];voidmain(){InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);binarization(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);binarization(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT);binarization(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT);binarization(IMAGEWIDTH,IMAGEHEIGHT);while(1);}/*************************InitImage.c文件**************************/#include<stdio.h>#defineMODEPHOTO11#defineMODEPHOTO22#defineMODEPHOTO33#defineMODEPHOTO44#defineGARYBARLECEL16voidReadImage(unsignedchar*pImage,char*cFileName,intnWidth,intnHeight){intj;unsignedchar*pWork;FILE*fp;if(fp=fopen(cFileName,"rb")){fseek(fp,1078L,SEEK_SET); pWork=pImage+(nHeight-1)*nWidth;for(j=0;j<nHeight;j++,pWork-=nWidth)fread(pWork,nWidth,1,fp);fclose(fp);}}voidInitImage(unsignedintnMode,unsignedchar*pImage,intnWidth,intnHeight){switch(nMode){caseMODEPHOTO1:ReadImage(pImage,"D:\\CCStudio_v3.3\\MyProjects\\middle_filter\\1.bmp",nWidth,nHeight);break;caseMODEPHOTO2:ReadImage(pImage,"D:\\CCStudio_v3.3\\MyProjects\\middle_filter\\2.bmp",nWidth,nHeight);break;caseMODEPHOTO3:ReadImage(pImage,"D:\\CCStudio_v3.3\\MyProjects\\middle_filter\\3.bmp",nWidth,nHeight);break;caseMODEPHOTO4:ReadImage(pImage,"D:\\CCStudio_v3.3\\MyProjects\\middle_filter\\4.bmp",nWidth,nHeight);break;default:break;}}/************************binarization.c文件************************/#defineIMAGEWIDTH80#defineIMAGEHEIGHT80#definethreshold_val80externunsignedchardbImage[IMAGEWIDTH*IMAGEHEIGHT];//原始externunsignedchardbTargetImage[IMAGEWIDTH*IMAGEHEIGHT];//目標(biāo)intmi,mij,m_nWork2;unsignedintm_nWork,*pWork;unsignedchar*pImg1,*pImg2,*pImg3,*pImg;unsignedintx1,x2,x3,x4,x5,x6,x7,x8,x9,temp;unsignedinttab[9];voidbinarization(intnWidth,intnHeight){inti,j,k;pImg=dbTargetImage;for(i=0;i<IMAGEWIDTH;i++,pImg++)(*pImg)=0;(*pImg)=0;pImg1=dbImage;pImg2=pImg1+IMAGEWIDTH;pImg3=pImg2+IMAGEWIDTH;for(i=2;i<nHeight;i++){pImg++;x1=(*pImg1);pImg1++;x2=(*pImg1);pImg1++;x4=(*pImg2);pImg2++;x5=(*pImg2);pImg2++;x7=(*pImg3);pImg3++;x8=(*pImg3);pImg3++;for(mi=2;mi<nWidth;mi++,pImg++,pImg1++,pImg2++,pImg3++){x3=(*pImg1);x6=(*pImg2);x9=(*pImg3);tab[0]=x1;tab[1]=x2;tab[2]=x3;tab[3]=x4;tab[4]=x5;tab[5]=x6;tab[6]=x7;tab[7]=x8;tab[8]=x9;for(j=0;j<8;j++)for(k=j+1;k<9;k++){if(tab[j]<tab[k]){temp=tab[j];tab[j]=tab[k];tab[k]=temp;}}m_nWork2=tab[4];if(m_nWork2>=threshold_val&&m_nWork2<=255)m_nWork2=255;elseif(m_nWork2<threshold_val&&m_nWork2>=0)m_nWork2=0;(*pImg)=m_nWork2;x1=x2;x2=x3;x4=x5;x5=x6;x7=x8;x8=x9;}(*pImg)=0;pImg++;}}處理后的效果展示:設(shè)計心得:一晃十多天的課程設(shè)計已匆匆而過,在這兩周的課設(shè)中我鞏固了相關(guān)知識,并通過這次實踐我更加熟練的掌握了CCStudiov3.3軟件的操作技能,更是通過自我學(xué)習(xí)掌握了圖像二值化的知識和對圖像的幾項簡單的處理。從而也認(rèn)識到了自己的不足之處,在今后的學(xué)習(xí)生活中還得繼續(xù)充實自己。通過這十多天的課程設(shè)計讓我加深了解了更多圖像處理的工作原理及編程方法,如:圖像的二值化、中值濾波、灰度直方圖的編程等等。我還學(xué)會了如何在資料中快速的獲得有用的信息從而尋找編程方向,和從幾方面了解哪種方法更加簡便,優(yōu)異。記得剛開始第一天聽到課設(shè)題目及要求時,一下子就懵了,不知從何下手,好多知識都不知道,之前并沒有更多的涉及到課設(shè)中所用到的知識,后來經(jīng)過查資料和到圖書館借了許多有關(guān)的書籍,小組成員一起研究,忙綠了兩三天終于有了一點小小的進(jìn)展,初步知道了在完成課設(shè)時需要涉及的幾方面知識的具體內(nèi)容。但是我們卻不敢放松,因為我們還需要編程,這也是我的弱項。經(jīng)老師的提示,我們又開始惡補(bǔ)涉及到幾個知識點,讓它更細(xì)膩化,以便獲得更多的思路。往后的幾天開始我們的進(jìn)度就開始慢下來了。后來我們通過老師給的資料再加上反復(fù)的看資料我們才有了思路,大致編出了程序,但是初編時我們遇到了一些困難,。例如:編的程序中有語法錯誤,出現(xiàn)重

溫馨提示

  • 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

提交評論