距上次说的DCT处理有段时间了。8*8DCT就是对图片进行划分为多个8*8块的方正进行DCT处理,然后对处理后的矩阵进行量化(这个处理对原图是有损的),由DCT处理的特征,我们对处理后的矩阵进行zigzag scan。具体原理请见:jpeg压缩原理(大牛的)
代码附上:
// myDCT.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "winsock.h"
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
using namespace std;
void dct(IplImage* img);
void zigzag(CvMat* m,int n,vector<double> &v);
vector<double> v;
int _tmain(int argc, _TCHAR* argv[])
{
const char* img_name="image_0002.jpg";
IplImage* img=cvLoadImage(img_name,1);
if(!img)//载入失败
{
cout<<"load image fail!"<<endl;
system("pause");
return -1;
}
if