圖像處理之中值濾波原理及C++實現


1. 中值濾波原理

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

如:以3*3的領域為例求中值濾波中像素5的值
在這里插入圖片描述

  1. int pixel[9]中存儲像素1,像素2...像素9的值;
  2. 對數組pixel[9]進行排序操作;
  3. 像素5的值即為數組pixel[9]的中值pixel[4]。

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

2. C++代碼實現

void medianFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)  
{  
      
    memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );  
    for (int j=1;j<height-1;j++)  
    {  
        for (int i=1;i<width-1;i++)  
        {  
            int k = 0;  
            unsigned char window[9];  
            for (int jj = j - 1; jj < j + 2; ++jj)  
                for (int ii = i - 1; ii < i + 2; ++ii)  
                    window[k++] = corrupted[jj * width + ii];  
            //   Order elements (only half of them)  
            for (int m = 0; m < 5; ++m)  
            {  
                int min = m;  
                for (int n = m + 1; n < 9; ++n)  
                    if (window[n] < window[min])  
                        min = n;  
                //   Put found minimum element in its place  
                unsigned char temp = window[m];  
                window[m] = window[min];  
                window[min] = temp;  
            }  
            smooth[ j*width+i ] = window[4];  
        }  
    }  
}  

3. 最后


免責聲明!

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



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