




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程:圖像處理班級:119134-20學(xué)號:20231003343學(xué)生姓名:范瑞 2023年11月目錄TOC\o"1-7"\h\z\u一. 課程背景 1二.課程選題 1三. 設(shè)計(jì)算法 11.灰度直方圖 12.圖像幾何變換 13.圖像平滑 3四. 關(guān)鍵代碼 61.圖像平移 62.圖像翻轉(zhuǎn) 93.圖像翻轉(zhuǎn) 94.高斯平滑 105.中值濾波 12五. 測試結(jié)果 15六. 總結(jié)分析 18課程背景隨機(jī)計(jì)算機(jī)技術(shù)的開展,數(shù)字圖像的采集和應(yīng)用,特別是加工技術(shù)近年來得到極大的重視和長足的進(jìn)展,出現(xiàn)了許多有關(guān)的新理論、新方法、新算法、新手段和新設(shè)備,并已使得數(shù)字圖像技術(shù)在科學(xué)研究、工業(yè)生產(chǎn)、醫(yī)療衛(wèi)生、教育、娛樂、管理和通信等方面得到了廣泛的應(yīng)用,對失去社會開展、改善人們的生活水平都起到了重要的作用。
正因?yàn)閳D像處理在社會生活中有著越來越重要的作用,這也就表達(dá)了我們學(xué)習(xí)這門課程的必要性。而通過課程的學(xué)習(xí)可以讓我們掌握一些圖像處理的初步技術(shù),從而為今后在圖像處理的學(xué)習(xí)方面打下了根底。
二.課程選題圖像的讀取,顯示,保存等處理,通過MFC,做了灰度直方圖,圖像的幾何變換,圖像平滑等操作設(shè)計(jì)算法灰度直方圖灰度直方圖〔histogram〕是灰度級的函數(shù),描述的是圖像中每種灰度級像素的個數(shù),反映圖像中每種灰度出現(xiàn)的頻率。橫坐標(biāo)是灰度級,縱坐標(biāo)是灰度級出現(xiàn)的頻率。依據(jù)定義,假設(shè)圖像具有L〔通常L=256,即8位灰度級〕級灰度,那么大小為MxN的灰度圖像f(x,y)的灰度直方圖hist[0…L-1]可用如下計(jì)算獲得。
1、初始化hist[k]=0;k=0,…,L-1
2、統(tǒng)計(jì)hist[f(x,y)]++;x=0,…,M-1,y=0,…,N-1
3、歸一化hist[f(x,y)]/=M*N
圖像幾何變換實(shí)現(xiàn)簡單的空間變換,如圖像平移、鏡像、縮放和旋轉(zhuǎn)。主要是通過線性代數(shù)中的齊次坐標(biāo)變換。1.圖像平移坐標(biāo)變換如下2.水平鏡像翻轉(zhuǎn)其變換矩陣如下:X=width-X0-1(width為圖像寬度)Y=Y03.垂直鏡像倒轉(zhuǎn)其中變換矩陣如下:X=X0Y=height-Y0-1(height為圖像高度)它相當(dāng)于把原圖的像素矩陣的最后一行像素值賦值給第一行,首先找到(0,0)對應(yīng)的(height-1,0)像素值,然后依次賦值該行的像素?cái)?shù)據(jù);最后當(dāng)前行賦值結(jié)束,依次下一行。重點(diǎn)是找到每行的第一個像素點(diǎn)即可。4.圖像旋轉(zhuǎn)圖像饒?jiān)c(diǎn)旋轉(zhuǎn)順時針theta角矩陣變換如下:注意BMP圖像(0,0)左下角3.圖像平滑領(lǐng)域平滑圖像簡單平滑是指通過鄰域簡單平均對圖像進(jìn)行平滑處理的方法,用這種方法在一定程度上消除原始圖像中的噪聲、降低原始圖像比照度的作用。它利用卷積運(yùn)算對圖像鄰域的像素灰度進(jìn)行平均,從而到達(dá)減小圖像中噪聲影響、降低圖像比照度的目的。但鄰域平均值主要缺點(diǎn)是在降低噪聲的同時使圖像變得模糊,特別在邊緣和細(xì)節(jié)處,而且鄰域越大,在去噪能力增強(qiáng)的同時模糊程度越嚴(yán)重。高斯平滑為了克服簡單局部平均法的弊端(圖像模糊),目前已提出許多保持邊緣、細(xì)節(jié)的局部平滑算法。它們的出發(fā)點(diǎn)都集中在如何選擇鄰域的大小、形狀和方向、參數(shù)加平均及鄰域各店的權(quán)重系數(shù)等。圖像高斯平滑也是鄰域平均的思想對圖像進(jìn)行平滑的一種方法,在圖像高斯平滑中,對圖像進(jìn)行平均時,不同位置的像素被賦予了不同的權(quán)重。在圖像簡單平滑中,算法利用卷積模板逐一處理圖像中每個像素,這一過程可以形象地比作對原始圖像的像素一一進(jìn)行過濾整理,在圖像處理中把鄰域像素逐一處理的算法過程稱為濾波器。平滑線性濾波器的工作原理是利用模板對鄰域內(nèi)像素灰度進(jìn)行加權(quán)平均,也稱為均值濾波器。高斯平滑與簡單平滑不同,它在對鄰域內(nèi)像素進(jìn)行平均時,給予不同位置的像素不同的權(quán)值。模板越靠近鄰域中心位置,其權(quán)值越高。在圖像細(xì)節(jié)進(jìn)行模糊時,可以更多的保存圖像總體的灰度分布特征。中值濾波在使用鄰域平均法去噪的同時也使得邊界變得模糊。而中值濾波是非線性的圖像處理方法,在去噪的同時可以兼顧到邊界信息的保存。選一個含有奇數(shù)點(diǎn)的窗口W,將這個窗口在圖像上掃描,把窗口中所含的像素點(diǎn)按灰度級的升或降序排列,取位于中間的灰度值來代替該點(diǎn)的灰度值。例如選擇濾波的窗口如下列圖,是一個一維的窗口,待處理像素的灰度取這個模板中灰度的中值,濾波過程如下:常用的窗口還有方形、十字形、圓形和環(huán)形。不同形狀的窗口產(chǎn)生不同的濾波效果,方形和圓形窗口適合外輪廓線較長的物體圖像,而十字形窗口對有尖頂角狀的圖像效果好。中值濾波對于消除孤立點(diǎn)和線段的干擾十分有用,尤其是對于二進(jìn)噪聲,但對消除高斯噪聲的影響效果不佳。對于一些細(xì)節(jié)較多的復(fù)雜圖像,可以屢次使用不同的中值濾波。BMP文件格式BMP文件頭:BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類型、文件大小和位圖起始位置等信息。其結(jié)構(gòu)定義如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;//位圖文件的類型,必須為BMDWORDbfSize;//位圖文件的大小,以字節(jié)為單位WORDbfReserved1;//位圖文件保存字,必須為0WORDbfReserved2;//位圖文件保存字,必須為0DWORDbfOffBits;//位圖數(shù)據(jù)的起始位置,以相對于位圖//文件頭的偏移量表示,以字節(jié)為單位}BITMAPFILEHEADER;位圖信息頭:BMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息。typedefstructtagBITMAPINFOHEADER{DWORDbiSize;//本結(jié)構(gòu)所占用字節(jié)數(shù)LONGbiWidth;//位圖的寬度,以像素為單位LONGbiHeight;//位圖的高度,以像素為單位WORDbiPlanes;//目標(biāo)設(shè)備的級別,必須為1WORDbiBitCount//每個像素所需的位數(shù),必須是1(雙色),//4(16色),8(256色)或24(真彩色)之一DWORDbiCompression;//位圖壓縮類型,必須是0(不壓縮),//1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一DWORDbiSizeImage;//位圖的大小,以字節(jié)為單位LONGbiXPelsPerMeter;//位圖水平分辨率,每行像素?cái)?shù)LONGbiYPelsPerMeter;//位圖垂直分辨率,每列像素?cái)?shù)DWORDbiClrUsed;//位圖實(shí)際使用的顏色表中的顏色數(shù)DWORDbiClrImportant;//位圖顯示過程中重要的顏色數(shù)}BITMAPINFOHEADER;顏色表:顏色表用于說明位圖中的顏色,它有假設(shè)干個表項(xiàng),每一個表項(xiàng)是一個RGBQUAD類型的結(jié)構(gòu),定義一種顏色。RGBQUAD結(jié)構(gòu)的定義如下:typedefstructtagRGBQUAD{BYTErgbBlue;//藍(lán)色的亮度(值范圍為0-255)BYTErgbGreen;//綠色的亮度(值范圍為0-255)BYTErgbRed;//紅色的亮度(值范圍為0-255)BYTErgbReserved;//保存,必須為0}RGBQUAD;關(guān)鍵代碼1.圖像平移intnum;//記錄每行多余的圖像素?cái)?shù)個數(shù) intsfSize;//補(bǔ)齊后的圖像大小 //重點(diǎn):圖像的每行像素都必須是4的倍數(shù):1*1的圖像為rgb00H if(m_nWidth*3%4!=0) { num=(4-m_nWidth*3%4); sfSize=(m_nWidth*3+num)*m_nHeight;//每行多number個 } else { num=0; sfSize=m_nWidth*m_nHeight*3; } //注意:假設(shè)最后一行像素缺乏,我默認(rèn)處理為完整的一行,缺乏補(bǔ)00H //總之處理后的圖像總是m*n且為4倍數(shù),每行都完整存在 /*更改文件頭信息定義臨時文件頭結(jié)構(gòu)變量*/ BITMAPFILEHEADERbfhsf; BITMAPINFOHEADERbihsf; bfhsf=bfh; bihsf=bih; bfhsf.bfSize=sfSize+54; fwrite(&bfhsf,sizeof(BITMAPFILEHEADER),1,fpw); fwrite(&bihsf,sizeof(BITMAPINFOHEADER),1,fpw); fread(m_pImage,m_nImage,1,fpo); /*臨時變量存儲的像素與sfSize相同new和delete有效的進(jìn)行動態(tài)內(nèi)存的分配和釋放*/ unsignedchar*ImageSize; ImageSize=newunsignedchar[sfSize]; intPlace;//建立臨時坐標(biāo)記錄起始坐標(biāo)(0,0)平移過來的位置intm_pImagePlace;//原始圖像平移為(0,0)圖像把它平移到Place位置unsignedcharblack=0;//填充黑色='0' unsignedcharother=0;//補(bǔ)碼00H='\0' Place=dlg.m_yPY*(m_nWidth*3+num);//前m_yPY行都要填充為黑色 m_pImagePlace=0;//圖像處事位置為(0,0),把該點(diǎn)像素平移過去 intcountWidth=0;//記錄每行的像素個數(shù),滿行時變回0 intnumber=0;//數(shù)字記錄使用的像素行數(shù),平移時使用 for(inti=0;i<sfSize;i++){/*第一局部:到平移后像素位置前面的所有像素點(diǎn)賦值為黑色*/if(i<Place) {ImageSize[i]=black;//賦值為黑色continue;}/*第二局部:平移區(qū)域的左邊局部賦值為黑色*/elseif(i>=Place&&countWidth<dlg.m_xPY*3)//RGB乘3 {ImageSize[i]=black;//賦值為黑色countWidth++;continue;}/*第三局部:圖像像素平移區(qū)域*/elseif(i>=Place&&countWidth>=dlg.m_xPY*3){ImageSize[i]=m_pImage[m_pImagePlace];m_pImagePlace++;countWidth++;if(countWidth==m_nWidth*3){ if(num==0) { countWidth=0; number++; m_pImagePlace=number*m_nWidth*3; } else//num為補(bǔ)0 { for(intj=0;j<num;j++) { i++; ImageSize[i]=other; } countWidth=0; number++; m_pImagePlace=number*(m_nWidth*3+num); }}}}2.圖像翻轉(zhuǎn)unsignedchar*ImageSize; ImageSize=newunsignedchar[m_nImage]; intcountWidth=0;//記錄每行的像素個數(shù),滿行時變回0 intPlace;//記錄圖像每行的位置,便于圖像反轉(zhuǎn) intnumber=0;//數(shù)字記錄使用的像素行數(shù) Place=m_nWidth*3-1; //翻轉(zhuǎn)矩陣:y=y0x=width-x0-1 for(inti=0;i<m_nImage;i++) { if(countWidth==m_nWidth*3) { countWidth=0; } ImageSize[i]=m_pImage[Place];//(0,0)賦值(0,width*3-1)像素 Place--; countWidth++; if(countWidth==m_nWidth*3) { number++; Place=number*m_nWidth*3-1; } }3.圖像翻轉(zhuǎn)unsignedchar*ImageSize; ImageSize=newunsignedchar[m_nImage]; intcountWidth=0;//記錄每行像素個數(shù),滿行時變回0 intPlace;//每列位置 intnumber=0;//像素行數(shù) Place=(m_nWidth*3)*(m_nHeight-1-1);//0行存儲 //翻轉(zhuǎn)矩陣:x=x0y=height-y0-1 for(inti=0;i<m_nImage;i++) { ImageSize[i]=m_pImage[Place];//(0,0)賦值(0,0)像素 Place++; countWidth++; if(countWidth==m_nWidth*3) { countWidth=0; number++; Place=(m_nWidth*3)*(m_nHeight-number-1); } }4.高斯平滑/*第一步:先定義數(shù)據(jù)模板*/ intHWS=3;//模板維數(shù)為3維 floatH[3][3]={{1.0/16,2.0/16,1.0/16},//高斯模板系數(shù)1/16 {2.0/16,4.0/16,2.0/16}, {1.0/16,2.0/16,1.0/16}}; //翻開臨時的圖片 FILE*fpo=fopen(BmpName,"rb"); FILE*fpw=fopen(BmpNameLin,"wb+"); fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo); fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw); fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw); fread(m_pImage,m_nImage,1,fpo); //new和delete有效的進(jìn)行動態(tài)內(nèi)存的分配和釋放unsignedchar*ImageSize;ImageSize=newunsignedchar[m_nImage]; floatred,green,blue; intX,Y;//一維坐標(biāo)轉(zhuǎn)換為二維坐標(biāo) intTR,TG,TB;//記錄紅綠藍(lán)坐標(biāo)位置 //圖像增強(qiáng):平滑 for(inti=0;i<m_nImage;i=i+3) { //原圖:一維矩陣轉(zhuǎn)換為二維矩陣 X=(i/3)%m_nWidth;//圖像在X列 Y=(i/3)/m_nWidth;//圖像在Y行 //賦值為黑色,相當(dāng)于清零 red=green=blue=0; //對圖像進(jìn)行像素求和并取平均值HWS維數(shù) for(intj=Y-HWS/2;j<Y+HWS/2+1;j++)//第j行 { for(intk=X-HWS/2;k<X+HWS/2+1;k++)//第k列 { if(j>=0&&k>=0&&k<m_nWidth&&j<m_nHeight)//防止越界 { //模板二進(jìn)行模板平均,把該點(diǎn)像素分散到四周 TR=j*m_nWidth*3+k*3; red+=H[(j-Y+HWS/2)][(k-X+HWS/2)]*(float)(m_pImage[TR]); TG=j*m_nWidth*3+k*3+1; green+=H[(j-Y+HWS/2)][(k-X+HWS/2)]*(float)(m_pImage[TG]); TB=j*m_nWidth*3+k*3+2; blue+=H[(j-Y+HWS/2)][(k-X+HWS/2)]*(float)(m_pImage[TB]); } } } //對新圖像賦值 ImageSize[i]=(unsignedchar)(red); ImageSize[i+1]=(unsignedchar)(green); ImageSize[i+2]=(unsignedchar)(blue); }5.中值濾波unsignedchar*ImageSize;ImageSize=newunsignedchar[m_nImage]; intX,Y;//一維坐標(biāo)轉(zhuǎn)換為二維坐標(biāo) intTR,TG,TB;//記錄紅綠藍(lán)坐標(biāo)位置 //選取它為中心的周圍9個點(diǎn)像素〔注意一個點(diǎn)為RGB〕 intH[9]={0,0,0,0,0,0,0,0,0}; intHWS=3;//維數(shù)為三維 //圖像增強(qiáng):平滑它要獲取源圖像周圍9個點(diǎn)的矩陣乘以模板9個點(diǎn)的矩陣,故一維圖像轉(zhuǎn)二維 for(inti=0;i<m_nImage;i=i+3) { //原圖:一維矩陣轉(zhuǎn)換為二維矩陣 X=(i/3)%m_nWidth;//圖像在X列 Y=(i/3)/m_nWidth;//圖像在Y行 //第一行第一列最后一行最后一列直接復(fù)制 if(X==0||Y==0||X==m_nWidth*3||Y==m_nHe
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年抵押借款合同書模板(二零二五年)
- 二零二五年度工傷職工傷殘等級評定及待遇協(xié)議
- 2025年度科技創(chuàng)新黨支部合作開發(fā)協(xié)議
- 二零二五年度個體經(jīng)營企業(yè)資金走賬規(guī)范合同
- 二零二五年度高品質(zhì)鋁材國際購銷合同
- 二零二五年份有限公司股權(quán)激勵與員工福利保障協(xié)議
- 二零二五年度總公司與分公司間廣告宣傳與品牌推廣合作協(xié)議
- 2025年度終止知識產(chǎn)權(quán)轉(zhuǎn)讓合同書面通知樣本
- 村委會歷史文化遺址保護(hù)與改造施工合同2025
- 二零二五年度父母子女房產(chǎn)過戶合同:房屋買賣及產(chǎn)權(quán)變更法律保障協(xié)議
- 我的小書桌課件
- 北京大學(xué)- DeepSeek如何提示詞工程和落地場景分析
- 2025年北京社會管理職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫及答案參考
- (完整版)第五章養(yǎng)殖場環(huán)境保護(hù)
- 2025年江蘇省南京市鍋爐壓力容器檢驗(yàn)研究院招聘20人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 婦女保健知識講座課件
- 上海2025年上海商學(xué)院招聘筆試歷年參考題庫附帶答案詳解-1
- 2025云南昆明空港投資開發(fā)集團(tuán)招聘7人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 征信異議申請書
- 南瓜小房子故事課件
- 2024年蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
評論
0/150
提交評論