圖像處理之原理 - 中值濾波


一 中值濾波概念

中值濾波算法以某像素的領域圖像區域中的像素值的排序為基礎,將像素領域內灰度的中值代替該像素的值[1];

如:以3*3的領域為例求中值濾波中像素5的值

 

                  圖1

1)int pixel[9]中存儲像素1,像素2...像素9的值;

2)對數組pixel[9]進行排序操作;

3)像素5的值即為數組pixel[9]的中值pixel[4]

    中值濾波對處理椒鹽噪聲非常有效。

 

二 中值濾波代碼實現

百度雲地址

以下為MedianFilter文件中class MyImage中的中值濾波功能的實現代碼:

 1 //中值濾波:本算法采用3*3的領域范圍
 2 void MyImage::MedianFilterOper()
 3 {
 4     //0. 准備:獲取圖片的寬,高和像素信息,
 5     int const num = 3 * 3;
 6     unsigned char pixel[num] = { 0 }; //保存領域的像素值
 7     int width = m_bmpInfo.biWidth; //位圖的寬度
 8     int height = m_bmpInfo.biHeight; //位圖的高度
 9     int widthbyte = (width * m_bmpInfo.biBitCount / 8 + 3) / 4 * 4;
10     //相對於中心點,3*3領域中的點需要偏移的位置
11     int delta[3 * 3][2] = {
12         { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, -1 }, { 0, 0 }, { 0, 1 }, { 1, -1 }, { 1, 0 }, {1, 1}
13     };
14     
15     //1. 中值濾波
16     for (int i = 1; i < height-1; ++i)
17     {
18         for (int j = 1; j < widthbyte-1; ++j)
19         {
20             //1.1 提取領域值
21             for (int k = 0; k < num; ++k)
22             {
23                 pixel[k] = m_imagedata[(i + delta[k][0])*widthbyte + j + delta[k][1]];
24             }
25             //1.2 排序:利用快排函數
26             qsort(pixel, num, sizeof(unsigned char), compa);
27             //1.3 獲取該中心點的值
28             m_imagedata[i*widthbyte + j] = pixel[num / 2];
29         }
30     }
31 }
View Code

 

三 程序運行效果及總結

    執行MedianFilter\\可執行文件\\MedianFilter.exe文件,MedianFilter\\可執行文件\\Image文件夾下將根據初始圖片init.bmp生成中值濾波后的圖片result.bmp,對比如下:

 

              圖2:init.bmp                                    圖3:result.bmp

總結:因為可能對圖片格式的理解仍然不到位,程序的執行效果雖然去除了大部分的噪聲,但並未完全去除,還需要優化。

 

四 參考文獻

[1] 岡薩雷斯等數字圖像處理(第三版)[M].電子工業出版社,2011:96

[2] 宋亮等淺談圖像處理與BMP圖像文件格式.[EB/OL].

http://wenku.baidu.com/link?url=8rmY9e-j_9n1zlgrrm_ptZRZw_BoZp754gNwgPoCiqmGPQ0iNU7nPGPIp4_7PfVncSDohLlVFChKGlsneYJUzrS7L70JdDZpkVS12A_bEO3, 2014

[3] 江南煙雨. C++讀取、旋轉和保存bmp圖像文件編程實現[EB/OL].

http://blog.csdn.net/xiajun07061225/article/details/6633938, 2011

備注:MedianFilter文件夾中的“讀取圖片”和“保存圖片”的代碼參考[2][3]

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM