欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 二维高斯滤波 傅里叶-凯发k8官方网

发布时间:2024/10/14 循环神经网络 22 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.频域滤波与图像增强

1.1 基本步骤

(1) zero padding
(2) spectrum centralization
(3) dft:
(4) symmetry
(5)
(6) idft :
(7) from with size top-left part.

1.2 matlab代码

clc,close all;
i = imread('byh.jpg');% matlab库里面有图源 cell.tif
i = rgb2gray(i);
[m,n] = size(i); % m为行,n为列
j = zeros(2*m,2*n);
% 进行扩展
for i=1:m
    for j=1:n
        j(i,j) = i(i,j);
    end
end
% 中心化处理 spectrum ccentralization
k = j;
for i=1:m
    for j=1:n
        k(i,j) = i(i,j)*(-1).^(i j);
    end
end
% 傅里叶变换
f = log(1 fft2(im2double(k)));
% h 函数
h = zeros(2*m,2*n);
square = 70; % 滤波函数 h 的边长 
h(m-square:m square,n-square:n square)=1;
% 相乘
ff = f .* h;
% 反傅里叶变换
ff = ifft2(exp(ff)-1);
ff_r = real(ff);
ff_final = ff_r;
for i=1:2*m
    for j=1:2*n
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end

subplot(241),imshow(i,[]),xlabel('(a) 原图');
subplot(242),imshow(j,[]),xlabel('(b) 进行扩展操作后的图片');
subplot(243),imshow(k,[]),xlabel('(c) 频域中心化后的图像');
subplot(244),imshow(f,[]),xlabel('(d) 傅里叶变换后的图像');
subplot(245),imshow(h,[]),xlabel('(e) 自制的低通滤波器');
subplot(246),imshow(ff,[]),xlabel('(f) 低通滤波处理后的图像');
subplot(247),imshow(ff_final,[]),xlabel('(g) 反傅里叶变换后的图像');
subplot(248),imshow(ff_final(1:m,1:n),[]),xlabel('(h) 取(g)图中的左上部分');

result:

如果不进行扩展,直接进行(低通)滤波,结果如下:

clc,close all;
i = imread('byh.jpg');% matlab库里面有图源 cell.tif
i = rgb2gray(i);
[m,n] = size(i); % m为行,n为列
j = zeros(m,n);
% 进行扩展
for i=1:m
    for j=1:n
        j(i,j) = i(i,j);
    end
end
% 中心化处理 spectrum ccentralization
k = j;
for i=1:m
    for j=1:n
        k(i,j) = i(i,j)*(-1).^(i j);
    end
end
% 傅里叶变换
f = log(1 fft2(im2double(k)));
% h 函数
h = zeros(m,n);
square = 35; % 滤波函数 h 的边长 
h(round(m/2)-square:round(m/2) square,round(n/2)-square:round(n/2) square)=1;
% 相乘
ff = f .* h;
% 反傅里叶变换
ff = ifft2(exp(ff)-1);
ff_r = real(ff);
ff_final = ff_r;
for i=1:m
    for j=1:n
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end

subplot(241),imshow(i,[]),xlabel('(a) 原图');
subplot(242),imshow(j,[]),xlabel('(b) 进行扩展操作后的图片');
subplot(243),imshow(k,[]),xlabel('(c) 频域中心化后的图像');
subplot(244),imshow(f,[]),xlabel('(d) 傅里叶变换后的图像');
subplot(245),imshow(h,[]),xlabel('(e) 自制的低通滤波器');
subplot(246),imshow(ff,[]),xlabel('(f) 低通滤波处理后的图像');
subplot(247),imshow(ff_final,[]),xlabel('(g) 反傅里叶变换后的图像');
subplot(248),imshow(ff_final(1:m,1:n),[]),xlabel('(h) 取(g)图中的左上部分');

只修改了部分代码,表达清楚意思即可hhh  ;-)

result:

2 频域滤波器分类

2.1 低通滤波器

理想低通滤波器(ilpf)特点:物理上不可实现;有抖动现象;滤除高频成分使图像变模糊

其中,

d0为截止频率;p = 2m,q = 2n,m,n为待滤波图像的尺寸。

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = ilpf_zh(p,q,70); % 滤波矩阵 / 系统传递函数
f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')   
%% 理想低通滤波器
function h = ilpf_zh(p,q,d0)
% p = 2551;q = 2551;% p和q均为奇数
h = zeros(p,q);
% d0 = 20;
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        if d             h(i,j) = 1;
        end
    end
end
end

result

巴特沃思(butterworth)低通滤波器 blpf

