OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()

OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()

#include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//【1】以灰度模式读取原始图像并显示Mat srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/2.jpg", 0);if (!srcImage.data) { printf("读取图片错误,请确定目录下是否有imread函数指定图片存在~! \n"); return false; }imshow("原始图像", srcImage);//【2】将输入图像延扩到最佳的尺寸,填充边界(用0)// 返回给定向量尺寸的傅里叶最有尺寸大小 m,nint m = getOptimalDFTSize(srcImage.rows);int n = getOptimalDFTSize(srcImage.cols);//将添加的像素初始化为0.// 扩充图像边界://top +=0;button+=(m - srcImage.rows)//left +=0;right +=(n - srcImage.cols)Mat padded;copyMakeBorder(srcImage, padded, 0, m - srcImage.rows, 0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0));//imshow("src",srcImage);//【3】为傅立叶变换的结果(实部和虚部)分配存储空间。// 傅里叶变换的结果是复数,对于每个原图像值,结果会有两个图像值。// 此外,频域范围远远超过空间值范围,因此要将频域储存在 float 格式中。// 多加额外通道储存复数部分。Mat planes[] = { Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F) };Mat complexI;//将planes数组组合合并成一个多通道的数组complexImerge(planes, 2, complexI);//【4】进行就地离散傅里叶变换(输入输出均为同一图像)// 此图像有两个通道,分辨储存dft(complexI, complexI);//【5】将复数转换为幅值M,即// =>M=sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)// 将多通道数组complexI分离成几个单通道数组,// planes[0] = Re(DFT(I), planes[1] = Im(DFT(I))split(complexI, planes);magnitude(planes[0], planes[1], planes[0]);// planes[0] = magnitude//【6】进行对数尺度(logarithmic scale)缩放:// 傅里叶变换幅度值范围大到不适合于屏幕显示(高值白点,低值黑点)// 为了凸显高低值变化的连续性,我们用对数尺度替换线性尺度,即// =>M1=log(1 +M)Mat magnitudeImage = planes[0];magnitudeImage += Scalar::all(1);log(magnitudeImage, magnitudeImage);//求自然对数//【7】剪切和重分布幅度图象限//若有奇数行或奇数列,进行频谱裁剪magnitudeImage = magnitudeImage(Rect(0, 0, magnitudeImage.cols & -2, magnitudeImage.rows & -2));//重新排列傅立叶图像中的象限,使得原点位于图像中心int cx = magnitudeImage.cols / 2;int cy = magnitudeImage.rows / 2;Mat q0(magnitudeImage, Rect(0, 0, cx, cy));   // ROI区域的左上Mat q1(magnitudeImage, Rect(cx, 0, cx, cy));  // ROI区域的右上Mat q2(magnitudeImage, Rect(0, cy, cx, cy));  // ROI区域的左下Mat q3(magnitudeImage, Rect(cx, cy, cx, cy)); // ROI区域的右下//交换象限(左上与右下进行交换)Mat tmp;q0.copyTo(tmp);q3.copyTo(q0);tmp.copyTo(q3);//交换象限(右上与左下进行交换)q1.copyTo(tmp);q2.copyTo(q1);tmp.copyTo(q2);//【8】归一化,用0到1之间的浮点值将矩阵变换为可视的图像格式normalize(magnitudeImage, magnitudeImage, 0, 1, NORM_MINMAX);//【9】显示效果图imshow("频谱幅值", magnitudeImage);waitKey();return a.exec();
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作

OpenCV学习笔记&#xff08;四&#xff09;&#xff1a;XML,YAML(.txt,.doc)文件读写操作 一、Write_XML_and_YAML_File&#xff08;写入XML&#xff09; #include <opencv2/opencv.hpp> #include <time.h>using namespace cv;int main() {// 1、准备文件写操作F…

“用手机就能访问卫星” 软件定义升级卫星智能

▲“天智一号”是全球首颗实际开展工程研制并发射的软件定义卫星。软件所供图来源&#xff1a; 中国科学报▲专家学者探讨开源、开放的航天生态环境。沈春蕾摄“假设未来30年将发射10万颗&#xff0c;这些卫星该怎么造、怎么算、怎么用&#xff1f;”在日前召开的2019软件定义卫…

python的print函数输出带颜色字体

格式&#xff1a;print(\033[显示方式&#xff1b;前景色&#xff1b;背景色m 需要显示的文字 \033[0m) 其中"\033[显示方式&#xff1b;前景色&#xff1b;背景色m"是开头部分&#xff0c;"\033[0m"是结尾部分 说明&#xff1a; 开头部分有三个参数&…

OpenCV学习笔记(五):线性滤波-方框、均值、高斯:boxFilter(),blur(),GaussianBlur()

OpenCV学习笔记&#xff08;五&#xff09;&#xff1a;线性滤波-方框、均值、高斯&#xff1a;boxFilter(),blur(),GaussianBlur() 线性滤波&#xff1a;即多个信号之和的响应和它们各自响应之和相等。 参考&#xff1a; https://blog.csdn.net/poem_qianmo/article/details/…

NB-IoT与LoRa,两马领跑物联网竞赛,谁将最终胜出?

来源&#xff1a;电子工程专辑HS Markit报告指出&#xff0c;曾经广泛开放的LPWAN市场领域开始明显紧缩&#xff0c;不过仍处于初期发展阶段。2018年只有1.5亿个LPWAN链路被布署&#xff0c;到2023年NB-IoT与LoRa可望占据所有LPWAN链路的86%......根据市场研究机构IHS Markit发…

