数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image

来源:互联网 发布:网络会计论文参考文献 编辑:程序博客网 时间:2024/06/14 21:44

实验要求:
这里写图片描述

高通滤波器可以通过1减去低通滤波器的传递函数得到。
使用公式这里写图片描述 计算可以的得到这里写图片描述

实验代码:

% PROJECT 04-04 Highpass Filtering Using a Lowpass Imageclose all;clc;clear all;%img = imread('Fig4.11(a).jpg');img = mat2gray(img);figure;subplot(2,2,1);imshow(img);title('原图像');% 产生滤波函数[M, N] = size(img);P = 2 * M;Q = 2 * N;alf = 50;H = zeros(P, Q);for i = 1:P    for j = 1:Q        H(i, j) = exp(-((i-P/2)^2 + (j-Q/2)^2) / (2 * alf^2));    endend% H = ones(P, Q);subplot(2,2,2);imshow(H);title('滤波函数');%% 图像填充[M, N] = size(img);P = 2 * M;Q = 2 * N;img_fp = zeros(P, Q);img_fp(1:M, 1:N) = img(1:M, 1:N);% [X, Y] = meshgrid(1:P, 1:Q);% ones = (-1)^(X+Y);% img_f = ones .* img_fp;img_f = zeros(P, Q);for x = 1:P    for y = 1:Q        img_f(x, y) = img_fp(x, y) .* (-1)^(x+y);    endendimg_F = fft2(img_f);img_G = img_F .* H;img_g = real(ifft2(img_G));% img_g = ones .* img_g;for x = 1:P    for y = 1:Q        img_g(x, y) = img_g(x, y) .* (-1)^(x+y);    endendimg_o = img_g(1:M, 1:N);subplot(2,2,3);imshow(img_o, []);title('高斯低通滤波后的图像');%img_gmask = img_o - img;subplot(2,2,4);imshow(img_gmask, []);title('高斯高通滤波后的图像');

前面的代码与此前的实验相同,下面是最后的高通滤波处理。img_o 是前面得到的高斯低通滤波处理后的图像,使用原图像减去它,得到的就是高斯高通滤波后的图像了。

img_gmask = img_o - img;subplot(2,2,4);imshow(img_gmask, []);title('高斯高通滤波后的图像');

实验结果:
这里写图片描述

阅读全文
0 0