opencv 图片的离散傅里叶变换DFT
来源:互联网 发布:成套配电箱报价软件 编辑:程序博客网 时间:2024/05/06 08:52
copyMakeBorder(InuptArray src, OutputArray dst, int top , int bottom, int left, int right, int borderType, const Scalar&value=Scalar())
该函数是用来扩展一个图像的边界
src: 源图像
dst: 目标图像,和源图像有相同的类型
top:表示在上边界扩展多少像素
bottom:表示在下边界扩展多少像素
left:表示在左边界扩展多少像素
right: 表示在右边界扩展多少像素
borderType: 边框类型
value: 当borderType==BORDER_CONSTANT时需要指定该值。
merge()函数是把多个但通道数组连接成1个多通道数组,而split()函数则相反,把1个多通道函数分解成多个但通道函数#include<iostream>#include<opencv2\opencv.hpp>using namespace std;using namespace cv;int main(int argc, int **argv) {Mat src, dst;src = imread("F:\\img\\game02.jpg",0);dst = Mat::zeros(src.size(), src.type());if (!src.data) {cout << "src image open failed !" << endl;}//得到扩展图像的最佳尺寸,当图像的尺寸为2,3,5的整数倍时,计算速度最快int m = getOptimalDFTSize(src.rows);int n = getOptimalDFTSize(src.cols);Mat padded;//对图像边界进行扩充copyMakeBorder(src, padded, 0, m - src.rows, 0, n - src.cols, BORDER_CONSTANT, Scalar::all(0));//为傅里叶变换结果(实部和虚部)分配存储空间Mat plane[] = {Mat_<float>(padded),Mat::zeros(padded.size(),CV_32F)};Mat complexI;merge(plane, 2,complexI);//傅里叶变换dft(complexI, complexI);//将复数转换为幅值split(complexI,plane);Mat magnitudeImg;magnitude(plane[0],plane[1],plane[0]);magnitudeImg = plane[0];//进行对数尺度缩放magnitudeImg += Scalar::all(1);log(magnitudeImg, magnitudeImg);//重新分布图像的象限//若有奇数列或奇数行,进行频谱裁剪magnitudeImg = magnitudeImg(Rect(0, 0, magnitudeImg.cols &-2, magnitudeImg.rows &-2));//计算图像的中心int cx = magnitudeImg.cols / 2;int cy = magnitudeImg.rows / 2;Mat p0(magnitudeImg,Rect(0, 0, cx, cy));//ROI左上Mat p1(magnitudeImg,Rect(cx, 0, cx, cy));//ROI右上Mat p2(magnitudeImg,Rect(0, cy, cx, cy));//ROI左下Mat p3(magnitudeImg,Rect(cx, cy, cx, cy));//ROI右下//左上和右下进行交换Mat temp1;p0.copyTo(temp1);p3.copyTo(p0);temp1.copyTo(p3);//右上和左下进行交换Mat temp2;p1.copyTo(temp2);p2.copyTo(p1);temp2.copyTo(p2);//归一化normalize(magnitudeImg, magnitudeImg, 0, 1, NORM_MINMAX);imshow("原图", src);imshow("DFT幅值", magnitudeImg);waitKey(0);return 0;}
结果:
1 0
- opencv 图片的离散傅里叶变换DFT
- OpenCV学习离散傅里叶变换(DFT)
- opencv之离散傅里叶变换(DFT)
- OpenCV离散傅里叶变换(DFT前篇)
- DFT(离散傅里叶变换)
- 离散傅里叶变换DFT
- JavaScript DFT 离散傅里叶变换
- 离散傅里叶变换DFT
- 离散傅里叶变换(DFT)
- DFT离散傅里叶变换
- DFT离散傅里叶变换
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- OpenCV中文网站例程——离散傅里叶变换DFT
- opencv例程解读——dft(离散傅里叶变换)
- 离散傅里叶变换角 DFT Angle
- 离散傅里叶变换DFT基本原理图解
- 字符串
- 第十、十一周课后实践(1)
- 贝叶斯分类器-----数据挖掘
- 7,4汉明码及8,4扩展汉明码的实现
- SQL常用操作
- opencv 图片的离散傅里叶变换DFT
- 怎样用NiceLabel隐藏条码下的数据?
- Spring Boot 实践折腾记(五):自定义配置,扩展Spring MVC配置并使用fastjson
- WCF
- erlang 进程的 hibernate
- H-Index
- ThreadLocal的源码分析
- mybatis中使用in查询时的注意事项
- 618必须要占的便宜,抢一款适合你的智能穿戴产品