版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程:圖像處理班級(jí):119134-20學(xué)號(hào):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五. 測(cè)試結(jié)果 15六. 總結(jié)分析 18課程背景隨機(jī)計(jì)算機(jī)技術(shù)的開(kāi)展,數(shù)字圖像的采集和應(yīng)用,特別是加工技術(shù)近年來(lái)得到極大的重視和長(zhǎng)足的進(jìn)展,出現(xiàn)了許多有關(guān)的新理論、新方法、新算法、新手段和新設(shè)備,并已使得數(shù)字圖像技術(shù)在科學(xué)研究、工業(yè)生產(chǎn)、醫(yī)療衛(wèi)生、教育、娛樂(lè)、管理和通信等方面得到了廣泛的應(yīng)用,對(duì)失去社會(huì)開(kāi)展、改善人們的生活水平都起到了重要的作用。
正因?yàn)閳D像處理在社會(huì)生活中有著越來(lái)越重要的作用,這也就表達(dá)了我們學(xué)習(xí)這門(mén)課程的必要性。而通過(guò)課程的學(xué)習(xí)可以讓我們掌握一些圖像處理的初步技術(shù),從而為今后在圖像處理的學(xué)習(xí)方面打下了根底。
二.課程選題圖像的讀取,顯示,保存等處理,通過(guò)MFC,做了灰度直方圖,圖像的幾何變換,圖像平滑等操作設(shè)計(jì)算法灰度直方圖灰度直方圖〔histogram〕是灰度級(jí)的函數(shù),描述的是圖像中每種灰度級(jí)像素的個(gè)數(shù),反映圖像中每種灰度出現(xiàn)的頻率。橫坐標(biāo)是灰度級(jí),縱坐標(biāo)是灰度級(jí)出現(xiàn)的頻率。依據(jù)定義,假設(shè)圖像具有L〔通常L=256,即8位灰度級(jí)〕級(jí)灰度,那么大小為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)簡(jiǎn)單的空間變換,如圖像平移、鏡像、縮放和旋轉(zhuǎn)。主要是通過(guò)線性代數(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)對(duì)應(yīng)的(height-1,0)像素值,然后依次賦值該行的像素?cái)?shù)據(jù);最后當(dāng)前行賦值結(jié)束,依次下一行。重點(diǎn)是找到每行的第一個(gè)像素點(diǎn)即可。4.圖像旋轉(zhuǎn)圖像饒?jiān)c(diǎn)旋轉(zhuǎn)順時(shí)針theta角矩陣變換如下:注意BMP圖像(0,0)左下角3.圖像平滑領(lǐng)域平滑圖像簡(jiǎn)單平滑是指通過(guò)鄰域簡(jiǎn)單平均對(duì)圖像進(jìn)行平滑處理的方法,用這種方法在一定程度上消除原始圖像中的噪聲、降低原始圖像比照度的作用。它利用卷積運(yùn)算對(duì)圖像鄰域的像素灰度進(jìn)行平均,從而到達(dá)減小圖像中噪聲影響、降低圖像比照度的目的。但鄰域平均值主要缺點(diǎn)是在降低噪聲的同時(shí)使圖像變得模糊,特別在邊緣和細(xì)節(jié)處,而且鄰域越大,在去噪能力增強(qiáng)的同時(shí)模糊程度越嚴(yán)重。高斯平滑為了克服簡(jiǎn)單局部平均法的弊端(圖像模糊),目前已提出許多保持邊緣、細(xì)節(jié)的局部平滑算法。它們的出發(fā)點(diǎn)都集中在如何選擇鄰域的大小、形狀和方向、參數(shù)加平均及鄰域各店的權(quán)重系數(shù)等。圖像高斯平滑也是鄰域平均的思想對(duì)圖像進(jìn)行平滑的一種方法,在圖像高斯平滑中,對(duì)圖像進(jìn)行平均時(shí),不同位置的像素被賦予了不同的權(quán)重。在圖像簡(jiǎn)單平滑中,算法利用卷積模板逐一處理圖像中每個(gè)像素,這一過(guò)程可以形象地比作對(duì)原始圖像的像素一一進(jìn)行過(guò)濾整理,在圖像處理中把鄰域像素逐一處理的算法過(guò)程稱(chēng)為濾波器。平滑線性濾波器的工作原理是利用模板對(duì)鄰域內(nèi)像素灰度進(jìn)行加權(quán)平均,也稱(chēng)為均值濾波器。高斯平滑與簡(jiǎn)單平滑不同,它在對(duì)鄰域內(nèi)像素進(jìn)行平均時(shí),給予不同位置的像素不同的權(quán)值。模板越靠近鄰域中心位置,其權(quán)值越高。在圖像細(xì)節(jié)進(jìn)行模糊時(shí),可以更多的保存圖像總體的灰度分布特征。中值濾波在使用鄰域平均法去噪的同時(shí)也使得邊界變得模糊。而中值濾波是非線性的圖像處理方法,在去噪的同時(shí)可以兼顧到邊界信息的保存。選一個(gè)含有奇數(shù)點(diǎn)的窗口W,將這個(gè)窗口在圖像上掃描,把窗口中所含的像素點(diǎn)按灰度級(jí)的升或降序排列,取位于中間的灰度值來(lái)代替該點(diǎn)的灰度值。例如選擇濾波的窗口如下列圖,是一個(gè)一維的窗口,待處理像素的灰度取這個(gè)模板中灰度的中值,濾波過(guò)程如下:常用的窗口還有方形、十字形、圓形和環(huán)形。不同形狀的窗口產(chǎn)生不同的濾波效果,方形和圓形窗口適合外輪廓線較長(zhǎng)的物體圖像,而十字形窗口對(duì)有尖頂角狀的圖像效果好。中值濾波對(duì)于消除孤立點(diǎn)和線段的干擾十分有用,尤其是對(duì)于二進(jìn)噪聲,但對(duì)消除高斯噪聲的影響效果不佳。對(duì)于一些細(xì)節(jié)較多的復(fù)雜圖像,可以屢次使用不同的中值濾波。BMP文件格式BMP文件頭:BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類(lèi)型、文件大小和位圖起始位置等信息。其結(jié)構(gòu)定義如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;//位圖文件的類(lèi)型,必須為BMDWORDbfSize;//位圖文件的大小,以字節(jié)為單位WORDbfReserved1;//位圖文件保存字,必須為0WORDbfReserved2;//位圖文件保存字,必須為0DWORDbfOffBits;//位圖數(shù)據(jù)的起始位置,以相對(duì)于位圖//文件頭的偏移量表示,以字節(jié)為單位}BITMAPFILEHEADER;位圖信息頭:BMP位圖信息頭數(shù)據(jù)用于說(shuō)明位圖的尺寸等信息。typedefstructtagBITMAPINFOHEADER{DWORDbiSize;//本結(jié)構(gòu)所占用字節(jié)數(shù)LONGbiWidth;//位圖的寬度,以像素為單位LONGbiHeight;//位圖的高度,以像素為單位WORDbiPlanes;//目標(biāo)設(shè)備的級(jí)別,必須為1WORDbiBitCount//每個(gè)像素所需的位數(shù),必須是1(雙色),//4(16色),8(256色)或24(真彩色)之一DWORDbiCompression;//位圖壓縮類(lèi)型,必須是0(不壓縮),//1(BI_RLE8壓縮類(lèi)型)或2(BI_RLE4壓縮類(lèi)型)之一DWORDbiSizeImage;//位圖的大小,以字節(jié)為單位LONGbiXPelsPerMeter;//位圖水平分辨率,每行像素?cái)?shù)LONGbiYPelsPerMeter;//位圖垂直分辨率,每列像素?cái)?shù)DWORDbiClrUsed;//位圖實(shí)際使用的顏色表中的顏色數(shù)DWORDbiClrImportant;//位圖顯示過(guò)程中重要的顏色數(shù)}BITMAPINFOHEADER;顏色表:顏色表用于說(shuō)明位圖中的顏色,它有假設(shè)干個(gè)表項(xiàng),每一個(gè)表項(xiàng)是一個(gè)RGBQUAD類(lèi)型的結(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ù)個(gè)數(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個(gè) } else { num=0; sfSize=m_nWidth*m_nHeight*3; } //注意:假設(shè)最后一行像素缺乏,我默認(rèn)處理為完整的一行,缺乏補(bǔ)00H //總之處理后的圖像總是m*n且為4倍數(shù),每行都完整存在 /*更改文件頭信息定義臨時(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); /*臨時(shí)變量存儲(chǔ)的像素與sfSize相同new和delete有效的進(jìn)行動(dòng)態(tài)內(nèi)存的分配和釋放*/ unsignedchar*ImageSize; ImageSize=newunsignedchar[sfSize]; intPlace;//建立臨時(shí)坐標(biāo)記錄起始坐標(biāo)(0,0)平移過(guò)來(lái)的位置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)像素平移過(guò)去 intcountWidth=0;//記錄每行的像素個(gè)數(shù),滿行時(shí)變回0 intnumber=0;//數(shù)字記錄使用的像素行數(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;//記錄每行的像素個(gè)數(shù),滿行時(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;//記錄每行像素個(gè)數(shù),滿行時(shí)變回0 intPlace;//每列位置 intnumber=0;//像素行數(shù) Place=(m_nWidth*3)*(m_nHeight-1-1);//0行存儲(chǔ) //翻轉(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}}; //翻開(kāi)臨時(shí)的圖片 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)行動(dòng)態(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; //對(duì)圖像進(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]); } } } //對(duì)新圖像賦值 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)位置 //選取它為中心的周?chē)?個(gè)點(diǎn)像素〔注意一個(gè)點(diǎn)為RGB〕 intH[9]={0,0,0,0,0,0,0,0,0}; intHWS=3;//維數(shù)為三維 //圖像增強(qiáng):平滑它要獲取源圖像周?chē)?個(gè)點(diǎn)的矩陣乘以模板9個(gè)點(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024綠化工程承包合同范文
- 2024版防火卷簾門(mén)質(zhì)保期內(nèi)維修服務(wù)合同
- 2024酒店經(jīng)營(yíng)權(quán)質(zhì)押貸款合同
- 2024年虛擬現(xiàn)實(shí)游戲開(kāi)發(fā)與授權(quán)協(xié)議
- 2024生產(chǎn)車(chē)間設(shè)備銷(xiāo)售及安裝與環(huán)保服務(wù)合同3篇
- 2024物流設(shè)計(jì)、項(xiàng)目規(guī)劃合同
- 2024旋挖樁基礎(chǔ)施工質(zhì)量安全監(jiān)理合同范本3篇
- 2024版水電工程勞務(wù)合同
- 2024藝術(shù)品買(mǎi)賣(mài)合同中的真?zhèn)舞b別和交易方式
- 2024環(huán)保技術(shù)研發(fā)合同
- 法人代持免責(zé)任協(xié)議書(shū)(2篇)
- 閘站監(jiān)理實(shí)施細(xì)則
- 2024-2025學(xué)年湖北省恩施土家族苗族自治州數(shù)學(xué)六上期末檢測(cè)試題含解析
- 2024年中國(guó)寵物殯葬服務(wù)行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢(xún))
- 礦用電纜市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 失蹤老人歸家協(xié)議書(shū)模板
- 2024年初三數(shù)學(xué)競(jìng)賽考試試題
- 單位委托員工辦理水表業(yè)務(wù)委托書(shū)
- 2024年江蘇省蘇州市中考英語(yǔ)真題
- 02S501-2 雙層井蓋圖集標(biāo)準(zhǔn)
- 醫(yī)藥制造企業(yè)資本結(jié)構(gòu)優(yōu)化研究以貴州百靈為例
評(píng)論
0/150
提交評(píng)論