【图像处理:频率域平滑与锐化】理想滤波器,巴特沃思滤波器,高斯滤波器

【频率域平滑、锐化滤波器】理想滤波器,巴特沃思滤波器,高斯滤波器

一、背景知识

本文主要介绍频率域滤波器,此处的频率域是基于傅立叶变换得出。

在一幅图像中, 低频对应图像变化缓慢的部分,即图像大致外观和轮廓。 高频部分对应图像变化剧烈的部分即图像细节。低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。即低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界即过滤掉图像细节,造成图像不同程序上的模糊。

这里考虑三种滤波器,分别为理想滤波器、巴特沃思滤波器和高斯滤波器。这三种滤波器分别有其低通滤波器和高通滤波器。

这三种滤波器涵盖了从非常尖锐(理想)到非常平坦(高斯)范围的滤波器函数。巴特沃思滤波器有一个参数,称为滤波器的”阶数”。当此参数的值较高时,巴特沃思滤波器接近理想滤波器。因此,巴特沃思滤波器可看作两种”极端”滤波器的过渡。

二、理想滤波器原理及实现

1.理想低通滤波器

我们所想像的最简单的低通滤波器是”截断”傅里叶变换中所有高频部分,这些成分处在距变换原点的距离比指定距离D0要更远得多的位置。这种滤波器被称为二维理想低通滤波器(ILPF),其变换函数为:

【图像处理:频率域平滑与锐化】理想滤波器,巴特沃思滤波器,高斯滤波器

其中,D0是指定的非负数值,D(u,w)是(u,v)点距频率矩形原点的距离。如果要研究的图像尺寸为M*X,它的变换也有相同的尺寸,由于变换被中心化了,所以频率矩阵的中心在(u,v)=(M/2,N/2)处。在这种情况下,从点(u,v)到傅立叶变换中心的距离如下所示:(参照傅立叶变换和频率域)

【图像处理:频率域平滑与锐化】理想滤波器,巴特沃思滤波器,高斯滤波器

需要注意理想低通滤波非常不实用,在使用中会产生”振铃”(输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡)。然而,因为理想滤波器可以在计算机上实现,所以作为滤波概念发展的一部分,研究滤波器的特性非常有用。

; 2.理想低通滤波器的实现:

步骤一:将图像扩充为适合离散傅立叶变换的图像尺寸大小。

Mat Filter::ImageChangeForDft(const Mat & input)
{
    int width = getOptimalDFTSize(input.cols);
    int height = getOptimalDFTSize(input.rows);
    Mat output;
    copyMakeBorder(input,output,0,height-input.rows,0,width-input.cols,BORDER_CONSTANT,Scalar::all(0));
    output.convertTo(output,CV_32FC1);
    return output;
}

核心函数介绍:

int getOptimalDFTSize(int vecsize);

int类型的vecsize,向量尺寸,一般是图片的宽或高。

该函数可以自动计算最适合进行离散傅里叶变换的图像尺寸大小,从而提高计算速度。

CV_EXPORTS_W void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right,int borderType, const Scalar& value = Scalar() );

src:输入图像。 dst:输出图像(类型和输入图像类型一致,大小为:Size(src.cols+left+right,src.rows+top+bottom))。
topbottomleftright: 这4个参数指定输出图像4个方向要扩展多少个像素,
bordertype:已拷贝的原图像长方形的边界的类型:
IPL_BORDER_CONSTANT:填充边界为固定值,值由函数最后一个参数指定。
IPL_BORDER_REPLICATE:边界用上下行或者左右列来复制填充。
value:如果border==BORDER_CONSTANT,value为border value。

步骤二:根据公式截断,获得滤波器ILPF

Mat Filter::IdealLowKernel(Mat &input,const float sigma) {
    Mat result(input.size(),CV_32FC1);
    float d0=sigma;
    for(int i=0;i<input.rows ; i++ )
    {
        for(int j=0; j<input.cols ; j++ )
        {
            float d = sqrt(pow((i - input.rows/2),2) + pow((j - input.cols/2),2));

            if (d  d0)
            {
                result.at<float>(i,j)=1;
            }
            else
            {
                result.at<float>(i,j)=0;
            }
        }
    }
    return result; }

float d = sqrt(pow((i – input.rows/2),2) + pow((j – input.cols/2),2))

注意:该公式是基于频谱居中后的频谱图进行到中心点的距离计算,所以dft之后需要将频谱居中再计算

理想低通滤波”截断”傅里叶变换中所有高频部分,这些成分处在距变换原点的距离比指定距离D0要更远得多的位置,根据点(u,v)到傅立叶变换中心的距离进行截断。

步骤三:空间域转频率域,与滤波器ILPF相乘,再转回空间域

Mat Filter::FrequencyFilter(Mat &input,Mat &blur)
{

    Mat plane[] = {input , Mat::zeros(input.size() , CV_32FC1)};
    Mat dftMat;
    merge(plane,2,dftMat);
    dft(dftMat,dftMat);

    split(dftMat,plane);

    int cx = plane[0].cols/2;
    int cy = plane[0].rows/2;

    Mat part1_r(plane[0],Rect(0,0,cx,cy));
    Mat part2_r(plane[0],Rect(cx,0,cx,cy));
    Mat part3_r(plane[0],Rect(0,cy,cx,cy));
    Mat part4_r(plane[0],Rect(cx,cy,cx,cy));

    Mat temp;
    part1_r.copyTo(temp);
    part4_r.copyTo(part1_r);
    temp.copyTo(part4_r);

    part2_r.copyTo(temp);
    part3_r.copyTo(part2_r);
    temp.copyTo(part3_r);

    Mat part1_i(plane[1],Rect(0,0,cx,cy));
    Mat part2_i(plane[1],Rect(cx,0,cx,cy));
    Mat part3_i(plane[1],Rect(0,cy,cx,cy));
    Mat part4_i(plane[1],Rect(cx,cy,cx,cy));

    part1_i.copyTo(temp);
    part4_i.copyTo(part1_i);
    temp.copyTo(part4_i);

    part2_i.copyTo(temp);
    part3_i.copyTo(part2_i);
    temp.copyTo(part3_i);

    Mat blur_r,blur_i,BLUR;
    multiply(plane[0], blur, blur_r);
    multiply(plane[1], blur,blur_i);
    Mat plane1[]={blur_r, blur_i};
    merge(plane1,2,BLUR);

    idft( BLUR, BLUR);
    split(BLUR,plane);
    magnitude(plane[0],plane[1],plane[0]);
    normalize(plane[0],plane[0],1,0,CV_MINMAX);
    Mat result;
    normalize(plane[0], result, 0, 255, CV_MINMAX);
    return result;
}

基于以上算法,可以更换滤波器达到不同的图像增强效果。

3.理想高通滤波器:

剔除低频,即当d

Original: https://blog.csdn.net/weixin_48846514/article/details/127542697
Author: penenz
Title: 【图像处理:频率域平滑与锐化】理想滤波器,巴特沃思滤波器,高斯滤波器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/633247/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球