在MATLAB中通过高通巴特沃斯滤波器实现高频加重

时间:2018-10-07 05:51:18

标签: matlab highpass-filter butterworth

所以我的主要代码如下:

    filter = a + b * butterworth([P Q], 0.1, 1);

    dft_input_p = dft(input_p, 'DFT');
    dft_filter = dft(filter, 'DFT');

    G = dft_input_p .* dft_filter;
    g = dft(G, 'IDFT');

    img_result = im2uint8(real(g));

a和b是高频强调的参数,P和Q是输入照片的零填充尺寸。

我的Butterworth过滤器实现代码:

function f = butterworth(size, cutoff, n)
    [u v]=meshgrid(-floor(size(2)/2):floor(size(2)/2)-1,-floor(size(1)/2):floor(size(1)/2)-1);
    D = (u .^ 2 + v .^ 2) .^ (0.5);
    D = cutoff ./ D;
    D = D .^ (2 * n);
    f = 1 ./ (1 + D);
end

dft和idft函数由我自己实现,由于我在某些图像上对其进行了测试,因此我可以保证它们没有错误。但是,当我在图像上同时应用Butterworth高通滤波器和高频重点时,我无法获得正确的输出图像。输出的图像完全空白。

Image throughout the whole program

0 个答案:

没有答案