许昌做网站九零后个人电脑做网站服务器
许昌做网站九零后,个人电脑做网站服务器,8一9岁的手工,wordpress主题读取不到【OpenCV 完整例程】77. OpenCV 实现快速傅里叶变换 欢迎关注 『OpenCV 完整例程 100 篇』 系列#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列#xff0c;持续更新中 傅里叶变换在理论上需要 O(MN)2O(MN)^2O(MN)2 次运算#xff0c;非常耗时#xff1…【OpenCV 完整例程】77. OpenCV 实现快速傅里叶变换 欢迎关注 『OpenCV 完整例程 100 篇』 系列持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列持续更新中 傅里叶变换在理论上需要 O(MN)2O(MN)^2O(MN)2 次运算非常耗时快速傅里叶变换只需要 O(MNlog(MN))O(MN log (MN))O(MNlog(MN)) 次运算就可以完成。
OpenCV 中的傅里叶变换函数 cv.dft() 对于行数和列数都可以分解为 2p∗3q∗5r2^p * 3^q * 5^r2p∗3q∗5r 的矩阵的计算性能最好。为了提高运算性能可以对原矩阵的右侧和下方补 0以满足该分解条件。OpenCV 中的
cv.getOptimalDFTSize() 函数可以实现图像的最优 DFT 尺寸扩充适用于 cv.dft() 和 np.fft.fft2()。
函数说明 cv.getOptimalDFTSize(versize) → retval参数说明
versize数组大小retvalDFT 扩充的最优数组大小
使用 OpenCV 中的 cv.dft() 函数也可以实现图像的傅里叶变换cv.idft() 函数实现图像傅里叶逆变换。
函数说明 cv.dft(src[, dst[, flags[, nonzeroRows]]]) → dstcv.idft(src[, dst[, flags[, nonzeroRows]]]) → dst参数说明
src输入图像单通道灰度图像使用 np.float32 格式dst输出图像图像大小与 src 相同数据类型由 flag 决定flag转换标识符 cv.DFT_INVERSE用一维或二维逆变换取代默认的正向变换cv.DFT_SCALE缩放比例标识根据元素数量求出缩放结果常与DFT_INVERSE搭配使用cv.DFT_ROWS: 对输入矩阵的每行进行正向或反向的傅里叶变换常用于三维或高维变换等复杂操作cv.DFT_COMPLEX_OUTPUT对一维或二维实数数组进行正向变换默认方法结果是由 2个通道表示的复数阵列第一通道是实数部分第二通道是虚数部分cv.DFT_REAL_OUTPUT对一维或二维复数数组进行逆变换结果通常是一个尺寸相同的复数矩阵
注意事项
输入图像 src 是 np.float32 格式如图像使用 np.uint8 格式则必须先转换 np.float32 格式。默认方法 cv.DFT_COMPLEX_OUTPUT 时输入 src 是 np.float32 格式的单通道二维数组输出 dst 是 2个通道的二维数组第一通道 dft[:,:,0] 是实数部分第二通道 dft[:,:,1] 是虚数部分。不能直接用于显示图像。可以使用 cv.magnitude() 函数将傅里叶变换的结果转换到灰度 [0,255]。idft(src, dst, flags) 等价于 dft(src, dst, flagsDFT_INVERSE)。OpenCV 实现傅里叶变换计算速度比 Numpy 更快。
转换标识符为 cv.DFT_COMPLEX_OUTPUT 时cv.dft() 函数的输出是 2个通道的二维数组使用 cv.magnitude() 函数可以实现计算二维矢量的幅值 。
例程 8.12OpenCV 快速傅里叶变换 # 8.12OpenCV 快速傅里叶变换imgGray cv2.imread(../images/Fig0429a.tif, flags0) # flags0 读取为灰度图像rows,cols imgGray.shape[:2] # 图像的行(高度)/列(宽度)# 快速傅里叶变换(要对原始图像进行矩阵扩充)rPad cv2.getOptimalDFTSize(rows) # 最优 DFT 扩充尺寸cPad cv2.getOptimalDFTSize(cols) # 用于快速傅里叶变换imgEx np.zeros((rPad,cPad,2),np.float32) # 对原始图像进行边缘扩充imgEx[:rows,:cols,0] imgGray # 边缘扩充下侧和右侧补0dftImgEx cv2.dft(imgEx, cv2.DFT_COMPLEX_OUTPUT) # 快速傅里叶变换# 傅里叶逆变换idftImg cv2.idft(dftImgEx) # 逆傅里叶变换idftMag cv2.magnitude(idftImg[:,:,0], idftImg[:,:,1]) # 逆傅里叶变换幅值# 矩阵裁剪得到恢复图像idftMagNorm np.uint8(cv2.normalize(idftMag, None, 0, 255, cv2.NORM_MINMAX)) # 归一化为 [0,255]imgRebuild np.copy(idftMagNorm[:rows, :cols])print(max(imgGray-imgRebuild) , np.max(imgGray-imgRebuild))print(imgGray:{}, dftImg:{}, idftImg:{}, imgRebuild:{}.format(imgGray.shape, dftImgEx.shape, idftImg.shape, imgRebuild.shape))plt.figure(figsize(9, 6))plt.subplot(131), plt.title(Original image), plt.axis(off)plt.imshow(imgGray, cmapgray)plt.subplot(132), plt.title(Log-trans of DFT amp), plt.axis(off)dftAmp cv2.magnitude(dftImgEx[:,:,0], dftImgEx[:,:,1]) # 幅度谱中心化dftAmpLog np.log(1 dftAmp) # 幅度谱对数变换以便于显示plt.imshow(cv2.normalize(dftAmpLog, None, 0, 255, cv2.NORM_MINMAX), cmapgray)plt.subplot(133), plt.title(Rebuild image with IDFT), plt.axis(off)plt.imshow(imgRebuild, cmapgray)plt.tight_layout()plt.show()本节完 版权声明
youcansxupt 原创作品转载必须标注原文链接
Copyright 2021 youcans, XUPT
Crated2022-1-20 欢迎关注 『OpenCV 例程200篇』 系列持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列持续更新中 【OpenCV 例程200篇】01. 图像的读取cv2.imread 【OpenCV 例程200篇】02. 图像的保存cv2.imwrite 【OpenCV 例程200篇】03. 图像的显示cv2.imshow 【OpenCV 例程200篇】04. 用 matplotlib 显示图像plt.imshow 【OpenCV 例程200篇】05. 图像的属性np.shape 【OpenCV 例程200篇】06. 像素的编辑img.itemset 【OpenCV 例程200篇】07. 图像的创建np.zeros 【OpenCV 例程200篇】08. 图像的复制np.copy 【OpenCV 例程200篇】09. 图像的裁剪cv2.selectROI 【OpenCV 例程200篇】10. 图像的拼接np.hstack 【OpenCV 例程200篇】11. 图像通道的拆分cv2.split 【OpenCV 例程200篇】12. 图像通道的合并cv2.merge 【OpenCV 例程200篇】13. 图像的加法运算cv2.add 【OpenCV 例程200篇】14. 图像与标量相加cv2.add 【OpenCV 例程200篇】15. 图像的加权加法cv2.addWeight 【OpenCV 例程200篇】16. 不同尺寸的图像加法 【OpenCV 例程200篇】17. 两张图像的渐变切换 【OpenCV 例程200篇】18. 图像的掩模加法 【OpenCV 例程200篇】19. 图像的圆形遮罩 【OpenCV 例程200篇】20. 图像的按位运算 【OpenCV 例程200篇】21. 图像的叠加 【OpenCV 例程200篇】22. 图像添加非中文文字 【OpenCV 例程200篇】23. 图像添加中文文字 【OpenCV 例程200篇】23. 图像添加中文文字 【OpenCV 例程200篇】24. 图像的仿射变换 【OpenCV 例程200篇】25. 图像的平移 【OpenCV 例程200篇】26. 图像的旋转以原点为中心 【OpenCV 例程200篇】27. 图像的旋转以任意点为中心 【OpenCV 例程200篇】28. 图像的旋转直角旋转 【OpenCV 例程200篇】29. 图像的翻转cv2.flip 【OpenCV 例程200篇】30. 图像的缩放cv2.resize 【OpenCV 例程200篇】31. 图像金字塔cv2.pyrDown 【OpenCV 例程200篇】32. 图像的扭变错切 【OpenCV 例程200篇】33. 图像的复合变换 【OpenCV 例程200篇】34. 图像的投影变换 【OpenCV 例程200篇】35. 图像的投影变换边界填充 【OpenCV 例程200篇】36. 直角坐标与极坐标的转换 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理 【OpenCV 例程200篇】38. 图像的反色变换图像反转 【OpenCV 例程200篇】39. 图像灰度的线性变换 【OpenCV 例程200篇】40. 图像分段线性灰度变换 【OpenCV 例程200篇】41. 图像的灰度变换灰度级分层 【OpenCV 例程200篇】42. 图像的灰度变换比特平面分层 【OpenCV 例程200篇】43. 图像的灰度变换对数变换 【OpenCV 例程200篇】44. 图像的灰度变换伽马变换 【OpenCV 例程200篇】45. 图像的灰度直方图 【OpenCV 例程200篇】46. 直方图均衡化 【OpenCV 例程200篇】47. 图像增强—直方图匹配 【OpenCV 例程200篇】48. 图像增强—彩色直方图匹配 【OpenCV 例程200篇】49. 图像增强—局部直方图处理 【OpenCV 例程200篇】50. 图像增强—直方图统计量图像增强 【OpenCV 例程200篇】51. 图像增强—直方图反向追踪 【OpenCV 例程200篇】52. 图像的相关与卷积运算 【OpenCV 例程200篇】53. Scipy 实现图像二维卷积 【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积 【OpenCV 例程200篇】55. 可分离卷积核 【OpenCV 例程200篇】56. 低通盒式滤波器 【OpenCV 例程200篇】57. 低通高斯滤波器 【OpenCV 例程200篇】58. 非线性滤波—中值滤波 【OpenCV 例程200篇】59. 非线性滤波—双边滤波 【OpenCV 例程200篇】60. 非线性滤波—联合双边滤波 【OpenCV 例程200篇】61. 导向滤波Guided filter 【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽 【OpenCV 例程200篇】63. 图像锐化——Laplacian 算子 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子 【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通 【OpenCV 例程200篇】67. 空间域图像增强的综合应用 【OpenCV 例程200篇】68. 空间域图像增强的综合应用 【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数 【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换 【OpenCV 例程200篇】71. 连续函数的取样 【OpenCV 例程200篇】72. 一维离散傅里叶变换 【OpenCV 例程200篇】73. 二维连续傅里叶变换 【OpenCV 例程200篇】74. 图像的抗混叠 【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换 【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换 【OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换 【OpenCV 例程200篇】78. 频率域图像滤波基础 【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤 【OpenCV 例程200篇】80. 频率域图像滤波详细步骤 【OpenCV 例程200篇】81. 频率域高斯低通滤波器 【OpenCV 例程200篇】82. 频率域巴特沃斯低通滤波器 【OpenCV 例程200篇】83. 频率域低通滤波印刷文本字符修复 【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器 【OpenCV 例程200篇】85. 频率域高通滤波器的应用 【OpenCV 例程200篇】86. 频率域滤波应用指纹图像处理 【OpenCV 例程200篇】87. 频率域钝化掩蔽 【OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波 【OpenCV 例程200篇】89. 带阻滤波器的传递函数 【OpenCV 例程200篇】90. 频率域陷波滤波器 【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声 【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声 【OpenCV 例程200篇】93. 噪声模型的直方图 【OpenCV 例程200篇】94. 算术平均滤波器 【OpenCV 例程200篇】95. 几何均值滤波器 【OpenCV 例程200篇】96. 谐波平均滤波器 【OpenCV 例程200篇】97. 反谐波平均滤波器 【OpenCV 例程200篇】98. 统计排序滤波器 【OpenCV 例程200篇】99. 修正阿尔法均值滤波器 【OpenCV 例程200篇】100. 自适应局部降噪滤波器
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89626.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!