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.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 = 2N
,M,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 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)相关推荐
- matlab 二维高斯滤波 傅里叶_机器视觉 03.2 频域低通滤波
本文介绍常见三种频域低通滤波器:理想低通.布特沃斯.高斯低通滤波器 (1)理想低通滤波器(ILPF) 小于截止频率的全部保留 其中 表示点(u,v)到频域原点的距离,D0表示截止频率. 对图像分别用不 ...
- python二维数据读取对齐_从投影的二维直方图绘制对齐的x,y一维直方图
我需要生成一个类似于this example中所示的图像: 不同之处在于,我用numpy的histogram2d生成了一个二维直方图,并用imshow和gridspec绘制了二维直方图: 如何将二维直 ...
- python扫描二维码输出内容_通过python扫描二维码/条形码并打印数据
需提前安装好pyzbar和opencv-python库(博主的电脑安装opencv-python库比较麻烦,但大部分都不会出现该问题) 安装方法:打开命令框输入 pip install pyzbar/ ...
- python中序列类型是二维元素向量吗_序列类型是二维元素向量,元素之间存在先后关系,通过序号访问。...
[填空题]MapReduce 计算模式中, Map (映射)的主要任务是:负责输入数据的 . . ,输出 . [多选题]大数据的特征包括( ). [判断题]中断服务过程中如果允许中断嵌套,则优先级高的 ...
- python发票二维码条码识别_通过python扫描二维码/条形码并打印数据
需提前安装好pyzbar和opencv-python库(博主的电脑安装opencv-python库比较麻烦,但大部分都不会出现该问题) 安装方法:打开命令框输入 pip install pyzbar/ ...
- python二维数组切片规则_详解Python二维数组与三维数组切片的方法
如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间 ...
- 二维dct变换例题_数字图像处理试题(带答案)
样题: 2002级通信工程专业<数字图像处理>试题A卷 课程代码:考试时间:120分钟 Image Processing Final Exam 一.名词解释(2小题,每题5分,共10分) ...
- 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数
二维高斯函数 高斯函数在图像滤波.边缘检测等中发挥着重要的作用.高斯滤波是典型的低通滤波,对图像有平滑作用.同时,高斯函数的一阶.二阶导数也可以用于高通滤波,比如canny算子中用到的是高斯函数的一阶 ...
- 高斯 二维 matlab,MATLAB实例:二维高斯分布图
MATLAB实例:二维高斯分布图 问题描述:用MATLAB在一张图上同时画出二维高斯散点图与分布图. 数据来源:MATLAB高斯混合数据的生成 将二维数据保存为gauss_data.txt. 前期工作 ...
最新文章
- 数据通信技术(九:OSPF特殊区域配置(Cisco))
- 下面首先来看GCD的使用
- 【Android 逆向】ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )
- [转载] 中国好声音120720
- 【Python 必会技巧】判断字符串是否为字母/数字/大小写/空白字符/有效标识符/可打印字符
- pyecharts 绘制地图
- 北妈每日总结: 2019年前端人必须学会写博客
- C语言 指针与结构体
- 05章 体检套餐管理系统
- 计算机网络安全技术期末试题,归纳计算机网络安全技术期末复习试题 doc
- Java批量下载有道单词发音+与Anki卡片整合
- java 安卓 物联网_面向物联网的Android应用开发与实践
- java模拟键盘输入中文_Appium+java 模拟键盘输入
- python编程用什么软件-python用什么软件编写
- python爬取百度贴吧图片库_python爬取百度贴吧的图片2
- 机器学习中【回归算法】详解
- mysql存储过程基础写法
- QOpenGLWidget运行时闪退
- Memcache是什么
- ShaderForge适用于unity 2018x、2019x、2020版本
热门文章
- 【原创】自动更新程序2--更新程序的主窗体(技术:spring.net+三层架构+webservice+IrisSkin2换肤)...
- 1047. 删除字符串中的所有相邻重复项
- 大学生html5设计大赛方案,2018年大学生三维设计大赛策划书范文
- vue-router常见问题解决方案。(滚轴回到顶部、页面跳转同一页面报错、手机电脑端路由跳转)
- 原码、反码、补码的运算 【2分钟掌握】
- go mod导入本地包的正确引入方法:require + replace
- HBase cell
- JavaFX控件ID:设置Label文本内容代码示例
- arthas使用示例:trace追踪方法调用路径及统计方法耗时
- Linux配置静态IP地址