Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV中图像频率域滤波

OpenCV中图像频率域滤波

作者头像
OpenCV学堂
发布于 2019-07-23 03:30:18
发布于 2019-07-23 03:30:18
1.9K10
代码可运行
举报
运行总次数:0
代码可运行

点击上方↑↑↑“OpenCV学堂”关注我

代码演示如何在图像频率域实现卷积模糊与梯度提取

图像频率域

图像处理不仅可以在空间域进行还可以在频率域进行,把空间域的图像开窗卷积形式,变换得到频率域的矩阵点乘形式得到比较好的效果。转换到频率域最常见的是通过傅里叶变换得到图像的频率域表示,处理之后再反变换回去。支持各种卷积处理的效果,比如模糊,梯度提取等,OpenCV中支持傅里叶变换与逆变换的函数分别为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 傅里叶变换函数
void cv::dft(
    InputArray src,
    OutputArray dst,
    int flags = 0,
    int nonzeroRows = 0 
)
# 傅里叶逆变换函数
void cv::idft(
    InputArray src,
    OutputArray dst,
    int flags = 0,
    int nonzeroRows = 0 
)

低通滤波

低通滤波可以看成是卷积模糊在频率域的表现形式,代码实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def low_pass_filter_demo():
    image = cv.imread("D:/images/test1.png", cv.IMREAD_GRAYSCALE)
    img_float32 = np.float32(image)

    rows, cols = image.shape
    crow, ccol = rows//2 , cols//2

    # FFT变换
    dft = cv.dft(img_float32, flags = cv.DFT_COMPLEX_OUTPUT)
    dft_shift = np.fft.fftshift(dft)

    # 创建低通滤波器,低频区域为 1, 高频区域为 0
    mask = np.zeros((rows, cols, 2), np.uint8)
    mask[crow-30:crow+30, ccol-30:ccol+30] = 1

    # 滤波
    fshift = dft_shift*mask

    # 逆变换
    f_ishift = np.fft.ifftshift(fshift)
    img_back = cv.idft(f_ishift)
    img_back = cv.magnitude(img_back[:,:,0],img_back[:,:,1])
    cv.normalize(img_back, img_back, 0, 1.0, cv.NORM_MINMAX)

    cv.imshow("input", image);
    cv.imshow("low-pass-filter", img_back)
    cv.imwrite("D:/low_pass.png", np.uint8(img_back*255))
    cv.waitKey(0)
    cv.destroyAllWindows()

高通滤波

高通滤波可以看成是图像梯度在频率域的计算,代码实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def high_pass_filter_demo():
    image = cv.imread("D:/images/test1.png", cv.IMREAD_GRAYSCALE)
    img_float32 = np.float32(image)

    rows, cols = image.shape
    crow, ccol = rows//2 , cols//2

    # FFT变换
    dft = cv.dft(img_float32, flags = cv.DFT_COMPLEX_OUTPUT)
    dft_shift = np.fft.fftshift(dft)

    # 创建高通滤波器,低频区域为 0, 高频区域为 1
    mask = np.ones((rows, cols, 2), np.uint8)
    mask[crow-30:crow+30, ccol-30:ccol+30] = 0

    # 滤波
    fshift = dft_shift*mask

    # 逆变换
    f_ishift = np.fft.ifftshift(fshift)
    img_back = cv.idft(f_ishift)
    img_back = cv.magnitude(img_back[:,:,0],img_back[:,:,1])
    cv.normalize(img_back, img_back, 0, 1.0, cv.NORM_MINMAX)

    cv.imshow("input", image);
    cv.imshow("high-pass-filter", img_back)
    cv.imwrite("D:/high_pass.png", np.uint8(img_back*255))
    cv.waitKey(0)
    cv.destroyAllWindows()

运行效果如下:

往期精选

