OpenCV离散余弦变换原理与源码

环境配置:VS2012  OpenCV2.4.9

代码:

#include "highgui.h"
#include "math.h"
#include "cv.h"
#include "stdlib.h"

using namespace cv;

void DCT(Mat &src, Mat &dst)
{
	double pi = 3.141592657;
	Mat C_Mat(src.rows,src.cols, CV_64FC1);
	Mat CT_Mat(src.rows,src.cols, CV_64FC1);

	for(int j=0;j<C_Mat.rows;j++)
		C_Mat.at<double>(0,j) = sqrt(2.0/(C_Mat.rows))*sqrt(1.0/2);

	for(int i=1;i<C_Mat.rows;i++)
		for(int j=0;j<C_Mat.cols;j++)
			C_Mat.at<double>(i,j) = sqrt(2.0/(C_Mat.rows))*cos(pi*(i-1)*(2*j-1)/2/(C_Mat.rows));

	CT_Mat = C_Mat.t();

	dst = C_Mat*src*CT_Mat;
}

void main()
{
	Mat img = imread("D:/Pic/4.jpg",0);
	//imshow("img",img);
	Mat src(img.rows,img.cols,CV_64FC1);
	img.convertTo(src,CV_64FC1);
	//imshow("src",src);
	Mat dst(src.rows,src.cols,CV_64FC1);
	DCT(src,dst);
	imshow("dst",dst);
	cvWaitKey(0);
}



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OpenCV中的离散余弦变换(Discrete Cosine Transformation,DCT)是一种频率变换方法,用于将图像从空域转换到频域。在OpenCV中,可以通过cv2.dct()函数实现离散余弦变换离散余弦变换是一种用于将图像从空域转换到频域的数学变换方法。它将图像分解为一系列的频率分量,其中低频分量代表图像的平滑部分,高频分量代表图像的细节部分。 在进行离散余弦变换之前,首先需要将图像的数据类型转换为浮点型,以便进行精确计算。然后,通过cv2.dct()函数对图像进行离散余弦变换。变换后的结果是一个与原始图像大小相同的数组,其中包含了变换后的频率分量。 根据需要,可以对变换结果进行进一步的处理,例如对数变换(np.log())或反变换(cv2.idct())。最后,可以将结果图像显示出来,以便观察变换的效果。 总结起来,OpenCV中的离散余弦变换是一种将图像从空域转换到频域的方法,通过cv2.dct()函数实现。可以对变换结果进行进一步处理,以得到所需的频率分量信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python3+OpenCV(五):离散余弦变换(DCT)](https://blog.csdn.net/Seven_WWW/article/details/108202905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Opencv_100问_第八章 (36-40)](https://blog.csdn.net/Fioman_GYM/article/details/125312251)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值