【全文】Libra回应质疑:Facebook将放弃控制权,不与主权货币竞争

Facebook的全球数字货币计划Libra遭到多方抨击质疑之后&#xff0c;将于明日直面国会听证会。目前Facebook能否发行数字货币&#xff0c;悬于监管机构的许可决定&#xff0c;而这也会成为数字货币命运的一个重要转折点。Libra项目的负责人David Marcus提前发布了他的证词。硅星…

Git从零教你入门(4):Git服务之 gogs部署安装

Git从零入门系列4:先看上一篇文章&#xff1a;http://www.51testing.com/index.php?uid-497177-action-viewspace-itemid-3706817今日主题&#xff1a;gogs安装部署环境&#xff1a;centos安装包地址&#xff1a;https://dl.gogs.io/gogs_v0.8.25_linux_amd64.zip部署步骤&…

OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()

OpenCV学习笔记&#xff08;六&#xff09;&#xff1a;非线性滤波-中值、双边&#xff1a;medianBlur(),bilateralFilter() 1、中值滤波&#xff08;Median filter&#xff09; 是一种典型的非线性滤波技术&#xff0c;基本思想是用像素点邻域灰度值的中值来代替该像素点的灰…

Batch Normalization原理及pytorch的nn.BatchNorm2d函数

下面通过举个例子来说明Batch Normalization的原理&#xff0c;我们假设在网络中间经过某些卷积操作之后的输出的feature map的尺寸为4322&#xff0c;4为batch的大小&#xff0c;3为channel的数目&#xff0c;22为feature map的长宽 整个BN层的运算过程如下图&#xff1a; 上…

OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

OpenCV学习笔记&#xff08;八&#xff09;&#xff1a;形态学morpholgy(2)&#xff1a;开、闭运算&#xff0c;形态学梯度、顶帽、黑帽&#xff1a;morphologyEx() 数学形态学&#xff08;Mathematical morphology&#xff09; 是一门建立在格论和拓扑学基础之上的图像分析学…

PPT将图片变为平行四边形形状

点击图片→ 格式→ 旋转→ 其它旋转选项→ 三维旋转

“人工智能之父”艾伦·图灵登上英国50英镑新钞

图源&#xff1a;BBC来源&#xff1a;海外网海外网7月15日电英国广播公司&#xff08;BBC&#xff09;报道&#xff0c;“计算机科学和人工智能之父”艾伦图灵登上英国50英镑新钞。此前有媒体报道称&#xff0c;英格兰银行计划于2020年推出新版50英镑&#xff0c;用更耐磨的聚合…

PPT将立方体形状变为很薄的长方体

方法是选中立方体&#xff0c;调节箭头所示的黄色节点&#xff0c;即可调节立方体的厚度&#xff1a;

OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()

OpenCV学习笔记&#xff08;七&#xff09;&#xff1a;形态学(morpholgy)&#xff1a;腐蚀/膨胀&#xff1a;enrode(),dilate() 数学形态学&#xff08;Mathematical morphology&#xff09; 是一门建立在格论和拓扑学基础之上的图像分析学科&#xff0c;是数学形态学图像处理…

【中台】“中台”概念究竟是什么?制造业企业需要拥抱吗?

来源&#xff1a;中国电子报“忽如一夜春风来&#xff0c;千树万树梨花开。” 这首诗形容当前“中台”概念的风靡非常恰当。IT圈里不乏新的概念、新的“网红”&#xff0c;如今&#xff0c;“中台”一词占据了C位&#xff0c;成为软硬件企业尤其是互联网企业在各大演讲中经常挂…

PPT立方体三面同色

我们知道PPT插入的立方体有一面的颜色比其它两面深一点&#xff0c;例如我插入一个立方体&#xff0c;并将其填充为白色&#xff1a; 可以看到有一面并不是白色&#xff0c;而是灰色。但如果我需要的是三面都为白色的立方体呢&#xff1f; 这时可以插入一个平行四边形&#xf…

OpenCV学习笔记(九): 漫水填充:floodFill()

OpenCV学习笔记&#xff08;九&#xff09;&#xff1a; 漫水填充&#xff1a;floodFill() 定义&#xff1a; 漫水填充法是一种用特定的颜色填充联通区域&#xff08;自动选中了和种子点相连的区域&#xff0c;接着将该区域替换成指定的颜色&#xff09;通过设置可连通像素的上…

68页PPT,读懂中、美、德三国智能制造战略!

来源&#xff1a;清华大学深圳研究生院导 读这份来自清华大学深圳研究生院物流与交通学部的研究和报告&#xff0c;分析了工业4.0趋势下德、中、美竞争与合作&#xff0c;共68页&#xff0c;对于ICT领域投资者是难得好文。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹联合推荐这…

OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

OpenCV学习笔记&#xff08;十&#xff09;&#xff1a;图像金字塔Pyramid和图像缩放&#xff1a;pyrDown(),pyrUp(),resize() 一、图像金字塔定义&#xff1a; 图像金字塔是图像中多尺度表达的一种&#xff0c;最主要用于图像的分割&#xff0c;是一种以多分辨率来解释图像的…

量子纠缠和宇宙黑洞

2019年7月&#xff0c;量子纠缠&#xff08;两个光子&#xff09;照片首次公布2019年4月&#xff0c;宇宙黑洞&#xff08;质量为太阳的65亿倍&#xff09;照片首次公布来源&#xff1a;吴志刚科学网博客量子纠缠和宇宙黑洞&#xff0c;一个极小&#xff0c;一个极大&#xff0…