精华内容
参与话题
问答
  • 滤波器实现

    2019-07-12 21:05:10
    1.缓冲器 低输入阻抗转高输入阻抗 2.- 12 dB/oct Linkwitz-Riley crossover ...Linkwitz-Riley 输出全频带 相位反转180度 crossover frequency 输出有6db 下降,可以...所有的 Linkwitz-Riley 滤波器 都可以分...

    1.缓冲器   低输入阻抗转高输入阻抗

     

    2.-  12 dB/oct Linkwitz-Riley crossover

     

     

     

    Linkwitz-Riley 输出全频带 相位反转180度 crossover frequency 输出有6db 下降,可以修正一些系统的相位偏移

     

     

     

    所有的 Linkwitz-Riley 滤波器  都可以分解为 2阶的 sallen-key filters

     

    3 -  24 dB/oct Linkwitz-Riley crossover

    全频段360度相位反转   transition frequency Fp 下降 6dB  

    4 -  Delay correction  延时修正(allpass)

     

    第一阶全通滤波器有比较平滑的幅频响应但是相位进行了反转(0 到 -180度  或  -180度 到  -360度),通常用于修正相位响应。

    通常多阶使用在高频喇叭做时延(正常高音比低音先到达)

     

     

     

     

     

    5 -  Shelving lowpass

    用于做低频补偿

     

     

     

     

     

    一个shelving lowpass 被动 RC 版本

     

     

     

    6 -  Shelving highpass

     

     

     

     

     

    被动RC版本

     

    7 -  Notch filter

     

    通常用于抵消 房间或者扬声器的频响 

     

    8 -  6 dB/oct dipole equalization

    偶极子 均衡器  

     

     

     

     

    A 不能用于校正 peak

    B  可用于T型网络 频响曲线修正 或者  修正功放(功放噪声增益会高于音频的高频增益

    C 相当于 shelving lowpass 添加一个notch 滤波器

     

    9    -  12 dB/oct highpass equalization("Linkwitz Transform", Biquad)

     

     

     

     

     

     

    翻译自

    http://www.linkwitzlab.com

    展开全文
  • 数字滤波器实现

    2018-08-12 00:38:23
    数字滤波器的matlab与fpga实现,altera verilog版本,
  • IIR滤波器实现

    2014-12-02 18:06:01
    stm32实现的IIR滤波器,结合IIR滤波器特点,写出IIR算法C语言实现,并进行实现显示在屏上
  • FIR滤波器实现

    2017-04-18 17:50:44
    FIR滤波器实现
  • CCS FIR滤波器实现

    2015-01-09 11:11:32
    FIR滤波器在CCS上实现,仿真,DSP课程用,代码可以直接运行
  • 目前数字滤波器的硬件实现方法通常采用专用DSP芯片或FPGA,DSP特有的一些硬件结构和特性使其非常适合作数字滤波电路,但由于其软件算法在执行时的串行性,限制了它在高速和实时系统中的应。FPGA最明显的优势在于其...
  • 一、 引 言  在许多数字信号处理系统中,FIR滤波器是最常用的组件之一,它完成信号预调、频带...数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积
  • matlab开发-fP使用DLcoder实现高通滤波器实现。利用HDL编码器在灰度图像上实现了3x3高通滤波器。
  • 基于FPGA的匹配滤波器实现。有具体的原理图设计。以及quartus工程
  • 本设计中的低通滤波器的阶数为160阶,需要的加法器数量为160个;滤波器的系数为161个,则对应的乘法器数量为161。 FPGA的模块设计包括以下几个模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子...
  • 基于FPGA的CIC滤波器实现 很好的论文
  • Matlab下 IIR 滤波器实现(Simulink仿真和C语言实现)

    千次阅读 多人点赞 2019-01-15 11:31:25
    一般滤波器可以分为经典滤波器和现代滤波器。 经典滤波器:假定输入信号中的有用成分和希望去除的成分各自占有不同的频带。如果信号和噪声的频谱相互重迭,经典滤波器无能为力。比如 FIR 和 IIR 滤波器等。  现代...

     

    经典滤波器和现代滤波器

    一般滤波器可以分为经典滤波器和现代滤波器。

    1. 经典滤波器:假定输入信号中的有用成分和希望去除的成分各自占有不同的频带。如果信号和噪声的频谱相互重迭,经典滤波器无能为力。比如 FIR 和 IIR 滤波器等。  
    2. 现代滤波器:从含有噪声的时间序列中估计出信号的某些特征或信号本身。现代滤波器将信号和噪声都视为随机信号。包括 Wiener Filter、Kalman Filter、线性预测器、自适应滤波器等

    Z变换和差分方程

    在连续系统中采用拉普拉斯变换求解微分方程,并直接定义了传递函数,成为研究系统的基本工具。在采样系统中,连续变量变成了离散量,将Laplace变换用于离散量中,就得到了Z变换。和拉氏变换一样,Z变换可用来求解差分方程,定义Z传递函数成为分析研究采样系统的基本工具。

      对于一般常用的信号序列,可以直接查表找出其Z变换。相应地,也可由信号序列的Z变换查出原信号序列,从而使求取信号序列的Z变换较为简便易行。

    Z变换有许多重要的性质和定理:

    • 线性定理

      设a,a1,a2为任意常数,连续时间函数f(t),f1(t),f2(t)的Z变换分别为F(z),F1(z),F2(z),则有

                                Z[a*f(t)]=aF(z)

                                Z[a1f1(t)+a2f2(t)]=a1F1(z)+a2F2(z)

    • 滞后定理

      设连续时间函数在t<0时,f(t)=0,且f(t)的Z变换为F(z),则有

                                Z[f(t−kT)]=z^−k * F(z)

    IIR数字滤波器结构

      IIR滤波器常见的结构形式有直接Ⅰ型、直接Ⅱ型(典范型)、级联型、并联型。通过差分方程能够画出包含反馈结构的数字网络称为直接型。

      直接Ⅰ型滤波器的网络结构可以根据差分方程很直观地画出(The Direct-Form I structure implements the feed-forward terms first followed by the feedback terms):

       可以看出直接Ⅰ型滤波器需要N+M个延时单元(N≥M)。直接Ⅱ型结构是对直接Ⅰ型的变型,将上面网络的零点与极点的级联次序互换,并将延时单元合并。实现N阶滤波器只需要N个延时单元(The Direct-Form II structure uses fewer delay blocks than Direct-Form I),故称为典范型。

      直接Ⅱ型看上去不那么直观,可以通过下图进行理解。我们可以将整个滤波器系统看成A、B两个子系统串联而成,由于为线性系统因此交换顺序不影响最终输出结果,传递函数可写为:

                                                             H(z)=B(z)*1/A(z)=1/A(z)*B(z)

      直接型优点:直接型结构简单,用的延迟器较少(N和M中较大者的个数);缺点:系数ak,bk对滤波器性能的控制关系不直接,因此调整不方便;具体实现滤波器时ak,bk的量化误差将使滤波器的频率响应产生很大的改变,甚至影响系统的稳定性。直接型结构一般用于实现低阶系统。

      级联型:将系统传递函数H(z)因式分解为多个二阶子系统,系统函数就可以表示为这些二阶子系统传递函数的乘积。实现时将每个二阶子系统用直接型实现,整个系统函数用二阶环节的级联实现。

      并联型:与级联型类似,用部分分式展开法将系统函数表示为二阶子系统传递函数的和。每个二阶子系统仍然用直接型实现,整个系统函数用二阶环节的并联实现。

     

    FDATool工具


      在IIR滤波器设计过程中,通常利用模拟滤波器来设计数字滤波器,要先根据滤波器的性能指标设计出相应的模拟滤波器的系统函数H(s),然后由H(s)经变换得到所需要的数字滤波器的系统函数H(z)。常用的变换方法有冲激响应不变法和双线性变换法。下面使用MATLAB等工具直接生成数字滤波器系数:

      在MATLAB命令行中输入fdatool打开滤波器设计工具箱,为了便于分析,我们先从设计一个简单的2阶低通滤波器。Design Method用于选择IIR滤波器还是FIR滤波器,这里我们选择IIR滤波器,类型选择Chebyshev TypeII,当然也可以选择其他类型,不同类型的频率响应不同,选择后默认的滤波器结构是直接II型。ResponseType用于选择低通、高通、带通、带阻等类型,选择低通滤波“Lowpass”。Frequency Specifications用于设置采样频率以及截止频率,这里填入Fs = 10  Fpass = 1,Fstop = 4 即采样率为10Hz,1Hz以上的频率将被滤除掉。Fiter Order 选择滤波器阶数,为了简单起见,先选择一个2阶滤波器做实验。

       参数设置好后点击Design filter按钮,将按要求设计滤波器。默认生成的IIR滤波器类型是Direct-Form II,Second-Order Sections(直接Ⅱ型,每个Section是一个二阶滤波器),在工具栏上点击Filter Coefficients图标或菜单栏上选择Analysis→Filter Coefficients可以查看生成的滤波器系数。菜单栏上选择Edit->Convert Structure 可以查看滤波器结构类型 Direct-Form II SOS。

     

    MATLAB中二阶滤波器差分方程公式如下(注意反馈项符号为负号):

          y[n]=b0⋅x[n]+b1⋅x[n−1]+b2⋅x[n−2]−a1⋅y[n−1]−a2⋅y[n−2]

    如上图Section的公式如下

          y[n] = x[n] + 1.9390984655⋅x[n−1]+x[n−2] - (-0.654227)⋅y[n−1]−0.123235⋅y[n−2]

     

    滤波器设计完成后还可以生成Simulink模型进行仿真:按照下图中数字标号进行,第一步点击左边Realize Model图标,第二步勾选“Build model using basic elements”这一项,右边四个灰色的项将自动打钩,最后点击“Realize Model”,matlab将自动生成滤波器模型,在弹出的窗口中双击模型可以观察该模型的内部结构。

     下面是直接Ⅱ型的内部结构

    Simulink仿真 

    使用生成的滤波器搭建一个简答的测试模型:将两个幅值为1,频率分别为 0.5Hz  和 3Hz正弦波信号,数字量化0.1秒

    解算器步长 0.1 ,时间 10秒(下图为100秒)

     

     黄线为输入正弦波量化叠加信号,蓝线为滤波器输出信号

    滤波器C语言代码如下:

    matlab 生成的C语言头文件 iirchb3.h

    * Generated by MATLAB(R) 9.0 and the Signal Processing Toolbox 7.2.
     * Generated on: 15-Jan-2019 09:38:15
     */
    
    /*
     * Discrete-Time IIR Filter (real)       注意,这里是直接2型
     * -------------------------------
     * Filter Structure    : Direct-Form II, Second-Order Sections
     * Number of Sections  : 2
     * Stable              : Yes
     * Linear Phase        : No
     */
    
    /* General type conversion for MATLAB generated C-code  */
    #include "tmwtypes.h"
    /* 
     * Expected path to tmwtypes.h 
     * C:\Program Files\MATLAB\R2016a\extern\include\tmwtypes.h 
     */
    /*
     * Warning - Filter coefficients were truncated to fit specified data type.  
     *   The resulting response may not match generated theoretical response.
     *   Use the Filter Design & Analysis Tool to design accurate
     *   single-precision filter coefficients.
     */
    #define MWSPT_NSEC 5
    const int NL[MWSPT_NSEC] = { 1,3,1,3,1 };
    const float IIR_B[MWSPT_NSEC][3] = {
      {
         0.1747451723,              0,              0 
      },
      {
                    1,    1.669347644,              1 
      },
      {
         0.1232352033,              0,              0 
      },
      {
                    1,    1.939098477,              1 
      },
      {
                    1,              0,              0 
      }
    };
    const int DL[MWSPT_NSEC] = { 1,3,1,3,1 };
    const float IIR_A[MWSPT_NSEC][3] = {
      {
                    1,              0,              0 
      },
      {
                    1,  -0.8880870342,   0.5292878151 
      },
      {
                    1,              0,              0 
      },
      {
                    1,  -0.6542272568,   0.1396628469 
      },
      {
                    1,              0,              0 
      }
    };
    #include “iirchb3.h”   /* matlab 生成滤波器头文件 */
    
    float cc[181] = {111.3, 569.2, 947.7, 915.1, 1033.8, 1052.5, 1105.5, 1102.8, 1047.3, 1186.5, 1067.1, 1074.5, 1093.1, 1169.4, 1078.1, 1146.6, 1099.6, 1036.7, 1150.9, 1052.7, 1119.7, 1115.1, 1054.6, 1175.4, 1108.1, 1009.8, 1130.8, 1124.5, 1038.1, 1007.7, 1128.0, 1148.9, 1080.2, 980.4, 1080.3, 1193.5, 1016.6, 1244.6, 1261.7, 1148.6, 1145.1, 1138.0, 1076.6, 1018.1, 1032.6, 1055.5, 1152.3, 1157.4, 1141.2, 1064.9, 1069.9, 1059.6, 1089.9, 1047.5, 1027.2, 1074.4, 1142.6, 1064.9, 1199.2, 1114.6, 1081.9, 1089.5, 1121.0, 1052.0, 1058.1, 1198.8, 1108.4, 1022.1, 1207.1, 1128.8, 1177.5, 1199.4, 1129.3, 1062.1, 1184.5, 1151.7, 1144.7, 1152.8, 1136.7, 1195.6,1217.3, 1143.2, 1133.7, 1185.2, 1082.5, 1177.8, 1212.2, 1155.6, 1162.0, 1183.5, 1152.3, 1226.2, 1210.5, 1175.2, 1256.6, 1184.0, 1172.1, 1175.1, 1237.0, 1254.7, 1232.5, 1236.5, 1275.8, 1194.5, 1197.2, 1156.1, 1248.8,
         1213.2, 1244.0, 1249.8, 1260.8, 1276.0, 1216.2, 1220.7, 1250.3, 1283.3, 1349.2, 1326.3, 1308.6, 1238.0, 1275.5, 1238.0, 1226.9, 1256.5, 1171.0, 1275.6,
          1328.5, 1234.5, 1219.8, 1153.1, 1178.0, 1243.7, 1182.2, 1172.9, 1260.7, 1230.5, 1215.3, 1212.7, 1201.0, 1197.6, 1234.6, 1243.4, 1212.5, 1235.4, 1238.6,
           1228.0, 1167.0, 1221.0, 1249.2, 1234.5, 1245.9, 1224.2, 1167.4, 1264.5, 1166.0, 1219.0, 1222.2, 1180.7, 1369.5, 1276.7, 1212.3, 727.4, 436.4, 261.9,
            157.1, 94.3, 56.6, 33.9, 20.4, 12.2, 7.3, 4.4, 2.6, 1.6, 0.9, 0.6, 0.3, 0.2, 0.1, 0.1, 0.0};
    
    static float xlast[2];	  
    static float mlast[2];	  		//中间节点
    
    //二阶IIR滤波器 参考直接Ⅱ型的内部结构
    static float IIR_DR2(float x,float *plast,const float (*A)[3],const float (*B)[3])
    {
    	float tmp,last;
    
    	tmp = x * B[0][0];
    
    	last = tmp - (A[1][1] * plast[0] + A[1][2] * plast[1]);
            tmp = last + (B[1][1] * plast[0] + B[1][2] * plast[1]);
    
    	plast[1] = plast[0];
    	plast[0] = last;
    
    	return tmp;
    }
    
    
    //二阶滤波器组合成更高阶数的滤波器
    float IIR_Filter(float x)
    {
    	float mid,y;
    
    	mid = IIR_DR2(x,xlast,IIR_A,IIR_B);
    
    	y = IIR_DR2(mid,mlast,&IIR_A[2],&IIR_B[2]);
    
    	//更多阶数...
    
    	return y;
    }
    
    
    //滤波器复位
    void Init_Filter(void)
    {
    	xlast[0] = 0;
    	xlast[1] = 0;
    	mlast[0] = 0;
    	mlast[1] = 0;
    }
    
    int main()
    {
        int i;
    
        for(i = 0;i<181;i++)
            printf("%.1f, ",IIR_Filter(cc[i]));
    
        return 0;
    }
    

     

    检验C代码

    原始信号 

     

     滤波后的信号

     

     

    展开全文
  • 用Veilog语言在实现了并行FIR滤波器的设计,给出了实现源码
  • 使用HLS创建一个FIR滤波器,并对其源程序、HLS优化等进行分析。
  • 分析了多级维纳滤波器的工作原理和改进方法,引入一种可靠的秩选方法,得到了一种稳妥的多级维纳滤波实现方式。与传统方式相比,引入本秩选方向后的算法很容易找到一个门限,使得输出SINR达到最优。对算法有限精度...
  • 用有源RC滤波器实现网络综合的方法用有源RC滤波器实现网络综合的方法用有源RC滤波器实现网络综合的方法
  • 本m文件基于matlab使用firpm函数计算出滤波器系数,从而完成了使用FIR滤波器拟合一阶RC电路的功能。这种思想可以扩展到其他的传输函数上。
  • 基于IP核的FIR滤波器实现,张银行,杨小雪,有限长单位冲击响应(FIR)数字滤波器具有严格的线性相位特性、任意的幅度特性、稳定性高等特点,并能用快速傅里叶变换(FFT)算法来实��
  • 去年我们在设计一款新产品的时候,由于选用定制开发的一个SoC器件,导致我们在用ADC读取经由这个SoC芯片放大后的信号时,出现了极其不稳定的情况。正常情况下ADC读取出来的信号应当为一条平稳的直线,而现实上读取...

    去年我们在设计一款新产品的时候,由于选用定制开发的一个SoC器件,导致我们在用ADC读取经由这个SoC芯片放大后的信号时,出现了极其不稳定的情况。正常情况下ADC读取出来的信号应当为一条平稳的直线,而现实上读取出来的信号确上下波动极其大,远远超出了我们理论计算水平。

    虽然后来通过大量的研究分析,得出时SoC极其容易受到EMI干扰,在添加屏蔽片后成功解决了这个问题,但是在研究过程中我们发现卡尔曼滤波器在处理这种干扰时有着媲美硬件滤波器的结果,还是感到非常惊讶。

    下面介绍由Andrew D. Straw提供的基于Python语言的卡尔曼滤波滤波器实现。

    #coding:utf-8  
    # python3.7
    import numpy  
    import pylab
    
    def KalmanFilter(z,  n_iter = 20):  
        #这里是假设A=1,H=1的情况  
          
        # intial parameters  
         
        sz = (n_iter,) # size of array   
          
        #Q = 1e-5 # process variance  
        Q = 1e-6 # process variance   
        # allocate space for arrays  
        xhat=numpy.zeros(sz)      # a posteri estimate of x  
        P=numpy.zeros(sz)         # a posteri error estimate  
        xhatminus=numpy.zeros(sz) # a priori estimate of x  
        Pminus=numpy.zeros(sz)    # a priori error estimate  
        K=numpy.zeros(sz)         # gain or blending factor  
          
        R = 0.1**2 # estimate of measurement variance, change to see effect  
          
        # intial guesses  
        xhat[0] = 0.0  
        P[0] = 1.0  
        A = 1
        H = 1
    
        for k in range(1,n_iter):  
            # time update  
            xhatminus[k] = A * xhat[k-1]  #X(k|k-1) = AX(k-1|k-1) + BU(k) + W(k),A=1,BU(k) = 0  
            Pminus[k] = A * P[k-1]+Q      #P(k|k-1) = AP(k-1|k-1)A' + Q(k) ,A=1  
          
            # measurement update  
            K[k] = Pminus[k]/( Pminus[k]+R ) #Kg(k)=P(k|k-1)H'/[HP(k|k-1)H' + R],H=1  
            xhat[k] = xhatminus[k]+K[k]*(z[k]-H * xhatminus[k]) #X(k|k) = X(k|k-1) + Kg(k)[Z(k) - HX(k|k-1)], H=1  
            P[k] = (1-K[k] * H) * Pminus[k] #P(k|k) = (1 - Kg(k)H)P(k|k-1), H=1  
        return xhat
    
    if __name__ == '__main__':
        with open("raw_data.txt", "r", encoding="utf-8") as f:
            text = f.readline().split(",")
        print(text)
        raw_data = list()
        for x in text:
            raw_data.append(int(x))
            print(int(x))
    
        xhat = KalmanFilter(raw_data, n_iter=len(raw_data))
    
        pylab.plot(raw_data, 'k-', label='raw measurement')  # 测量值
        pylab.plot(xhat, 'b-', label='Kalman estimate')  # 过滤后的值
        pylab.legend()
        pylab.xlabel('Iteration')
        pylab.ylabel('ADC reading')
        pylab.show()

    经过卡尔曼滤波后的数据,基本上就是一条直线,与我们计算结果及我们后来添加的硬件滤波器件相一致,这也反映出卡尔曼滤波器的强大,能从众多大量噪声中找到真值,滤波器能力真不是吹的。

    项目后来不用卡尔曼滤波器而大费周折采用成本更高的硬件滤波器,主要还是产品需要一个快速响应输出,而卡尔曼滤波器在这方面有点滞后了,如果对于性能要求不高的产品,这个滤波器是绝佳的利器。

    展开全文
  • 假设一物体围绕一圆周运动,角加速度是白噪声,观测噪声也是零均值的白噪声;编程使用卡尔曼滤波器实现运动物体的跟踪。
  • 纯粹阅读,请移步OpenCV使用Sobel滤波器实现图像边缘检测效果图源码KqwOpenCVFeaturesDemoSobel滤波器也叫Sobel算子,与Canny边缘检测一样,需要计算像素的灰度梯度,只不过是换用另一种方式。使用Sobel算子计算边缘...

    纯粹阅读,请移步OpenCV使用Sobel滤波器实现图像边缘检测

    效果图

    效果图

    原图

    源码

    KqwOpenCVFeaturesDemo

    Sobel滤波器也叫Sobel算子,与Canny边缘检测一样,需要计算像素的灰度梯度,只不过是换用另一种方式。

    使用Sobel算子计算边缘的步骤

    1. 将图像转为灰度图像

      // 原图置灰
      Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY);
    2. 计算水平方向灰度梯度的绝对值

      Imgproc.Sobel(grayMat, grad_x, CvType.CV_16S, 1, 0, 3, 1, 0);
      Core.convertScaleAbs(grad_x, abs_grad_x);
    3. 计算垂直方法灰度梯度的绝对值

      Imgproc.Sobel(grayMat, grad_y, CvType.CV_16S, 0, 1, 3, 1, 0);
      Core.convertScaleAbs(grad_y, abs_grad_y);
    4. 计算最终梯度

      // 计算结果梯度
      Core.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 1, sobel);

    最终的梯度实质上就是边缘。

    这里用到了两个3 * 3的核对图像做卷积来近似地计算水平和垂直方向的灰度梯度

    核

    封装

    这里用到了RxJava。主要是因为图片处理是耗时操作,会阻塞线程,为了防止界面卡顿,这里使用RxJava进行了线程切换。

    /**
     * Sobel滤波器
     *
     * @param bitmap 要检测的图片
     */
    public void sobel(Bitmap bitmap) {
        if (null != mSubscriber)
            Observable
                    .just(bitmap)
                    .map(new Func1<Bitmap, Bitmap>() {
    
                        @Override
                        public Bitmap call(Bitmap bitmap) {
    
                            Mat grayMat = new Mat();
                            Mat sobel = new Mat();
                            Mat grad_x = new Mat();
                            Mat grad_y = new Mat();
                            Mat abs_grad_x = new Mat();
                            Mat abs_grad_y = new Mat();
    
                            // Bitmap转为Mat
                            Mat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);
                            Utils.bitmapToMat(bitmap, src);
                            // 原图置灰
                            Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY);
    
                            // 计算水平方向梯度
                            Imgproc.Sobel(grayMat, grad_x, CvType.CV_16S, 1, 0, 3, 1, 0);
                            // 计算垂直方向梯度
                            Imgproc.Sobel(grayMat, grad_y, CvType.CV_16S, 0, 1, 3, 1, 0);
                            // 计算两个方向上的梯度的绝对值
                            Core.convertScaleAbs(grad_x, abs_grad_x);
                            Core.convertScaleAbs(grad_y, abs_grad_y);
                            // 计算结果梯度
                            Core.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 1, sobel);
    
                            // Mat转Bitmap
                            Bitmap processedImage = Bitmap.createBitmap(sobel.cols(), sobel.rows(), Bitmap.Config.ARGB_8888);
                            Utils.matToBitmap(sobel, processedImage);
    
                            return processedImage;
                        }
                    })
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(mSubscriber);
    }

    使用

    // 图片特征提取的工具类
    mFeaturesUtil = new FeaturesUtil(new Subscriber<Bitmap>() {
        @Override
        public void onCompleted() {
            // 图片处理完成
            dismissProgressDialog();
        }
    
        @Override
        public void onError(Throwable e) {
            // 图片处理异常
            dismissProgressDialog();
        }
    
        @Override
        public void onNext(Bitmap bitmap) {
            // 获取到处理后的图片
            mImageView.setImageBitmap(bitmap);
        }
    });
    
    // Sobel滤波器检测图像边缘
    mFeaturesUtil.sobel(mSelectImage);
    展开全文
  • IIR数字滤波器实现

    千次阅读 2010-12-03 15:40:00
    题目:16k采样率音频数据下采样到8k采样率 求解方案分析:直接每隔一个取...这个低通滤波器在很多书上都用FIR滤波去实现,并且可以用FIR滤波的多相结构去实现。这样滤波和下采样过程可以互换位置。即先下采样再进行多
  • 阐述了灰度形态学滤波的原理和基本操作,给出了3×3结构元素灰度形态学滤波器的硬件结构,详细描述了该滤波器在Xilinx公司的XC2S400E芯片上实现的过程和仿真的方法,并说明了需要注意的问题。
  • boxFilter 滤波器实现

    千次阅读 2016-11-18 20:54:57
    cv::Ptr cv::createBoxFilter( int srcType, int dstType, Size ksize,Point anchor, bool normalize, int borderType ) { // 基础参数设置 图像深度 int sdepth = CV_MAT_DEPTH(srcType);...
  • 滤波——滤波器实现

    2019-11-27 08:41:25
    文章参考:https://blog.csdn.net/ReserveRainbow/article/details/89680893IIR 滤波器实现(C++) https://blog.csdn.net/kaixinshier/article/details/72082029 滤波器设计--C语言实...
  • fir多相滤波器实现

    2019-12-06 11:05:33
    之前一直使用的多相查找表形式的实现成型,但是不适合目前的项目需求,所以采用fir ip实现多相,因为速率如果是250Mhz,再采用4倍插值去实现四相成型那么实际速率就是1Ghz了,这里用最傻瓜的模式去实现四相,就是将...
  • scipy butter 滤波器实现

    2020-08-27 17:10:57
    本文将以实战的形式基于scipy模块使用Python实现简单滤波处理,包括内容有1.低通滤波,2.高通滤波,3.带通滤波,4.带阻滤波器。具体的含义大家可以查阅大学课程,信号与系统。简单的理解就是低通滤波指的是去除高于...
  • 在采用VHDL或VerilogHDL等硬件描述语言设计数字滤波器时。由于程序的编写往往不能达到良好优化而使滤波器性能表现一般,而采用调试好的IP Core需要向Al-tera公司购买。在此,采用一种基于DSP Builder的FPGA设计方法...
  • 利用Gabor滤波器实现的掌纹识别系统代码及其GUI。为保证成功运行请至少使用MATLAB 2012a以及之上版本,如要做到数据库存储请导入reg文件。

空空如也

1 2 3 4 5 ... 20
收藏数 5,846
精华内容 2,338
关键字:

滤波器实现