高通滤波
低通滤波
FFT

解决方案 »

  1.   

    滤波算法可分为:空域的和频域的。
    空域比较简单,实现起来也比较简单,好多书上都有例子。
    频域比较复杂,就是对图象的FFT变换程序实现起来比较麻烦。
      

  2.   

    频域比较复杂,就是对图象的FFT变换程序实现起来比较麻烦。
    我就想知道频域的,哪里有资料?和程序?
      

  3.   

    <visual c++ 数字图像处理>上有现成的程序.<精通图像编程>周润发编的也有.其实二者是一个.边
    推算文字都一样.也不知他们在那一本书上找的.我数学不好.看了半天也没看明白.现在用不着就没看.你看明白给我讲讲.
      

  4.   

    VOID WINAPI FFT(struct _complex * TD, struct _complex * FD, int r)
     {   // 付立叶变换点数
     
     LONG count;

    // 循环变量
    int i,j,k;

    // 中间变量
    int bfsize,p;

    // 角度
    double angle;

    struct _complex *W,*X1,*X2,*X;

    // 计算付立叶变换点数
    count = 1 << r;

    // 分配运算所需存储器
    W  = new struct _complex[count/2];
    X1 =new struct _complex[count];
    X2 = new struct _complex[count];
    //struct _complex W[100];
    // 计算加权系数
    for(i = 0; i < count / 2; i++)
    {
    angle = -i * PI * 2 / count;
    double a,b;
    a=cos(angle);
    b=sin(angle);
    W[i].x=a;
    W[i].y=b;
    }

    // 将时域点写入X1
    memcpy(X1, TD, sizeof(struct _complex) * count); // 采用蝶形算法进行快速付立叶变换
    for(k = 0; k < r; k++)
    {
    for(j = 0; j < 1 << k; j++)
    {
    bfsize = 1 << (r-k);
    for(i = 0; i < bfsize / 2; i++)
    {
    p = j * bfsize;
    X2[i + p] = add(X1[i + p],X1[i + p + bfsize / 2]);
    X2[i + p + bfsize / 2] = mul(sub(X1[i + p],X1[i + p + bfsize / 2]),W[i * (1<<k)]);
    }
    }
    X  = X1;
    X1 = X2;
    X2 = X;
    }

    // 重新排序
    for(j = 0; j < count; j++)
    {
    p = 0;
    for(i = 0; i < r; i++)
    {
    if (j&(1<<i))
    {
    p+=1<<(r-i-1);
    }
    }
    FD[j]=X1[p];
    }}
    *************************************
    struct _complex add(struct _complex a,struct _complex b)
    {
    struct _complex c;
    c.x=a.x+b.x;
    c.y=a.y+b.y;
    return c;
    }
    struct _complex mul(struct _complex a,struct _complex b)
    {struct _complex c;
    c.x=a.x*b.x-a.y*b.y;
    c.y=a.x*b.y+a.y*b.x;
    return c;
    }
    struct _complex sub(struct _complex a,struct _complex b)
    {struct _complex c;
    c.x=a.x-b.x;
    c.y=a.y-b.y;
    return c;
    }
    自己好好看吧!  Good luck!
      

  5.   

    谢谢楼上的
    我用了FFT,可是看不出来对处理过后的图象那是什么意思呢?怪怪的。
    能否告诉我怎么高通或者低通滤波?
    谢谢sond(莫同心) 先
      

  6.   

    首先得设计滤波器吧。
    滤波器可以是时域的,也可以是频域的。
    时域滤波,其实就是卷积操作。
    如果滤波器尺寸较大,可转换成频域进行操作。
    这时就可用到FFT。
    原理就是时域卷积,等价频域乘积,
    在进行IFFT,就可得到所要结果。
      

  7.   


      FFT处理后的图形显示是和你的画图的横纵坐标相关的.你可以试着调整调整你的纵坐标幅度,因为VC的坐标设置是和实际相反的.
     
        至于你要的高通和低通,抱歉我没玩过,你自己在找找资料吧.
      活活,你自己搭一个高通低通率波器不就行了.