其中,

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = blpf_zh(p,q,70,2); % 巴特沃思(butterworth)低通滤波矩阵 / 系统传递函数

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')   
%% 巴特沃思(butterworth)低通滤波器
function h = blpf_zh(p,q,d0,n)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1/(1 (d/d0)^(2*n));
    end
end
end

result

高斯低通滤波器(glpf)

其中,

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = glpf_zh(p,q,50);     % 高斯低通滤波器(glpf)

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')   
%% 高斯低通滤波器(glpf)
function h = glpf_zh(p,q,d0)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = exp(-(d)^2 / (2 * d0^2));
    end
end
end

result

2.2 高通滤波器

通常,频域高通滤波器可以看成是频域低通滤波器的反操作,即

理想高通滤波器(ihpf)

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = ihpf_zh(p,q,15);   % 理想高通滤波矩阵 / 系统传递函数

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')  
%% 理想高通滤波器
function h = ihpf_zh(p,q,d0)
h = ones(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        if d             h(i,j) = 0;
        end
    end
end
end

result

巴特沃思(butterworth)高通滤波器

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = bhpf_zh(p,q,8,2); % 巴特沃思(butterworth)高通滤波矩阵 / 系统传递函数

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')   
%% 巴特沃思(butterworth)高通滤波器
function h = bhpf_zh(p,q,d0,n)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1/(1 (d0/d)^(2*n));
    end
end
end

result

高斯高通滤波器(glpf)

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
h = ghpf_zh(p,q,8);   % 高斯高通滤波器(glpf)

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像') 
%% 高斯高通滤波器(ghpf)
function h = ghpf_zh(p,q,d0)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1 - exp(-(d)^2 / (2 * d0^2));
    end
end
end

result

汇合在一起的代码如下:

clc,close all;
i = imread('kobi.png');% matlab库里面有图源 cell.tif byh.jpg
i = rgb2gray(i);
[p,q] = size(i); % m为行,n为列
f = log(1 fftshift(fft2(i))); % 显示频谱
% h = ilpf_zh(p,q,70);   % 理想低通滤波矩阵 / 系统传递函数
% h = blpf_zh(p,q,70,2); % 巴特沃思(butterworth)低通滤波矩阵 / 系统传递函数
% h = glpf_zh(p,q,50);     % 高斯低通滤波器(glpf)
% h = ihpf_zh(p,q,15);   % 理想高通滤波矩阵 / 系统传递函数
% h = bhpf_zh(p,q,8,2); % 巴特沃思(butterworth)高通滤波矩阵 / 系统传递函数
h = ghpf_zh(p,q,8);   % 高斯高通滤波器(glpf)

f_new = f .* h; % 滤波后的频谱
f_ishift = ifft2(exp(f_new)-1);
ff_r = real(f_ishift);
ff_final = ff_r;
for i=1:p
    for j=1:q
        ff_final(i,j) = ff_final(i,j) * (-1)^(i j);
    end
end
imshow(ff_final,[])
subplot(231),imshow(i,[]),xlabel('(a) 原图');    
subplot(232),imshow(f,[]),xlabel('(b) 原图的频谱');   
subplot(233),imshow(h,[]),xlabel('(c) 滤波器');    
subplot(234),x=1:1:p;y=1:1:q;[x,y]=meshgrid(x,y);mesh(x,y,h');xlabel('(d) 滤波器三维展示');   
subplot(235),imshow(f_new,[]),xlabel('(e) 滤波后的频谱');    
subplot(236),imshow(ff_final,[]),xlabel('(f) 滤波后的图像')   
%% 理想低通滤波器
function h = ilpf_zh(p,q,d0)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        if d             h(i,j) = 1;
        end
    end
end
end
%% 巴特沃思(butterworth)低通滤波器
function h = blpf_zh(p,q,d0,n)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1/(1 (d/d0)^(2*n));
    end
end
end
%% 高斯低通滤波器(glpf)
function h = glpf_zh(p,q,d0)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = exp(-(d)^2 / (2 * d0^2));
    end
end
end

%% 理想高通滤波器
function h = ihpf_zh(p,q,d0)
h = ones(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        if d             h(i,j) = 0;
        end
    end
end
end

%% 巴特沃思(butterworth)高通滤波器
function h = bhpf_zh(p,q,d0,n)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1/(1 (d0/d)^(2*n));
    end
end
end
%% 高斯高通滤波器(ghpf)
function h = ghpf_zh(p,q,d0)
h = zeros(p,q);
for i=1:p
    for j=1:q
        d = ((i - round((p 1)/2))^2   (j - round((q 1)/2))^2)^0.5;
        h(i,j) = 1 - exp(-(d)^2 / (2 * d0^2));
    end
end
end

end

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图