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.tifI = 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);    endend% 中心化处理 Spectrum ccentralizationK = J;for i=1:m    for j=1:n        K(i,j) = I(i,j)*(-1).^(i+j);    endend% 傅里叶变换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);    endend

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.tifI = 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);    endend% 中心化处理 Spectrum ccentralizationK = J;for i=1:m    for j=1:n        K(i,j) = I(i,j)*(-1).^(i+j);    endend% 傅里叶变换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);    endend

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 = 2NM,N为待滤波图像的尺寸。

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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    endendend

RESULT

巴特沃思(Butterworth)低通滤波器 BLPF

其中,

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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));    endendend

RESULT

高斯低通滤波器(GLPF)

其中,

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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));    endendend

RESULT

2.2 高通滤波器

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

理想高通滤波器(IHPF)

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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    endendend

RESULT

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

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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));    endendend

RESULT

高斯高通滤波器(GLPF)

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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));    endendend

RESULT

汇合在一起的代码如下:

clc,close all;I = imread('kobi.png');% MATLAB库里面有图源 cell.tif byh.jpgI = 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);    endendimshow(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    endendend%% 巴特沃思(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));    endendend%% 高斯低通滤波器(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));    endendend

%% 理想高通滤波器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    endendend

%% 巴特沃思(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));    endendend%% 高斯高通滤波器(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));    endendend

END

matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)相关推荐

  1. matlab 二维高斯滤波 傅里叶_机器视觉 03.2 频域低通滤波

    本文介绍常见三种频域低通滤波器:理想低通.布特沃斯.高斯低通滤波器 (1)理想低通滤波器(ILPF) 小于截止频率的全部保留 其中 表示点(u,v)到频域原点的距离,D0表示截止频率. 对图像分别用不 ...

  2. python二维数据读取对齐_从投影的二维直方图绘制对齐的x,y一维直方图

    我需要生成一个类似于this example中所示的图像: 不同之处在于,我用numpy的histogram2d生成了一个二维直方图,并用imshow和gridspec绘制了二维直方图: 如何将二维直 ...

  3. python扫描二维码输出内容_通过python扫描二维码/条形码并打印数据

    需提前安装好pyzbar和opencv-python库(博主的电脑安装opencv-python库比较麻烦,但大部分都不会出现该问题) 安装方法:打开命令框输入 pip install pyzbar/ ...

  4. python中序列类型是二维元素向量吗_序列类型是二维元素向量,元素之间存在先后关系,通过序号访问。...

    [填空题]MapReduce 计算模式中, Map (映射)的主要任务是:负责输入数据的 . . ,输出 . [多选题]大数据的特征包括( ). [判断题]中断服务过程中如果允许中断嵌套,则优先级高的 ...

  5. python发票二维码条码识别_通过python扫描二维码/条形码并打印数据

    需提前安装好pyzbar和opencv-python库(博主的电脑安装opencv-python库比较麻烦,但大部分都不会出现该问题) 安装方法:打开命令框输入 pip install pyzbar/ ...

  6. python二维数组切片规则_详解Python二维数组与三维数组切片的方法

    如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间 ...

  7. 二维dct变换例题_数字图像处理试题(带答案)

    样题: 2002级通信工程专业<数字图像处理>试题A卷 课程代码:考试时间:120分钟 Image Processing Final Exam 一.名词解释(2小题,每题5分,共10分) ...

  8. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数

    二维高斯函数 高斯函数在图像滤波.边缘检测等中发挥着重要的作用.高斯滤波是典型的低通滤波,对图像有平滑作用.同时,高斯函数的一阶.二阶导数也可以用于高通滤波,比如canny算子中用到的是高斯函数的一阶 ...

  9. 高斯 二维 matlab,MATLAB实例:二维高斯分布图

    MATLAB实例:二维高斯分布图 问题描述:用MATLAB在一张图上同时画出二维高斯散点图与分布图. 数据来源:MATLAB高斯混合数据的生成 将二维数据保存为gauss_data.txt. 前期工作 ...

最新文章

  1. 数据通信技术(九:OSPF特殊区域配置(Cisco))
  2. 下面首先来看GCD的使用
  3. 【Android 逆向】ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )
  4. [转载] 中国好声音120720
  5. 【Python 必会技巧】判断字符串是否为字母/数字/大小写/空白字符/有效标识符/可打印字符
  6. pyecharts 绘制地图
  7. 北妈每日总结: 2019年前端人必须学会写博客
  8. C语言 指针与结构体
  9. 05章 体检套餐管理系统
  10. 计算机网络安全技术期末试题,归纳计算机网络安全技术期末复习试题 doc
  11. Java批量下载有道单词发音+与Anki卡片整合
  12. java 安卓 物联网_面向物联网的Android应用开发与实践
  13. java模拟键盘输入中文_Appium+java 模拟键盘输入
  14. python编程用什么软件-python用什么软件编写
  15. python爬取百度贴吧图片库_python爬取百度贴吧的图片2
  16. 机器学习中【回归算法】详解
  17. mysql存储过程基础写法
  18. QOpenGLWidget运行时闪退
  19. Memcache是什么
  20. ShaderForge适用于unity 2018x、2019x、2020版本

热门文章

  1. 【原创】自动更新程序2--更新程序的主窗体(技术:spring.net+三层架构+webservice+IrisSkin2换肤)...
  2. 1047. 删除字符串中的所有相邻重复项
  3. 大学生html5设计大赛方案,2018年大学生三维设计大赛策划书范文
  4. vue-router常见问题解决方案。(滚轴回到顶部、页面跳转同一页面报错、手机电脑端路由跳转)
  5. 原码、反码、补码的运算 【2分钟掌握】
  6. go mod导入本地包的正确引入方法:require + replace
  7. HBase cell
  8. JavaFX控件ID:设置Label文本内容代码示例
  9. arthas使用示例:trace追踪方法调用路径及统计方法耗时
  10. Linux配置静态IP地址