• 如果对直方图进行频域滤波会怎样


    原直方图:

    进行一维离散余弦变换,公式如下:

    参考代码如下:

    View Code
    private int[] fourier() {
    
                int[] ft = new int[256];
                int N = 256;
    
                double Cu = 1;
                for(int u = 0; u < N; u++){
    
                    if(u == 0){
                        Cu = 1.0/Math.Sqrt(2);
                    }
    
                    double sum = 0;
                    for(int x = 0; x < N;x++){
                        sum += grays[x]*Math.Cos((2*x + 1) * u *Math.PI/(2*N));
                    }
                    double temp = Cu * Math.Sqrt(2.0 / N) * sum;
                    ft[u] = (int)temp;
                }
               return ft;
    
            }

    反变换的公式如下:

    参考代码如下:

    View Code
    private int[] invertFourier() {
    
                int[] inverseft = new int[256];
                int N = 256;
    
                for (int x = 0; x < N; x++)
                {
                    double sum = 0;
                    sum =(1/ Math.Sqrt(2.0)) * ditong[0];
                    for (int u = 1; u < N; u++)
                    {
    
                        sum += ditong[u] * Math.Cos((2 * x + 1) * u * Math.PI / (2 * N));
                    }
                    double temp = Math.Sqrt(2.0 / N) * sum;
                    inverseft[x] = Math.Abs((int)temp);
                }
                return inverseft;
            }

    两式中,系数C(u)的取值按照如下规则:

    其中,u是频域变量,x是灰度值,f(x)是对应灰度值的统计量。

    将直方图进行DCT变换后,得到频谱图像如图:

    按照当初的设想,滤去频率高的部分,可以使波形平滑。

    低通

    假设使用理想低通滤波器,即,设定一个阈值D0,高于D0的部分的频率被抑制,低于D0的部分可以通过。

    假设D0为直流分量的0.618倍,则频域滤波及进行反DCT变换后的的效果为:

    如果将D0设为直流分量的0.5倍,则效果为:

    将D0设为直流分量的0.2倍,则效果为:

    将D0设为直流分量的0.1倍,则效果为:

     

    高通-按照个数取舍频率时

    如果对直方图曲线进行高通,那么会有如下效果:

    情况1:只保留直流分量时:

    情况2:保留直流分量,和前10个交流分量时:

    对比原直方图,可以看到已经出现了大致的轮廓:

    情况3:保留直流分量及前20个交流分量时:

    此时,形态就更接近原直方图了:

    情况4:保留直流分量及前30个交流分量时:

    情况5:保留直流分量及前50个交流分量时

    高通-按照频率大小进行取舍

    D0=0.9*直流分量时:

    D0=0.8*直流分量时:

    D0=0.5*直流分量时:

    D0=0.4*直流分量时:

    D0=0.3*直流分量时:

    D0=0.2*直流分量时:

    D0=0.1*直流分量时:

    D0=0.05*直流分量时:

  • 相关阅读:
    Android Matrix(坐标矩阵)
    Android 修改底部导航栏navigationbar的颜色
    Java跨平台原理
    Java的平台无关性
    AudioManager --- generateAudioSessionId
    Android中使用logwrapper来重定向应用程序的标准输出
    Linux指令
    HLS -- m3u8档案格式解析
    新購電腦筆記
    Android多媒体--MediaCodec 中文API文档
  • 原文地址:https://www.cnblogs.com/elaron/p/2544639.html
Copyright © 2020-2023  润新知