图像的幅度谱与相位谱

news/2024/11/19 23:40:09/

图像幅度谱与相位谱的代码演示,本例使用泰勒斯威夫特的图像作为图像素材。代码如下所示:

#include<iostream>
#include<opencv2/opencv.hpp>
#include<math.h>
using namespace std;
using namespace cv;
Mat Magnitude(Mat Re, Mat Im);
Mat Phase(Mat Re, Mat Im);
int main()
{Mat src = imread("T.jpg");Mat gray_src;cvtColor(src, gray_src, CV_BGR2GRAY);imshow("灰度化输入图像", gray_src);int m = getOptimalDFTSize(gray_src.rows);int n = getOptimalDFTSize(gray_src.cols);Mat padded;copyMakeBorder(gray_src, padded, 0, m - gray_src.rows, 0, n - gray_src.cols, BORDER_CONSTANT, Scalar::all(0));//中心化for (int row = 0; row < padded.rows; row++){for (int col = 0; col < padded.cols; col++){padded.at<uchar>(row, col) *= pow(-1, row + col);}}Mat planes[] = { Mat_<float>(padded),Mat::zeros(padded.size(),CV_32F) };Mat complexI;merge(planes, 2, complexI);dft(complexI, complexI);split(complexI, planes);Mat amplitude = Magnitude(planes[0], planes[1]);amplitude += Scalar::all(1);log(amplitude, amplitude);normalize(amplitude, amplitude, 0, 1, NORM_MINMAX);imshow("幅度谱", amplitude);Mat angle = Phase(planes[0], planes[1]);normalize(angle, angle, 0, 1, NORM_MINMAX);imshow("angle", angle);waitKey(0);system("pause");return 0;
}
Mat Magnitude(Mat Re, Mat Im)
{Mat rst = Mat::zeros(Re.rows, Re.cols, CV_32F);for (int row = 0; row < Re.rows; row++){for (int col = 0; col < Re.cols; col++){rst.at<float>(row, col) = sqrt(pow(Re.at<float>(row, col), 2) + pow(Im.at<float>(row, col), 2));}}return rst;
}
Mat Phase(Mat Re, Mat Im)
{Mat rst = Mat::zeros(Re.rows, Re.cols, CV_32F);for (int row = 0; row < Re.rows; row++){for (int col = 0; col < Re.cols; col++){rst.at<float>(row, col) = atan2(Im.at<float>(row, col) , Re.at<float>(row, col));}}return rst;
}

效果如下所示:
首先将彩色图像转换为灰度图像(单通道)
在这里插入图片描述
而后求得的幅度谱如下所示:
在这里插入图片描述
相位谱如下所示:
在这里插入图片描述
经验证,幅度谱与相位谱的计算结果与opencv提供的magnitude和phase这两个API的运算结果一致。


http://www.ppmy.cn/news/377914.html

相关文章

【实战】文本驱动的StyleGAN2图像处理(二):潜码映射器(Latent Mapper)

StyleCLIP项目由以色列的耶路撒冷希伯来大学、特拉维夫大学和Adobe研究所共同完成&#xff0c;它用对比语言—图像预训练&#xff08;CLIP&#xff09;模型的力量&#xff0c;为StyleGAN2 图像处理开发一个基于文本的输入界面&#xff0c;利用StyleGAN2的潜在空间来操纵生成的S…

20230318----重返学习-交叉信息监听事件IntersectionObserver-AJAX基础-瀑布流

day-030-thirty-20230318-交叉信息监听事件IntersectionObserver-AJAX基础-瀑布流 交叉信息监听事件IntersectionObserver IntersectionObserver&#xff1a;监听器&#xff0c;监控盒子在视口中出现的交叉信息 语法: IntersectionObserver(函数,对象) 入参 函数 (changes)&g…

html5的经典特效思路

其实特效&#xff08;Special Effect&#xff09;的概念很宽泛&#xff0c;无论电影、电视还是游戏&#xff0c;需要特技处理的效果都能被叫做特效。那H5特效呢&#xff1f;简单地说&#xff0c;就是 在网页中实现各种具有想象力的技法&#xff0c;比如触摸碎屏、画卷收缩、冰块…

图片社交巨头Instagram谋求对音乐圈的更多合作?

Instagram从2010年被推出以来&#xff0c;用户数已经有了显著增长&#xff0c;该社交平台现在已经拥有4亿活跃用户。他们会花费大量时间上传图片和短视频&#xff0c;并与朋友分享。越来越多的艺术家也发现&#xff0c;Instagram是一个可以有效推广自己作品以及和粉丝即时互动的…

6个div+CSS3实现网页显示我女神的图片旋转木马效果~~

今天翻到一位博主用htmlcss为女朋友做个旋转摩天轮图片转动&#xff0c;有点心动阿&#xff01; 在下用现有的技术照猫画虎了一篇&#xff0c;在下用旋转木马转动的页面展示我女神泰勒的图片&#xff01;&#xff01; 先上效果图&#xff1a; 注&#xff1a;在下不知道怎么让…

眼见不一定为实——视频、图片编辑技术“妖魔化”

我们现在生活在一个PhotoShop时代&#xff0c;PS已经成了一个动词。自从有了PS以后&#xff0c;很多事情变成了可能&#xff0c;因而网上各种图片的真实性变得难以分辨。 一、PS技术 Adobe作为著名的图形图像和排版软件的生产商&#xff0c;旗下的Photoshop、Premiere、After E…

6.1 图片切换练习;6.2 添加删除记录练习;6.3 divMove练习;6.4 轮播图练习

返回目录《JavaScript学习笔记目录》 6.1 图片切换练习 6.2 添加删除记录练习 6.3 divMove练习 6.4 轮播图练习 6.1 图片切换练习 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片切换练习&l…

[“吊打面试官“系列之] 一晚带你玩转图片懒加载及其底层原理

一晚带你玩转图片懒加载及其底层原理 课程大纲 从浏览器底层渲染机制分析懒加载的意义最初基于JS盒模型实现的懒加载方案基于getBoundingClientRect的进阶方案手撕Lodash源码中的debounce&#xff08;函数防抖&#xff09;手撕Lodash源码中的throttle&#xff08;函数节流&am…