精华内容
下载资源
问答
  • 形态滤波

    千次阅读 2018-05-30 14:54:13
    形态开闭运算 :抑制波形中的异常冲击; matlab code: function f_gg=kaibilvbo(f,g,flag_1) %求f与g的开-闭滤波与闭-开滤波;, %flag_1值为1代表开-闭滤波,flag_1值为2代表闭-开滤波,%幅值变低, lengthf=...

    形态开闭运算 :抑制波形中的异常冲击;

    matlab code:

    function f_gg=kaibilvbo(f,g,flag_1)
    %求f与g的开-闭滤波与闭-开滤波;,
    %flag_1值为1代表开-闭滤波,flag_1值为2代表闭-开滤波,%幅值变低,
    lengthf=length(f);
    lengthg=length(g);
    if flag_1=='1'
    for n=1:length(f)
        a=[];
        for m=1:min(lengthg,length(f)+1-n);
            a1=f(n+m-1)-g(m);
            a=[a a1];
        end
        f_g1(n)=min(a);%----完成腐蚀运算
    end
    for n=1:length(f_g1)
        a=[];
        for m=1:min(n,lengthg)
            a1=f_g1(n-m+1)+g(m);
    %          disp(num2str([min(n,lengthg),n,m,n-m+1,m]))
            a=[a a1];
        end
        f_gg1(n)=max(a);%---完成膨胀运算,---也完成开运算
    end
        for n=1:length(f_gg1)
        a=[];
        for m=1:min(n,lengthg)
            a1=f_gg1(n-m+1)+g(m);
    %         disp(num2str([min(n,lengthg),n,m,n-m+1,m]));
            a=[a a1];
        end
        f_g2(n)=max(a); %---完成膨胀运算
        end
    
        for n=1:length(f_g2)
        a=[];
        for m=1:min(length(f_g2)-n+1,lengthg)
            a1=f_g2(n+m-1)-g(m);
            a=[a a1];
        end
        f_gg(n)=min(a);%完成腐蚀运算,也完成闭运算
        end
      %-----------
    elseif flag_1=='2'
    for n=1:length(f)
        a=[];
        for m=1:min(n,lengthg)
            a1=f(n-m+1)+g(m);
            a=[a a1];
        end
        f_g1(n)=max(a);%膨胀
    end
    for n=1:length(f_g1)
        a=[];
        for m=1:min(lengthg,length(f_g1)+1-n);
            a1=f_g1(n+m-1)-g(m);
            a=[a a1];
        end
        f_gg1(n)=min(a);%腐蚀----完成闭运算
    end
    %完成闭运算
    for n=1:length(f_gg1)
    a=[];
        for m=1:min(lengthg,length(f_gg1)+1-n);
            a1=f_gg1(n+m-1)-g(m);
            a=[a a1];
        end
        f_g2(n)=min(a);%--再腐蚀
    end
    for n=1:length(f_g2)
        a=[];
        for m=1:min(n,lengthg)
            a1=f_g2(n-m+1)+g(m);
            a=[a a1];
        end
        f_gg(n)=max(a);%再膨胀,--完成开运算-完成闭开运算
        end
    end
    end

    C code:

    /**************************************
    输入:int InputSignal[]:输入波形        int Structure[] :结构元素数组
          int SignalLength: 波形长度        int StructureLength:结构长度     
          开闭运算标记:char Flag='1'
    输出:int ReturnSignal[]:
    author:enjoy_learn@126.com
    
    ***************************************/
    
    void kaibilvbo(int InputSignal[],int Structure[] ,int SignalLength,int StructureLength,
     char Flag,int ReturnSignal[])
    {
    
        int lengthf=SignalLength;
        int lengthg=StructureLength;
        int i,m,n;
        int min_value;
        int a1;
        /*int a[8]={0};*/
        int *a=(int *)malloc(sizeof(int) * StructureLength);
    
    
        int *f_g1=(int *)malloc(sizeof(int) * SignalLength);//一次腐蚀存储
        int *f_gg1=(int *)malloc(sizeof(int) * SignalLength);//一次膨胀存储
        int *f_g2=(int *)malloc(sizeof(int) * SignalLength);//二次膨胀存储
        int *f_gg=(int *)malloc(sizeof(int) * SignalLength);//二次腐蚀存储
    
    
        if (Flag!='1'){
            printf("error input :kaibilvbo Flag !=1\n;");
            return ;
        }
    
        for (n=0;n<lengthf;n++){
           min_value=min(lengthg,(lengthf-n));
           if (min_value!=lengthg)
                RENEW(a,int,min_value);
           for ( m=0;m<min_value;m++){
              a1=InputSignal[n+m]-Structure[m];
               a[m]=a1;
            }
              f_g1[n]= min_array(a,min_value);
        }
        //完成腐蚀运算
    
        for (n=0;n<SignalLength;n++){
            min_value=min(n+1,lengthg);
            if (min_value!=lengthg)
                RENEW(a,int,min_value);
            for (m=0;m<min_value;m++){
                 a1=f_g1[n-m]+Structure[m];
                  a[m]=a1;
            }
              f_gg1[n]=max_array(a,min_value+1);
        }
        //完成膨胀运算;------------完成一次开运算。
        //write_file(f_gg1, SignalLength);//test:ok !
        for (n=0;n<SignalLength;n++){
            min_value=min(n+1,lengthg);
            if (min_value!=lengthg){
              RENEW(a,int,min_value);
            }
            for (m=0;m<min_value;m++){
                  a1=f_gg1[n-m]+Structure[m];
                  a[m]=a1;
            }
             f_g2[n]=max_array(a,min_value);
    
        }
        //完成二次膨胀运算
        //write_file(f_g2, SignalLength);//test ok!!!
        for (n=0;n<SignalLength;n++){
            min_value=min((lengthf-n),lengthg);
             if (min_value!=lengthg){
                RENEW(a,int,min_value);
             }
            for (m=0;m<min_value;m++){
               a1=f_g2[n+m]-Structure[m];
               a[m]=a1;
            }
              f_gg[n]=min_array(a,min_value);
        }
    //完成二次腐蚀运算。完成闭运算。
        //write_file(f_gg, SignalLength);//test ok
    
        //memcpy(ReturnSignal,f_gg,SignalLength);
        for (i=0;i<SignalLength;i++)
            ReturnSignal[i]=f_gg[i];
    
        free(f_g1);
        f_g1=NULL;
        free(f_gg1);
        f_gg1=NULL;
        free(f_g2);
        f_g2=NULL;
        free(f_gg);
        f_gg=NULL;
    
    
        free(a);
        a=NULL;
    }
    展开全文
  • 形态滤波具体例子

    2017-10-10 21:35:51
    形态滤波具体例子 形态学滤波 主要用于故障诊断模式识别 等领域
  • 图像形态滤波

    2013-01-28 16:22:29
    二值图像形态滤波和灰度图像形态滤波操作的Matlab实现
  • 形态滤波实时绘画抽象
  • 形态滤波代码

    2013-01-28 13:34:25
    形态滤波,各种算法。可修改后实现各种组合
  • 为了快速、准确地对气固两相流速度进行测量,介绍一种利用形态滤波和空间滤波处理气固两相流信号的基本方法,首先研究电容传感器的空间滤波效应,并找出固体速度和电容传感器带宽之间的关系.然后通过对一维形态滤波...
  • 形态滤波的matlab程序

    热门讨论 2013-10-21 20:49:33
    一个矩形波加上一个脉冲信号,用形态滤波进行降噪
  • 形态滤波的matlab代码

    2013-10-21 20:51:08
    矩形波加上一个随机信号后,进行形态滤波进行降噪
  • 针对三维时域内Green函数的求解问题,提出一种基于数学形态滤波算子的求解方法,将数学形态滤波算子运算过程分解为形态膨胀过程、形态腐蚀过程、开运算过程和闭运算过程,并通过结构元素优化的方式得到信号振幅和...
  • 主要包括数字形态滤波(开闭运算组成)以及大津法即OTSU求最适合值
  • 基于形态滤波和层叠滤波的混合滤波器设计,朱建明,吕振肃,在利用全方位多角度结构元形态滤波器的细节保持能力的基础上, 结合最优全方位结构元约束层叠滤波器的思想, 提出了一种混合滤波器��
  • 并利用图像质量评价方法测量在不同噪声水平、不同参数配置下,软形态滤波输出图像的图像质量,分析软形态滤波的去噪性能变化情况。结果表明,在笔者所设噪声条件下,在小模板时,软形态滤波可获得与经典形态滤波基本完全 ...
  • 基于DTCWT和形态滤波的PPG信号降噪方法
  • 基于形态滤波的非线性时间序列降噪方法,章立军,杨德斌,提出一种基于形态滤波的非线性时间序列降噪方法。由于非线性信号通常具有与高斯白噪声类似的宽频带特征,因此采用小波分析等传统
  • 基于形态滤波的PCB图像增强方法研究.pdf
  • 本文采用较成熟的ICA算法——FastICA,对仿真的PLC含噪信号进行去噪,并用辅助的形态滤波算法去除信号的基线漂移,最终得到较纯净的PLC信号,通过实验证明此方法对于PLC去噪是有很好的应用前景。
  • 基于多变量属性分类的图像形态滤波方法研究
  • 针对传统煤矿电机滚动轴承故障诊断信号噪声大和诊断效率低等问题,提出了一种基于经验模态分解和形态滤波的轴承故障诊断方法。仿真结果验证了所提方法的可行性和有效性。
  • 针对电力系统采样信号,提出一种采用不同采样频率的广义形态滤波方法。该方法滤除白噪声和脉冲噪声时采用较高频率;滤除直流偏移时采用低频率。结构元素选取为与水平方向夹角为零度的直线型结构元素。由于滤除直流偏移...
  • 针对在旋转机械振动信号采集过程中引入的噪声污染和基线漂移等问题,采用形态开一闭和闭一开组合运算对染噪的...通过在仿真信号中加入不同的噪声干扰检验形态滤波方法的降噪能力,并将形态滤波方法用于现场信号的降噪
  • 提出了一种新的用于抑制散斑噪声的非线性加权均值多方向形态滤波算法.对实际激光雷达图像处理的结果表明,该算法既有效地抑制了激光雷达图像中的散斑噪声,又保持了图像的几何结构.
  • 为实现形态滤波在实时数字信号系统中的应用,通过对一维形态滤波算法理论分析,推导出可用于实时运算的表达方式.对结构元素进行讨论,揭示了结构元素在实时信号处理中选取的一般规律.通过实验实现对数字信号的实时...
  • 为了从强干扰噪声中有效提取低电压芯片电泳电色谱分离图谱,有效抑制噪声干扰,提高测量精确度及稳定性,结合低电压芯片非接触电导检测器输出信号特点,将数学形态滤波算法应用到含有强噪声干扰的芯片电泳电色谱信号...
  • 为有效诊断轴承早期的微弱故障,将形态滤波方法用于轴承故障声发射信号的处理,提出采用多尺度形态开闭和闭开组合的滤波器对信号降噪处理,采用闭运算对降噪后的信号进行形态滤波解调得到明显的故障特征频率,并对比...
  • 针对分水岭分割易产生过分割问题,提出一种基于融合自适应形态滤波的分水岭分割算法。该算法对图像进行多结构多尺度自适应形态滤波处理,从而抑制图像的暗噪声和暗纹理细节。为了增强目标和背景的对比度,进行高低帽...
  • 形态滤波算法

    2017-12-04 21:53:42
    形态学运算是针对二值图像,依据数学形态学集合论方法发展起来的图像处理方法。其主要内容是设计一整套的变换、概念和算法,用以描述图像的基本特征。这里利用形态学运算对一维数据进行处理,把呼吸基线去除,得到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,334
精华内容 3,333
关键字:

形态滤波