版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、東華大學實驗報告課程 數(shù)字圖像處理 名稱 數(shù)字圖像變換 實驗名稱: 鄰域平均法(box模板)和中值濾波處理一、 實驗目的圖像變換是數(shù)字圖像處理中的一種綜合變換,如直方圖變換、幾何變換等。通過本實驗,使得學生掌握兩種變換的程序?qū)崿F(xiàn)方法。二、 實驗任務 請設計程序,分別用鄰域平均法,其模板為:和中值濾波法對testnoise圖像進行去噪處理(中值濾波的模板的大小也設為33)。三、實驗環(huán)境本實驗在Windows平臺上進行,對內(nèi)存及cpu主頻無特別要求,使用VC或者MINGW(gcc)編譯器均可。四、設計思路介紹代碼的框架結構、所用的數(shù)據(jù)結構、各個類的介紹(類的功能、類中方法的功能、類的成員變量的作用
2、)、各方法間的關系試驗要求中以給出大致的編程思路和源代碼以及代碼注釋,只有黑框部分需要自己填寫。在此不進行贅述。五、具體實現(xiàn) 實現(xiàn)設計思路中定義的所有的數(shù)據(jù)類型,對每個操作給出實際算法。對主程序和其他模塊也都需要寫出實際算法。 注意:源代碼中要加上注釋。代碼:(紅色為重點代碼)(3*3)/*-利用第一次實驗課提供的 dhc.h 和 dhc.c文件以獲取位圖的高 寬 以及從文件頭到實際的位圖數(shù)據(jù)的偏移字節(jié)數(shù),從而實現(xiàn)對位圖實際數(shù)據(jù)的操作。-*/#include #include #include #include hdr.h/*-定義結構指針-*/struct bmphdr *hdr; /定義用
3、于直方圖變量unsigned char *bitmap,*count,*new_color;/*-main()函數(shù)編寫-*/int main() /定義整數(shù) i, j 用于函數(shù)循環(huán)時的,nr_pixels為圖像中像素的個數(shù)int i, j ,nr_pixels,nr_w,nr_h;/定義兩個文件指針分別用于提取原圖像的數(shù)據(jù)和生成直方圖均衡化后的圖像FILE *fp, *fpnew;/定義主函數(shù)的參數(shù)包括:輸入的位圖文件名和輸出的位圖文件名,此處內(nèi)容可以不要,在DOS下執(zhí)行命令的時候再臨時輸入也可,為了方便演示,我這里直接把函數(shù)的參數(shù)確定了。/argc=3;/argv1=test.bmp;/ar
4、gv2=testzf.bmp;/參數(shù)輸入出錯顯示/*if (argc != 3) printf(please input the name of input and out bitmap filesn);exit(1);*/ 獲取位圖文件相關信息/hdr = get_header(argv1);hdr = get_header(testnoise.bmp);if (!hdr) exit(1);/以二進制可讀方式打開輸入位圖文件fp = fopen(testnoise.bmp, rb);if (!fp) printf(File open error!n);exit(1);/ 文件指針指向數(shù)據(jù)區(qū)域
5、fseek(fp, hdr-offset, SEEK_SET);/計算位圖像素的個數(shù)nr_pixels = hdr-width * hdr-height;nr_w = hdr-width;nr_h = hdr-height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc(nr_w+2)*(+nr_h+2);/讀取位圖數(shù)據(jù)到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);/因為圖像邊緣無法使用鄰域平均,所以根據(jù)鄰近顏色填補圖像的周圍一圈,存入coun
6、t數(shù)組中/中心圖像存入countfor(i=nr_w+3;i(nr_w+2)*(+nr_h+2)-nr_w-3;i+)j=i/(nr_w+2);if(i%(nr_w+2)!=0&(i+1)%(nr_w+2)!=0) counti=bitmapi-nr_w-1-2*j;/填補第一排for(i=1;inr_w+1;i+)counti=bitmapi-1;/填補最后一排for(i=1;inr_w+1;i+)count(nr_w+2)*(nr_h+1)+i=bitmapnr_w*(nr_h-1)+i-1;/填補左邊一排for(i=0;inr_h+3;i+)counti*(nr_w+2)=counti*
7、(nr_w+2)+1;/填補右邊一排for(i=0;inr_h+3;i+)count(i+1)*(nr_w+2)-1=count(i+1)*(nr_w+2)-2;/鄰域平均3*3for(j=nr_w+3,i=0;j(nr_w+2)*(+nr_h+2)-nr_w-3;j+)if(j%(nr_w+2)!=0&(j+1)%(nr_w+2)!=0) new_colori=(countj+countj-1+countj+1+countj-nr_w-2+countj-1-nr_w-2+countj+1-nr_w-2+countj+nr_w+2+countj-1+nr_w+2+ countj+1+nr_w+
8、2)/9,i+;/結果存入bitmap中for (i = 0; i signature, 2, 1, fpnew);fwrite(&hdr-size, 4, 1, fpnew);fwrite(hdr-reserved, 4, 1, fpnew);fwrite(&hdr-offset, 4, 1, fpnew);fwrite(&hdr-hdr_size, 4, 1, fpnew);fwrite(&hdr-width, 4, 1, fpnew);fwrite(&hdr-height, 4, 1, fpnew);fwrite(&hdr-nr_planes, 2, 1, fpnew);fwrite(&
9、hdr-bits_per_pixel, 2, 1, fpnew);fwrite(&hdr-compress_type, 4, 1, fpnew);fwrite(&hdr-data_size, 4, 1, fpnew);fwrite(&hdr-resol_hori, 4, 1, fpnew);fwrite(&hdr-resol_vert, 4, 1, fpnew);fwrite(&hdr-nr_colors, 4, 1, fpnew);fwrite(&hdr-important_color, 4, 1, fpnew);if (hdr-offset 54)fwrite(hdr-info, (hdr
10、-offset - 54), 1, fpnew);/直方圖均衡化的數(shù)據(jù)(bitmap)賦值fwrite(bitmap, nr_pixels, 1, fpnew);/關閉fclose(fpnew);/釋放內(nèi)存(優(yōu)化程序必需)free(hdr);free(bitmap);free(new_color);free(count);return 0;/*-利用第一次實驗課提供的 dhc.h 和 dhc.c文件以獲取位圖的高 寬 以及從文件頭到實際的位圖數(shù)據(jù)的偏移字節(jié)數(shù),從而實現(xiàn)對位圖實際數(shù)據(jù)的操作。-*/#include #include #include #include hdr.h/*-定義結構指針
11、-*/struct bmphdr *hdr; /定義用于直方圖變量unsigned char *bitmap,*count,*new_color;/*-main()函數(shù)編寫-*/int main() /定義整數(shù) i, j 用于函數(shù)循環(huán)時的,nr_pixels為圖像中像素的個數(shù)int i, j, m, n, nr_pixels,nr_w,nr_h,temp,t9;/定義兩個文件指針分別用于提取原圖像的數(shù)據(jù)和生成直方圖均衡化后的圖像FILE *fp, *fpnew;/定義主函數(shù)的參數(shù)包括:輸入的位圖文件名和輸出的位圖文件名,此處內(nèi)容可以不要,在DOS下執(zhí)行命令的時候再臨時輸入也可,為了方便演示,我
12、這里直接把函數(shù)的參數(shù)確定了。/argc=3;/argv1=test.bmp;/argv2=testzf.bmp;/參數(shù)輸入出錯顯示/*if (argc != 3) printf(please input the name of input and out bitmap filesn);exit(1);*/ 獲取位圖文件相關信息/hdr = get_header(argv1);hdr = get_header(testnoise.bmp);if (!hdr) exit(1);/以二進制可讀方式打開輸入位圖文件fp = fopen(test.bmp, rb);if (!fp) printf(Fil
13、e open error!n);exit(1);/ 文件指針指向數(shù)據(jù)區(qū)域fseek(fp, hdr-offset, SEEK_SET);/計算位圖像素的個數(shù)nr_pixels = hdr-width * hdr-height;nr_w = hdr-width;nr_h = hdr-height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc(nr_w+2)*(+nr_h+2);/讀取位圖數(shù)據(jù)到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);/因為圖
14、像邊緣無法使用鄰域平均,所以根據(jù)鄰近顏色填補圖像的周圍一圈,存入count數(shù)組中/中心圖像存入countfor(i=nr_w+3;i(nr_w+2)*(+nr_h+2)-nr_w-3;i+)j=i/(nr_w+2);if(i%(nr_w+2)!=0&(i+1)%(nr_w+2)!=0) counti=bitmapi-nr_w-1-2*j;/填補第一排for(i=1;inr_w+1;i+)counti=bitmapi-1;/填補最后一排for(i=1;inr_w+1;i+)count(nr_w+2)*(nr_h+1)+i=bitmapnr_w*(nr_h-1)+i-1;/填補左邊一排for(i=
15、0;inr_h+3;i+)counti*(nr_w+2)=counti*(nr_w+2)+1;/填補右邊一排for(i=0;inr_h+3;i+)count(i+1)*(nr_w+2)-1=count(i+1)*(nr_w+2)-2;/中值平均3*3for(j=nr_w+3,i=0;j(nr_w+2)*(+nr_h+2)-nr_w-3;j+)if(j%(nr_w+2)!=0&(j+1)%(nr_w+2)!=0) t0=countj;t1=countj-1;t2=countj+1;t3=countj-nr_w-2;t4=countj-1-nr_w-2;t5=countj+1-nr_w-2;t6=
16、countj+nr_w+2;t7=countj-1+nr_w+2;t8=countj+1+nr_w+2;for(m=0;m9;m+)for(n=0;ntn+1)temp=tn;tn=tn+1;tn+1=temp;new_colori=t4;i+;/結果存入bitmap中for (i = 0; i signature, 2, 1, fpnew);fwrite(&hdr-size, 4, 1, fpnew);fwrite(hdr-reserved, 4, 1, fpnew);fwrite(&hdr-offset, 4, 1, fpnew);fwrite(&hdr-hdr_size, 4, 1, f
17、pnew);fwrite(&hdr-width, 4, 1, fpnew);fwrite(&hdr-height, 4, 1, fpnew);fwrite(&hdr-nr_planes, 2, 1, fpnew);fwrite(&hdr-bits_per_pixel, 2, 1, fpnew);fwrite(&hdr-compress_type, 4, 1, fpnew);fwrite(&hdr-data_size, 4, 1, fpnew);fwrite(&hdr-resol_hori, 4, 1, fpnew);fwrite(&hdr-resol_vert, 4, 1, fpnew);fw
18、rite(&hdr-nr_colors, 4, 1, fpnew);fwrite(&hdr-important_color, 4, 1, fpnew);if (hdr-offset 54)fwrite(hdr-info, (hdr-offset - 54), 1, fpnew);/直方圖均衡化的數(shù)據(jù)(bitmap)賦值fwrite(bitmap, nr_pixels, 1, fpnew);/關閉fclose(fpnew);/釋放內(nèi)存(優(yōu)化程序必需)free(hdr);free(bitmap);free(new_color);free(count);return 0;得出實驗結果圖像后,比較這兩種方法去噪的效果好壞,并分析具體原因。通過比較,鄰域平均法在降低噪聲的同時,會使圖像產(chǎn)生模糊;中值濾波在降低噪聲的同時,能夠較好的保持圖像邊緣,不過我感覺有點水粉畫的效果,讓圖像有點失真。完成上述工作后,使用程序進行驗證分析:使用鄰域平均法時,33和55模板大小對圖像進行處理的效果有何差別?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文山2025年云南文山市公安局第一批警務輔助人員招聘47人筆試歷年參考題庫附帶答案詳解
- 怒江2025年云南怒江州財政局公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 廣州2024年廣東廣州市海珠區(qū)江海街道基層公共就業(yè)創(chuàng)業(yè)服務崗位招募筆試歷年參考題庫附帶答案詳解
- 2025年納豆香菇絲項目可行性研究報告
- 2025年電動橋式圓角擋閘項目可行性研究報告
- 2025至2031年中國潔凈吹淋傳遞窗行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國朱雀系列外墻磚行業(yè)投資前景及策略咨詢研究報告
- 2025年插件式鋁基板項目可行性研究報告
- 2025年定柱懸臂起重機項目可行性研究報告
- 2025至2031年中國保爾塑像行業(yè)投資前景及策略咨詢研究報告
- 醫(yī)學教程 常見急腹癥的超聲診斷課件
- DB11T 1481-2024生產(chǎn)經(jīng)營單位生產(chǎn)安全事故應急預案評審規(guī)范
- 《氓》教學設計 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 《網(wǎng)店運營與管理》第3版 課件全套 白東蕊 第1-11章 網(wǎng)上開店概述- 移動網(wǎng)店運營
- 2024年全國國家電網(wǎng)招聘之電網(wǎng)計算機考試歷年考試題(附答案)
- 化學元素周期表注音版
- 藥物過敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規(guī)范
- 2024福建省廈門市總工會擬錄用人員筆試歷年典型考題及考點剖析附答案帶詳解
- 四川省康定市大槽門金礦資源儲量核實報告
- DL-T-805.1-2011火電廠汽水化學導則第1部分:鍋爐給水加氧處理導則
評論
0/150
提交評論