精华内容
下载资源
问答
  • 均值滤波中值滤波处理图像
  • 对高斯模糊图像进行高斯平滑滤波处理; 3。对椒盐噪声图像进行中值滤波处理; 4。对雾化图像进行直方图均衡化处理; 5。对模糊图像进行垂直拉伸与灰度拉伸处理; 6。对运动模糊图像进行维纳滤波处理
  • 同态滤波处理图片

    2018-12-17 21:45:25
    用同态滤波处理图片,本人大作业,可以运行,处理效果良好,适合处理暗的很暗,亮的很亮的图片
  • 心电滤波处理的简单示例,包括hanning滤波,5点多项式拟合,1/3 fs陷波,50Hz陷波,中值滤波,求导算法
  • ADC_DMA滤波处理.zip

    2019-09-03 08:38:47
    ADC_DMA滤波处理,二维数组读取平均滤波
  • 本节课学习的事OpenCV关于图像的缩小和滤波处理。在这里会对图像进行简单的滤波处理,只要多加练习就能上手,最重要的是搞清楚各种滤波的不同效果。
  • 图片中值滤波处理

    2014-10-24 10:50:28
    需要配置opencv 本代码用于对图片进行中值滤波处理
  • 各种图像滤波处理程序各种图像滤波处理程序各种图像滤波处理程序
  • 利用Python软件进行滤波处理,简单易操作,其中包括对音频的读取,分离,加噪滤波以及音频保存到特定文件夹。
  • 均值滤波处理图像,matlab代码,可以实现图像去除噪点。
  • 高斯平滑滤波处理

    2013-06-16 08:17:02
    Matlab图像高斯平滑滤波处理(代码).txt
  • 怎样通过naudio库做滤波处理,通过socket接收的音频流数据需要做滤波处理,我用的是naudio库
  • 主要介绍了Python图像滤波处理操作,结合实例形式分析了Python基于ImageFilter类实现的滤波处理相关操作技巧,需要的朋友可以参考下
  • 利用电脑对声音实时采集,并对采集到的声音进行滤波处理
  • 文章目录一、 **图像的高斯滤波处理**1、题目要求2、题目分析3、实现步骤(仅展示部分关键代码)4、结果展示二、 **图像的联合双边滤波处理**1、题目要求2、题目分析3、实现步骤(仅展示部分关键代码)4、结果展示 ...

    完整源码链接 https://github.com/LamyaLi/cvLab

    一、 图像的高斯滤波处理

    1、题目要求

    1)通过调整高斯函数的标准差(sigma)来控制平滑程度;

    给定函数:void Gaussian(const MyImage &input, MyImage &output, double sigma);

    2)滤波窗口大小取为[6* sigma-1]/2* 2+1,[.]表示取整;

    3)利用二维高斯函数的行列可分离性进行加速;

    先对每行进行一维高斯滤波,再对结果的每列进行同样的一维高斯滤波;

    空间滤波=图像卷积;

    高斯滤波=以高斯函数为卷积核的图像卷积。

    2、题目分析

    • 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 [1] 通俗的讲,高斯滤波就是对整幅图像进行[加权平均]的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

    • 滤波窗口大小取为[6* sigma-1]/2* 2+1,其中/代表整除,下去整,这个式子保证size是奇数

    • 滤波窗口大小选取,是基于,高斯分布距离均值3*sigma以外的点的概率密度很低,可以忽略的原理

    • 高斯滤波窗口是可行列分离窗口,由于对称性,分离出的行和列,取值是一样的;且先对图像用行的核遍历卷积一遍得到中间图像,再对中间图像用列的核遍历卷积一遍,得到的结果图,与直接对原图用完整核,效果一样。由于行列分离可以减少计算量,所以实现一定程度的加速

    • 对图像进行滤波处理,需要考虑边界问题。本实验将采用valid的方式,即边界保留原图像的取值

    在这里插入图片描述

    3、实现步骤(仅展示部分关键代码)

    1)生成高斯核,由于采用行列分离,这里仅需利用一维高斯分布概率密度函数,生成(size,1)大小的核

    def getGaussianCore(sigma):
        size = int(sigma * 6 - 1) // 2 * 2 + 1
        centre=size//2
        core= np.zeros([size], np.float32)
        coefficient=1.0/(sigma*((2*math.pi)**0.5))
        sum=0
        for i in range(size):
            core[i]=coefficient*math.exp(-0.5*((i-centre)/sigma)**2)
            sum=sum+core[i]
    
        #归一化
        core=core/sum
        return core
    

    2)行卷积,列卷积,得到结果图并显示,只放了行卷积代码

    def Gaussian(img_input,img_output,sigma):
        #导入图像
        #Boundary是valid方式
        core=getGaussianCore(sigma)
        #行卷积
        for i in range(img_size[0]):
            for j in range(centre,img_size[1]-centre):
                for d in range(3):
                    sum=0
                    for k in range(size):
                        sum=sum+core[k]*img_input[i][j-centre+k][d]
                    img_input2[i][j][d]=sum
        #列卷积
        #按img_out路径保存图片,并显示两张前后对比图
    

    4、结果展示

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    sigma=1时,size=5

    sigma=3时,size=17 核的大小,对时间,去噪效果有很大影响

    所以,sigma取值是时间,去噪效果,模糊效果多种因素的权衡

    二、 图像的联合双边滤波处理

    1、题目要求

    给定函数:function im = jbf(D,C,w, sigma_f, sigma_g)

    其中:D为输入图像;C为引导图像;W为滤波窗口大小;

    sigma_f 为spatial kernel标准差;sigma_g为range kernel 标准差;

    给定公式:

    在这里插入图片描述

    其中:q是p的邻域中的一个像素。 f和g是空间和距离内核,通常以高斯的形式表示,I是输入图像。

    f 是空间滤波器内核,定义为:exp([-d_f2]/[2*sigma_f2])

    其中:d_f 为输入图像I的像素位置差,sigma_f为空间滤波核函数的标准差

    g是距离滤波器内核,定义为:exp([-d_g2]/[2*sigma_g2])

    其中:d_g为引导图像 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NKyRz7yS-1579076000177)(file:///C:/Users/12407/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png)]的像素灰度值差,sigma_g为滤波核函数的标准差

    输入图像I下采样(1/2)得到LR低分辨率图像,再由LR图像上采样2倍得到引导图像。

    注:图像缩放采用双线性插值。

    2、题目分析

    • 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。

    双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。

    双边滤波器的权值不够稳定,而联合双边滤波器就是在双边滤波器的基础上引入了引导图像,使得权值更稳定。

    • 引导图像需要用到双线性插值,由于,实验三将详细解释双线性插值,这里不再展开说明

    • 边界问题。本实验将采用valid的方式,即边界保留原图像的取值

    3、实现步骤(仅展示部分关键代码)

    1)提前计算好一个距离核

    def jbf(source,guide,size,sigma_f,sigma_g):
        starttime=datetime.datetime.now()
        # 联合双边滤波
        # source为输入图像,三维矩阵
        # guide为引导图像,三维矩阵
        # size为滤波窗口大小
        # sigma_f为spatial kernel标准差
        # sigma_g为range kernel 标准差
        #返回处理后的图像的三维矩阵
        # Boundary是valid方式
        des=source.copy()
        distance = np.zeros([size, size], dtype=np.uint8)
        for m in range(size):
            for n in range(size):
                distance[m, n] = (m - size // 2) ** 2 + (n - size // 2) ** 2
    

    2)三层for循环实现卷积遍历,实时计算原图窗口,引导图窗口,根据要求中的计算公式,算出当前(i,j,d)处的灰度值。矩阵对应元素相乘,根据numpy的广播机制直接用* 号即可,非常方便

        for i in range(size//2,guide.shape[0]-size//2):
            for j in range(size//2,guide.shape[1]-size//2):
                for d in range(3):
                    #计算当前窗口范围
                    istart = i - size//2
                    iend = i+size//2
                    jstart = j - size//2
                    jend = j+size//2
                    #原图的当前窗口
                    window_s = source[istart:iend+1, jstart: jend+1, d]
                    #引导图的当前窗口
                    window_g = guide[istart:iend+1, jstart: jend+1, d]
                    #由引导图像的灰度值差计算值域核
                    g = np.exp(-0.5*(window_g - guide[i, j,d])**2 / (sigma_g **2))
                    f=np.exp(-0.5*distance/(sigma_f**2))
    
                    des[i,j,d]=int(np.sum(g*f*window_s)/np.sum(g*f))
        endtime = datetime.datetime.now()
        print('联合双边滤波操作时间:', endtime - starttime)
        return des
    

    4、结果展示

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    基本可以看出,size越大,时间越久,越模糊;除此之外,sigma_f和sigma_g也是重要的参数

    未达到比较理想的去噪效果,size不宜过大,也不宜过小,取5;sigma_f不宜过大,否则失去其保边效果;

    sigma_g应该要比sigma_f大些,使得去噪效果主导。

    展开全文
  • 图像频域滤波处理

    万次阅读 2015-04-23 20:13:23
    编程实现图像的频域滤波处理。 低通滤波处理,比较理想滤波器和实际滤波器的处理效果。 高通滤波处理,比较理想滤波器和实际滤波器的处理效果。

    1.图像频域滤波的基本概念
    空间域和频域滤波的基础都是卷积定理。该定理可以写为
    这里写图片描述
    这里写图片描述
    其中,符号*表示两个函数的卷积,双箭头两边的表达式组成了傅里叶变换对。第一个表达式表明两个空间函数的卷积可以通过计算两个傅里叶变换函数的乘积逆变换得到。在滤波问题上,我们更关注第一个表达式,它构成了整个频域滤波的基础,式中的乘积实际上就是两个二维矩阵F(u,v)和H(u,v)对应元素之间的乘积。
    傅立叶变换相关函数
    MATLAB提供了几个和傅里叶变换相关的函数。其说明如下:
    fft2(F); 二维傅立叶变换
    abs(F); 获得傅立叶频谱
    fftshift(F); 将变换的原点移至频率矩形的中心
    ifft2(F); 二维傅立叶反变换
    real(ifft2(F)); 提取变换后的实部
    imag(ifft2(F)); 提取变换后的虚部
    2. 频域滤波的基本步骤
    频域滤波通常应遵循以下步骤。
    (1)计算原始图像f(x,y)的DFT,得到F(u,v)。
    (2)将频谱F(u,v)的零频点移动到频谱图的中心位置。
    (3)计算滤波器函数H(u,v)与F(u,v)的乘积G(u,v)。
    (4)将频谱G(u,v)的零频点移回到频谱图的左上角位置。
    (5)计算第(4)步计算结果的傅里叶反变换g(x,y)。
    (6)取g(x,y)的实部作为最终滤波后的结果图像。
    按照该步骤,在MATLAB中很容易编程实现频域滤波。滤波能否取得理想结果的关键取决于频域滤波函数H(u,v),常常称之为滤波器,或滤波器传递函数。因为它在滤波中抑制或滤除了频谱中某些频率的分量,而保留其他一些频率不受影响。
    频域滤波的方框图表示
    3 频域滤波器
    1 理想低通滤波器(ILPF)
    这里写图片描述

    D(u,v)是点(u,v)距频率原点的距离,D0为截止频率。如果图像大小为M×N,其变换亦为M×N。中心化之后,矩形中心在(M/2,N/2)

    这里写图片描述

    说明:在半径为D0的圆内,所有频率没有衰减地通过滤波器,而在此半径的圆之外的所有频率完全被衰减掉。虽然这个滤波器不能使电子元件来模拟实现,但可以在计算机中用传递函数实现。由于理想低通滤波器的过度特性过于急峻,所以会产生了振铃现象。
    理想低通滤波器三维透视图
    2 n阶巴特沃斯低通滤波器(BLPF)
    这里写图片描述

    n表示的是巴特沃斯滤波器的次数。随着次数的增加,振铃现象会越来越明显。与理想低通滤波器不同的是,巴特沃斯低通滤波器传递函数并不是在D0处突然不连续。对于具有平滑传递函数的滤波器,我们通常要定义一个截止频率,在该点处H(u,v)会降低为其最大值的某个给定比例。例如当D(u,v)=D0时,H(u,v)=0.5。通常,BLPF的平滑效果好于ILPF。
    巴特沃斯低通滤波器三维透视图
    3 高斯低通滤波器(GLPF)
    这里写图片描述
    D0为截止频率,当D(u,v)=D0 时,滤波器下降到其最大值的0.607,无振铃现象。
    高斯低通滤波器三维透视图
    4 理想高通滤波器(IHPF)
    这里写图片描述
    D(u,v)是点(u,v)距频率原点的距离,D0为截止频率。如果图像大小为M×N,其变换亦为M×N。中心化之后,矩形中心在(M/2,N/2)
    这里写图片描述

    在半径为D0的圆外,所有频率没有衰减地通过滤波器,而在此半径的圆之内的所有频率完全被衰减掉。虽然这个滤波器不能使电子元件来模拟实现,但可以在计算机中用传递函数实现。由于理想高通滤波器的过度特性过于急峻,所以会产生了振铃现象。
    ![理想高通滤波器三维透视图](https://img-blog.csdn.net/20150423211457107)
    5  n阶巴特沃斯高通滤波器(BHPF)
    

    这里写图片描述
    n表示的是巴特沃斯滤波器的次数。随着次数的增加,振铃现象会越来越明显。与理想高通滤波器不同的是,巴特沃斯高通滤波器传递函数并不是在D0处突然不连续。对于具有平滑传递函数的滤波器,我们通常要定义一个截止频率,在该点处H(u,v)会降低为其最大值的某个给定比例。例如当D(u,v)=D0时,H(u,v)=0.5。通常,BHPF的平滑效果好于IHPF。
    巴特沃斯高通滤波器三维透视图
    6 高斯高通滤波器(GHPF)
    这里写图片描述
    高斯高通滤波器三维透视图

    程序代码如下:

    function [U,V] = dftuv( M,N )
    %DFTUV computes meshgrid frequency matrices
    %set up range of variables
    u=0:(M-1);
    v=0:(N-1);
    %compute the indices for use in meshgrid
    idx=find(u > M/2);
    u(idx)=u(idx)-M;
    idy=find(v > N/2);
    v(idy)=v(idy)-N;
    %compute the meshgrid arrays
    [V,U]=meshgrid(v,u);
    End
    function [H,D] = lpfilter( type,M,N,D0,n)
    %lpfilter computes frequency domin lowpass filters
    %H creates the transfer function of a lowpass filter
    
    %use function dftuv to set up the meshgrid arrays needed for computing 
    %the required distances
    [U,V]=dftuv(M,N);
    D=sqrt(U.^2+V.^2);
    %begin filter computations
    switch type
        case 'ideal'
            H=double(D<=D0);
        case 'btw'
            if nargin ==4
                n=1;
            end
            H=1./(1+(D./D0).^(2*n));
        case 'gaussian'
            H=exp(-(D.^2)./(2*(D0^2)));
        otherwise
            error('unknown filter type')  
    end        
    end
    function H = hpfilter( type,M,N,D0,n )
    %hpfilter computes frequency domin highpass filters
    %H creates the transfer function of a highpass filter
    %the transfer function Hhp of a highpass filter is 1-Hlp
    %we can use function lpfilter to generate highpass filters.
    if nargin==4
        n=1; 
    end
    %generate highpass filter.
    hlp=lpfilter(type,M,N,D0,n);
    H=1-hlp;
    
    end
    %图像频域高通滤波主程序
    clear all;
    I=imread('man.bmp'); %读入原图像
    F=fft2(double(I));   %快速傅里叶变换
    F=fftshift(F);       %图像零频点移动到频谱图中心
    
    [M,N]=size(F);       %计算矩阵F的大小
    %调用高通滤波器函数
    H=hpfilter('ideal',M,N,40); 
    %H=hpfilter('btw',M,N,40);
    %H=hpfilter('gaussian',M,N,40);
    
    H=fftshift(H);
    G =F .* H;        %应用滤镜
    %傅里叶反变换
    g=ifft2(G);
    %显示并比较结果
    figure(1),imshow(I);  
    title('显示原图像');
    figure(2),imshow(log(1+abs(F)),[]);  
    title('傅立叶变换后的频谱图');
    figure(3),imshow(H,[]);
    title('高通滤波器频域图像');
    figure(4),imshow(log(1+abs(G)),[]);
    title('高通滤波器处理后的频谱图');
    figure(5),imshow(abs(real(g)),[]);
    title('傅里叶反变换后的图像');

    结论
    在频谱中,低频主要对应图像在平滑区域的总体灰度级分布,而高频对应图像的细节部分,如边缘和噪声。

    展开全文
  • 图像处理 逆滤波处理 C/C++语言实现..........................
  • 【图像处理】-014 空域滤波处理-均值滤波   在上一篇中,我们对图像进行了频率域中的滤波处理,通过在频率域中设计合适的滤波器,对图像的不同频率的分量进行不同处理,比如低通滤波时将低频分量通过高频分量截止...

    【图像处理】-014 空域滤波处理-均值滤波

      在上一篇中,我们对图像进行了频率域中的滤波处理,通过在频率域中设计合适的滤波器,对图像的不同频率的分量进行不同处理,比如低通滤波时将低频分量通过高频分量截止,高通滤波时对高频分量通过低频分量截止。以后我们还会遇到带通、带阻、陷波滤波器等不同形式的滤波器。频域滤波是在频率域中将滤波器与图像相乘得到的。由于频域相乘等空域相乘,那么,在空域中肯定也是可以进行滤波处理的。
      本文将对空间域中图像的滤波处理进行讨论。

    1 理论依据

    1.1 空间滤波器的机理

      空间滤波器由两个要素组成:

    • (1) 一个邻域(典型地时一个较小的矩形);
    • (2) 对该邻域包围的图像像素执行的预定义操作。

      滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤波操作的结果。如果在图像像素上执行的是线性操作,则该滤波器称为线性空间滤波器,否则,滤波器就成为非线性空间滤波器

      对于一个大小为m×nm\times n的模版,通常假设m=2a+1,n=2b+1m=2a+1,n=2b+1,其中a,ba,b为正整数。使用大小为m×nm\times n的滤波器对于大小为M×NM\times N的图像进行线性空间滤波,可以由下式表示:
    (1)g(x,y)=s=aat=bbw(s,t)f(x+s,y+t) g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) \tag{1}
    其中,x,yx,y是可变的,以便ww中的每个像素可访问ff中的每个像素。

    1.2 空间相关与卷积

      在执行线性空间滤波时,必须弄清楚两个相近的概念:相关与卷积。相关是滤波器模版移过图像并计算每个位置乘积之和的处理。卷积的机理相似,但滤波器首先要旋转180°。

      一个大小为m×nm\times n的滤波器w(x,y)w(x,y)与一幅图像f(x,y)f(x,y)做相关操作,可表示为w(x,y)f(x,y)w(x,y) ☆ f(x,y),
    (2)w(x,y)f(x,y)=s=aat=bbw(s,t)f(x+s,y+t) w(x,y) ☆ f(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) \tag{2}
    这一等式对所有位移变量xxyy求值,以便ww的所有元素访问ff的每一个像素,其中我们假设ff已被适当的填充,即a=(m1)/2,b=(n1)/2a=(m-1)/2,b=(n-1)/2,这里,假设m,nm,n是奇数。
      类似的,w(x,y)w(x,y)f(x,y)f(x,y)的卷积表示为w(x,y)f(x,y)w(x,y)\star f(x,y),
    (3)w(x,y)f(x,y)=s=aat=bbw(s,t)f(xs,yt) w(x,y)\star f(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x-s,y-t) \tag{3}
    其中,等式右侧的减号表示翻转ff(即旋转180°)

    2 均值滤波

      平滑线性空间滤波器的输出响应是包含在滤波器模版领域内的像素的简单平均值,这些滤波器有时也成为均值滤波器。使用滤波器模版确定的领域内像素的平均灰度值代替图像中的每个像素的值,这种处理的结果降低了图像灰度的尖锐变化,由于典型地随机噪声由灰度级的急剧变化组成的,因此,常见的平滑处理就是降低噪声。

      一幅M×NM\times N的图像经过一个大小为m×nm\times n的加权均值滤波器滤波的过程可以表示如下:
    (4)g(x,y)=s=aat=bbw(s,t)f(x+s,y+t)s=aat=bbw(s,t) g(x,y)=\frac{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) }{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t) } \tag{4}

    #include "../include/importOpenCV.h"
    #include "../include/baseOps.h"
    #include "../include/opencv400/opencv2/core.hpp"
    #include <iostream>
    
    
    int main()
    {
    	//将工作目录设置到EXE所在的目录。
    	SetCurrentDirectoryToExePath();
    
    	cv::Mat src = cv::imread("../images/18.jpg");
    	cv::imshow("原图", src);
    
    
    	cv::Mat w1 = cv::Mat::zeros(cv::Size(3, 3), CV_32FC1);
    	for (int i = 0; i < w1.rows; i++)
    	{
    		for (int j = 0; j < w1.cols; j++)
    		{
    			w1.at<float>(i, j) = 1 / 9.0f;
    		}
    	}
    
    	cv::Mat output;
    	src.copyTo(output);
    	if (src.channels() == 3)
    	{
    		std::vector<cv::Mat> srcbgr;
    		cv::split(src, srcbgr);
    		std::vector<cv::Mat> dstbgr;
    		cv::split(output, dstbgr);
    
    		for (int i = 1; i < srcbgr[0].rows-1; i ++)
    		{
    			for (int j = 1; j < srcbgr[0].cols-1; j++)
    			{
    				dstbgr[0].at<uchar>(i, j) = (uchar)(srcbgr[0].at<uchar>(i - 1, j - 1)*w1.at<float>(0, 0) + srcbgr[0].at<uchar>(i - 1, j)*w1.at<float>(0, 1) + srcbgr[0].at<uchar>(i - 1, j + 1)*w1.at<float>(0, 2) + \
    					                                srcbgr[0].at<uchar>(i    , j - 1)*w1.at<float>(1, 0) + srcbgr[0].at<uchar>(i    , j)*w1.at<float>(1, 1) + srcbgr[0].at<uchar>(i    , j + 1)*w1.at<float>(1, 2) + \
    					                                srcbgr[0].at<uchar>(i + 1, j - 1)*w1.at<float>(2, 0) + srcbgr[0].at<uchar>(i + 1, j)*w1.at<float>(2, 1) + srcbgr[0].at<uchar>(i + 1, j + 1)*w1.at<float>(2, 2));
    
    				dstbgr[1].at<uchar>(i, j) = (uchar)(srcbgr[1].at<uchar>(i - 1, j - 1)*w1.at<float>(0, 0) + srcbgr[1].at<uchar>(i - 1, j)*w1.at<float>(0, 1) + srcbgr[1].at<uchar>(i - 1, j + 1)*w1.at<float>(0, 2) + \
    					                                srcbgr[1].at<uchar>(i    , j - 1)*w1.at<float>(1, 0) + srcbgr[1].at<uchar>(i    , j)*w1.at<float>(1, 1) + srcbgr[1].at<uchar>(i    , j + 1)*w1.at<float>(1, 2) + \
    					                                srcbgr[1].at<uchar>(i + 1, j - 1)*w1.at<float>(2, 0) + srcbgr[1].at<uchar>(i + 1, j)*w1.at<float>(2, 1) + srcbgr[1].at<uchar>(i + 1, j + 1)*w1.at<float>(2, 2));
    				
    				dstbgr[2].at<uchar>(i, j) = (uchar)(srcbgr[2].at<uchar>(i - 1, j - 1)*w1.at<float>(0, 0) + srcbgr[2].at<uchar>(i - 1, j)*w1.at<float>(0, 1) + srcbgr[2].at<uchar>(i - 1, j + 1)*w1.at<float>(0, 2) + \
    					                                srcbgr[2].at<uchar>(i    , j - 1)*w1.at<float>(1, 0) + srcbgr[2].at<uchar>(i    , j)*w1.at<float>(1, 1) + srcbgr[2].at<uchar>(i    , j + 1)*w1.at<float>(1, 2) + \
    					                                srcbgr[2].at<uchar>(i + 1, j - 1)*w1.at<float>(2, 0) + srcbgr[2].at<uchar>(i + 1, j)*w1.at<float>(2, 1) + srcbgr[2].at<uchar>(i + 1, j + 1)*w1.at<float>(2, 2));
    			}
    		}
    
    		cv::merge(dstbgr, output);
    
    		cv::Mat dst1;
    		cv::blur(src, dst1, cv::Size(3, 3));
    		cv::imshow("均值滤波3*3_手动计算", output);
    		cv::imshow("均值滤波3*3_cv::blur", dst1);
    	}
    	else
    	{
    
    		for (int i = 1; i < src.rows - 1; i++)
    		{
    			for (int j = 1; j < src.cols - 1; j++)
    			{
    				output.at<uchar>(i, j) = (uchar)(src.at<uchar>(i - 1, j - 1)*w1.at<float>(0, 0) + src.at<uchar>(i - 1, j)*w1.at<float>(0, 1) + src.at<uchar>(i - 1, j + 1)*w1.at<float>(0, 2) + \
    					                             src.at<uchar>(i    , j - 1)*w1.at<float>(1, 0) + src.at<uchar>(i    , j)*w1.at<float>(1, 1) + src.at<uchar>(i    , j + 1)*w1.at<float>(1, 2) + \
    					                             src.at<uchar>(i + 1, j - 1)*w1.at<float>(2, 0) + src.at<uchar>(i + 1, j)*w1.at<float>(2, 1) + src.at<uchar>(i + 1, j + 1)*w1.at<float>(2, 2));
    			}
    		}
    
    		cv::Mat dst1;
    		cv::blur(src, dst1, cv::Size(3, 3));
    		cv::imshow("均值滤波3*3_手动计算", output);
    		cv::imshow("均值滤波3*3_cv::blur", dst1);
    	}
    
    	cv::waitKey();
    	return 0;
    }
    

    均值滤波不同尺度的均值滤波效果如下图所示。
    不同尺度的均值滤波

    展开全文
  • matlab图像滤波处理

    2011-05-24 15:26:58
    介绍了三种图像滤波处理的特点,可以根据特点选择不同的滤波方法
  • lena平滑滤波,锐化及高斯低通滤波处理
  • 振动信号的滤波处理在振动信号分析中,数据滤波就是把我们所关注和感兴趣的部分信号从采集得到的信号中提取出来的过程。它的主要作用主要有以下几个:滤除测试信号中的噪声或虚假成分、提高信噪比、平滑分析数据、抑制...

    振动信号的滤波处理

    在振动信号分析中,数据滤波就是把我们所关注和感兴趣的部分信号从采集得到的信号中提取出来的过程。它的主要作用主要有以下几个:滤除测试信号中的噪声或虚假成分、提高信噪比、平滑分析数据、抑制干扰信号、分享频率分量等。

    数字滤波的时域方法是指将离散数据信号通过代入差分方程进行滤波的一种方法,此方法可以使其结果能实现波形过滤。典型的数字滤波器主要有两种方法来实现:一种是IIR数字滤波器,称为无限长冲激响应滤波器;二是F1R滤波器,称为有限长冲激响应滤波器。

    数字滤波器的设计分为三个步骤:第一步,根据实际参数分析的需要确定出滤波器的技术指标;第二步,根据己确定的技术指标,基于数学和数字信号处理的基本原贝(J,提出了过滤器的模型;第三步,把以上过程在计算机上使用软件实现。

    数字滤波器在对某些音频信号或振动信号的数据进行处理时,主要是为了选定需要的频率。因此,数字滤波器的形式通常是确定用于频域的振幅和相位响应。在通带的范围内,一般希望该系统具有线性相位响应。精确的线性相位FIR滤波器。在IIR滤波器中,是不可能获得的通带中的相位,因此一般的IIR滤波器的设计只考虑振幅指示器。幅度指标有两种表示方法:一是绝对指标,它是根据幅度响应函数的要求提出的,这些指标通常用在线性相位F1R滤波器的设计中。二是相对指标,它用在IIR滤波器的设计中,它的值的要求是分贝(dB),其分贝值计算公式为:

    367ef2e4d44885f729eff4bee79722a5.png

    在工程实际通常采用这种的指标形式。

    在设计滤波器还有一些比较重要的技术指标,如:截止频率ωp、阻带截止频率ωs、通常波动系数Rp、阻带波动系数Rs以及滤波器的阶数M。例如,设计一个低通滤波器,它的通带为0~ωp,允许的波动为Rp,阻带为ωs~fs/2,fs是采样频率,要求的阻带衰减为Rs, ωp~ωs称为过渡带。通常过滤带的带宽会随着滤波器的阶数增大而变窄。

    当前已有几个软件都具有滤波功能,如最常用到的MATLAB软件,其工具箱中提供了诸如贝塞尔低通滤波器,巴特沃斯滤波器,切比雪夫(I型、II型)滤波器,椭圆滤波器等多种滤波器的原型函数。

    在工程实际中常用的窗函数共有以下六种。

    8e25f4c7053ace028fb1676364d3e0cc.png

    cbbdf06406ec82d78b2c2455c0392bfc.png

    91bcbc59d94002cae75582a35504e7d7.png

    其中

    afe604007469336a09fcb0fcf43a349b.png

    式中:

    2c143805b09c6ecffabf5361629106dc.png

    修正后的零阶贝塞尔函数;可以产生各种过渡宽度和接近最优的阻带衰减的产生都需要先确定M;与其它函数相比,凯泽窗函数其最显著的特点就是可以用相同的M值提供不同的过渡宽带。

    多次实验证明,假设给定通带截止频率ωp,、阻带截止频率ωs、通带波动系数Rp和最小阻带衰减系数Rs,,那么窗函数设计的经验公式为:

    00a1b6e194b4d1a0fcade893781206f5.png

    同时,在MATLAB软件的工具箱中还提供了若干设计FIR数字滤波器的函数,常用的函数有以下几个:(1)标准通带滤波器的设计函数FIRL。Firl是一种实现加窗线性相位FIR数字滤波器设计的经典方法。它主要用于设计标准通带滤波器,其中包括对低通,带通,高通和带阻数字滤波器的设置。其中需要特别注意的是:滤波器的阶数必须为偶数(采样频率的1/2),作为过滤器的通带(例如,高通或带阻滤波器)。(2)多带FIR滤波器的设计函数FIR2。(3)带过滤带的多带FIR滤波器设计函数FIRls。(4)最优多带滤波器设计函数remez。(5)任意响应滤波器设计函数cremez。

    例4

    以下选取某一实际加速度记录(如图4-4(a)所示),对加速度时程进行频谱分析,结果如图4-5)所示。由频谱图可以看出,该记录在OHz左右的低频数据十分大,较为异常;同时,在50HZ左右有电流干扰。对于土木结构而言,我们较为关注的是25Hz以内的频谱特性。因此,需要对此信号进行滤波处理。本文采用带通滤波器进行O.lHz?25Hz,对于此振动信号滤波前后的时程图及频谱图分别如图4-4和图4-5所示。

    a454c53de3c2e3d7868801fae4239ea6.png

    3602e82eb13daa524c9549e984260163.png

    《来源科技文献,经本人分析整理,以技术会友,广交天下朋友》

    展开全文
  • JAVA 图像高斯滤波处理

    热门讨论 2011-01-24 12:35:14
    Java 图像高斯滤波处理程序.图像的高斯滤波程序Java实现
  • 计算机视觉实验_图像滤波处理实验内容实验过程:2.1 高斯滤波处理2.2 联合双边滤波处理 实验内容 2-1:实现图像的高斯滤波处理 实验要求: 1)通过调整高斯函数的标准差(sigma)来控制平滑程度; 给定函数:void ...
  • 一般的滤波器都是针对灰度图像的,scikit-image 库提供了针对彩色图像滤波的decorator:adapt_rgb,adapt_rgb 提供两种形式的滤波,一种是对rgb三个通道分别进行处理,另外一种方式是将rgb转为hsv颜色模型,然后针对...
  • MATLAB--数字图像处理 图像噪声与滤波处理

    千次阅读 多人点赞 2019-12-12 22:28:47
    图像的噪声与滤波处理 二、实验目的 1.熟悉MATLAB软件的使用。 2.掌握图像的噪声与滤波处理。 三、实验内容 1.对一张图片添加不同强度的高斯噪声、椒盐噪声 2.对图像进行不同模板的均值滤波、高斯加权滤波、中值滤波...
  • 【图像处理】-016 空域滤波处理-中值滤波   之前讨论的均值滤波和高斯滤波都是基于对图像灰度的线性变换进行的,下面讨论基于图像像素值的统计排序的滤波器,由于是对图像像素的统计排序,所以这里讨论的是一种非...
  • 滤波处理,固定带通滤波,可变带通滤波,噪声删除,可调整可变带通滤波器的频率
  • 本代码可用于实现双边滤波处理极化SAR图像,具有很好的去噪效果
  • 【图像处理】-015 空域滤波处理-高斯滤波   在讨论频域滤波时,我们讨论了高斯低通滤波器、高斯高通滤波器等,这里,我们将对空域中的高斯滤波器进行讨论。 文章目录1 理论依据1.1 空间域中的高斯滤波器2 实现3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,210
精华内容 6,884
关键字:

滤波处理