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

原直方图:

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

参考代码如下:

复制代码
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*直流分量时:

posted @   elar  阅读(3144)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示