5.均值濾波


一、均值濾波概念

     1 鄰域

   

 

 

    2.卷積

        如上圖所示,是通過對目標像素的鄰域進行加權得到新的目標像素的值,其中這個加權矩陣我們叫做鄰域算子(局部算子)。

  

      其中g(x, y)就是我們濾波后希望得到的函數,h(x, y)就是鄰域算子,f(x, y)就是原圖。那么有公式可以表示:

 

    3 均值濾波原理

 

 

     均值濾波其實就是對目標像素及周邊像素取平均值后再填會目標像素來實現濾波目的的方法。

 

Mat blur(Mat& img)
{
    if (img.data)
    {
        int height = img.rows;
        int width = img.cols;
        int channel = img.channels();

        Mat out = Mat::zeros(height, width, img.type());
        int count = 0;
        int sum = 0;
        int pad = floor((double)kernel_size / 2);
        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                for (int c = 0; c < channel; c++)
                {
                    sum = 0;
                    for (int dy = -pad; dy < pad + 1; dy++)
                    {
                        for (int dx = -pad; dx < pad + 1; dx++)
                        {
                            if ((y - pad > 0) && (x - pad) > 0 && (y + pad) < height && (x + pad) < width)
                                sum += (int)img.at<Vec3b>(y+dy, x+dx)[c];
                        }
                    }
                    sum /= (kernel_size*kernel_size);
                    out.at<Vec3b>(y, x)[c] = (uchar)sum;
                }
            }
        }
        return out;
    }
}

 

      

 


免責聲明!

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



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