告诉大家你 在看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
大佬,请问C#里可以调用Opencv吗
大佬,请问C#里可以调用Opencv吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
OpenCV系列之傅里叶变换 | 三十
傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。关于这些的详细信息可以在任何图像处理或信号处理教科书中找到。请参阅其他资源部分。
磐创AI
2019/12/23
1.5K0
OpenCV系列之傅里叶变换 | 三十
使用傅里叶变换进行图像边缘检测
简单来说,傅里叶变换是将输入的信号分解成指定样式的构造块。例如,首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f(x),之后,仅查看f(x)的图像缺无法了解使用哪种或多少原始函数来生成f(x)。
小白学视觉
2020/04/15
1.7K0
【OpenCV】Chapter6.频率域图像滤波
OpenCV 中的cv.dft()函数也可以实现图像的傅里叶变换,cv.idft()函数实现图像傅里叶逆变换。
zstar
2022/09/26
1.6K0
【OpenCV】Chapter6.频率域图像滤波
低通滤波
算法:低通滤波将傅里叶变换结果图像中的高频分量值都替换为0,即屏蔽高频信号,只保留低频信号,实现低通滤波。低频信号对应图像内变化缓慢的灰度分量。低通滤波器使高频信号衰减而让低频信号通过,图像进行低通滤波后会变模糊。
裴来凡
2022/05/28
5140
低通滤波
Python气象数据处理与绘图:常见的10种图像滤波方法
1.中值滤波(medianBlur) 中值滤波是非线性的图像处理方法,在去噪的同时可以兼顾到边界信息的保留。选一个含有奇数点的窗口,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值。
郭好奇同学
2021/08/26
2.2K0
Python气象数据处理与绘图:常见的10种图像滤波方法
OpenCV 图像频域操作
频域乘法表现在空域中等效于卷积计算,但是计算量会大大降低,本文记录 OpenCV 实现频域操作图像的相关内容。 概述 图像处理一般分为空间域处理和频率域处理,空间域处理是直接对图像内的像素进行处理。频率域处理是先将图像变换到频率域,然后在频率域对图像进行处理,最后通过反变换将图像变为空间域。傅里叶变换可以将图像变换为频率域, 傅立叶反变换再将频率域变换为空间域。 在频域里,对于一幅图像,高频部分代表了图像的、纹理信息;低频部分则代表了图像的轮廓信息。如果图像受到的噪声恰好在某个特定的频率范围内
为为为什么
2022/08/09
6280
OpenCV 图像频域操作
高通滤波
算法:高通滤波将傅里叶变换结果图像中的低频分量值都替换为0,即屏蔽低频信号,只保留高频信号,实现高通滤波。高通滤波器使低频信号衰减而让高频信号通过,将增强图像中尖锐细节,但是会导致图像对比度降低。高频信号对应图像内变化越来越快的灰度分量,是由灰度尖锐过渡造成的。
裴来凡
2022/05/28
6710
高通滤波
带通滤波器
算法:带通滤波器是容许一定频率范围信号通过, 但减弱(或减少)频率低于下限截止频率和高于上限截止频率信号通过。
裴来凡
2022/05/29
2200
带通滤波器
带阻滤波器
算法:带阻滤波器是减弱(或减少)一定频率范围信号, 但容许频率低于下限截止频率和高于上限截止频率信号通过。
裴来凡
2022/05/29
3580
带阻滤波器
频域变换
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 喜欢就点一点在看
跋扈洋
2021/02/02
3540
频域变换
Python图像处理:频域滤波降噪和图像增强
来源:DeepHub IMBA本文约4300字,建议阅读8分钟本文将讨论图像从FFT到逆FFT的频率变换所涉及的各个阶段,并结合FFT位移和逆FFT位移的使用。 图像处理已经成为我们日常生活中不可或缺的一部分,涉及到社交媒体和医学成像等各个领域。通过数码相机或卫星照片和医学扫描等其他来源获得的图像可能需要预处理以消除或增强噪声。频域滤波是一种可行的解决方案,它可以在增强图像锐化的同时消除噪声。 快速傅里叶变换(FFT)是一种将图像从空间域变换到频率域的数学技术,是图像处理中进行频率变换的关键工具。通过利用图
数据派THU
2023/04/08
1K0
Python图像处理:频域滤波降噪和图像增强
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
开源地理空间基金会中文分会 Pillow (PIL Fork) 10.0.1 文档
用户2225445
2024/04/14
6030
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
数字图像处理学习笔记(十二)——频率域滤波
滤波器:抑制或最小化某些频率的波和震荡的装置或材料 低通滤波器抑制或最小化高频率的波 高通滤波器抑制或最小化低频率的波 频率:自变量单位变化期间内,一个周期函数重复相同值序列的次数
荣仔_最靓的仔
2021/02/02
2.8K0
数字图像处理学习笔记(十二)——频率域滤波
组合滤波器
算法:组合滤波器是先对图片添加椒盐噪声,先采用中值滤波器进行去噪处理,然后采用巴特沃斯低通滤波和同态滤波混合滤波器进行图像处理。
裴来凡
2022/05/29
4280
组合滤波器
看 AI 如何抢救破烂文档
非结构化数据是指没有固定格式和规则的数据,例如文本、图片、视频、音频等。随着信息技术的迅速发展,非结构化数据越来越多,越来越重要,主要原因如下:
不吃西红柿
2023/10/16
2440
看 AI 如何抢救破烂文档
OpenCV源码系列|图像去摩尔纹
摩尔纹 去摩尔纹(不知能否看出区别) 代码实现: #include "opencv2/opencv.hpp" typedef cv::Mat Mat; Mat image_add_border( Mat &src ) { int w=2*src.cols; int h=2*src.rows; std::cout << "src: " << src.cols << "*" << src.rows << std::endl; cv::Mat padded;
用户9831583
2022/06/16
1K0
OpenCV源码系列|图像去摩尔纹
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
全栈程序员站长
2022/11/04
2.1K0
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
OpenCV Python 系列教程 4 - OpenCV 图像处理(上)
HSV 的色相范围为 [0,179],饱和度范围为 [0,255],值范围为 [0,255]。不同的软件使用不同的规模。
机器视觉CV
2019/07/15
3.1K0
OpenCV Python 系列教程 4 - OpenCV 图像处理(上)
OpenCV 图像分析之 —— 频域变换
图像可以转换到其他空间进行分析和处理,本文记录 OpenCV 分析算子中的频域变换相关内容。 离散傅里叶变换 定义 对于任意以离散参数为索引的数值集合,都可以通过与连续傅里叶变换相似的方法来定义离散傅里叶变换(DFT)。对于N个复数 {x_{0}, x_{1}, x_{2}, /ldots, x_{N-1}} ,一维 DFT 由如下公式(其中 i=/sqrt{-1} ): g_{k}=\sum_{n=0}^{N-1} f_{n} e^{-\frac{2 \pi i}{N} k n} 相似的,对于二维数
为为为什么
2022/08/09
2K0
OpenCV 图像分析之 —— 频域变换
Python opencv图像处理基础总结(二) ROI操作与泛洪填充 模糊操作 边缘保留滤波EPF
ROI(Region Of Interest),感兴趣区域,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,经常用来连接图像。
叶庭云
2020/09/17
3.1K0
Python  opencv图像处理基础总结(二)  ROI操作与泛洪填充  模糊操作  边缘保留滤波EPF
相关推荐
OpenCV系列之傅里叶变换 | 三十
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验