• 大小: 3MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-14
  • 语言: 其他
  • 标签:

资源简介

是一个课程作业,在vs2013下写的一个完整jpeg编码程序,包含了完整的压缩过程从图像分块到最后三个通道分别被压缩为二进制码,但是不包含解码过程,用了几个opencv2.4.9中读取存储图像的函数

资源截图

代码片段和文件信息

#include
#include
#include
using namespace std;
using namespace cv;

#define height 8
#define width 8  //定义8*8块的高和宽 
#define Q 7 //定义控制量化步长的Q值
//定义亮度区域和色度区域的量化矩阵
int QY[8][8] = { { 16 11 10 16 24 40 51 61 }
{ 12 12 14 19 26 58 60 55 }
{ 14 13 16 24 40 57 69 56 }
{ 14 17 22 29 51 87 80 62 }
{ 18 22 37 56 68 109 103 77 }
{ 24 35 55 64 81 104 113 92 }
{ 49 64 78 87 103 121 120 101 }
{ 72 92 95 98 112 100 103 99 }
};
int QC[8][8] = { { 17 18 24 47 99 99 99 99 }
{ 18 21 26 66 99 99 99 99 }
{ 24 26 56 99 99 99 99 99 }
{ 47 66 99 99 99 99 99 99 }
{ 99 99 99 99 99 99 99 99 }
{ 99 99 99 99 99 99 99 99 }
{ 99 99 99 99 99 99 99 99 }
{ 99 99 99 99 99 99 99 99 }
};

//定义一个进行Zag-Zig扫描的表
int Zig_8[64] = { 0 1 8 16 9 2 3 10
17 24 32 25 18 11 4 5
12 19 26 33 40 48 41 34
27 20 13 6 7 14 21 28
35 42 49 56 57 50 43 36
29 22 15 23 30 37 44 51
58 59 52 45 38 31 39 46
53 60 61 54 47 55 62 63 };



//定义量化函数
void LH_QY(Mat &srcImage)
{
for (int i = 0; i < srcImage.rows; i++)
for (int j = 0; j < srcImage.cols; j++)
{
srcImage.at(i j) = round(srcImage.at(i j) / (QY[i][j]*Q));
}
}
void LH_QC(Mat &srcImage)
{
for (int i = 0; i < srcImage.rows; i++)
for (int j = 0; j < srcImage.cols; j++)
{
srcImage.at(i j) = round(srcImage.at(i j) / (QC[i][j]*Q));
}
}

//定义反量化函数
void ILH_QY(Mat &srcImage)
{
for (int i = 0; i < srcImage.rows; i++)
for (int j = 0; j < srcImage.cols; j++)
{
srcImage.at(i j) = srcImage.at(i j) * QY[i][j];
}
}
void ILH_QC(Mat &srcImage)
{
for (int i = 0; i < srcImage.rows; i++)
for (int j = 0; j < srcImage.cols; j++)
{
srcImage.at(i j) = srcImage.at(i j) * QC[i][j];
}
}


//定义了一个文件存储的函数 
void storage_int(Mat mat char* filename)
{
FILE *fp = fopen(filename “w“);
for (int i = 0; i < mat.rows; i++)
{
for (int j = 0; j < mat.cols; j++)
{
fprintf(fp “%d“ mat.at(i j));
fprintf(fp “\t“);
}
fprintf(fp “\n“);
}
fclose(fp);
}
void storage_float(Mat mat char* filename)
{
FILE *fp = fopen(filename “w“);
for (int i = 0; i < mat.rows; i++)
{
for (int j = 0; j < mat.cols; j++)
{
fprintf(fp “%f“ mat.at(i j));
fprintf(fp “\t“);
}
fprintf(fp “\n“);
}
fclose(fp);
}

//存储行程编码的非零数之间的0的个数,非零数
struct Temp_1
{
string number_zero;
string value;
};
//存储0的个数,非零数二进制编码,编码长度
struct Temp_2
{
string number_zero;//0的个数
string code_len;//编码长度
string code;//编码
};
//存储前面(0的个数+编码长度)合并后的结果,非零数编码
struct Temp_3
{
string he_bin;//前面两位合并后的结果
string code;//编码
};
//存储编码后的结果
struct Temp_4
{
string code_1;//哈夫曼编码
string code_2;//二进制编码
};
//声明十进制与二进制对应的表
struct bitTable
{
string valu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-10 22:11  JPEG编码\
     目录           0  2018-03-10 22:11  JPEG编码\Debug\
     文件      175104  2017-12-27 19:00  JPEG编码\Debug\JPEG编码.exe
     文件     7274884  2017-12-27 19:00  JPEG编码\Debug\JPEG编码.ilk
     文件     6106112  2017-12-27 19:00  JPEG编码\Debug\JPEG编码.pdb
     目录           0  2018-03-10 22:11  JPEG编码\JPEG编码\
     文件          36  2017-12-27 18:59  JPEG编码\JPEG编码.opensdf
     文件         976  2017-12-20 14:12  JPEG编码\JPEG编码.sln
     文件       15872  2017-12-20 19:46  JPEG编码\JPEG编码.v12.suo
     目录           0  2018-03-10 22:11  JPEG编码\JPEG编码\Debug\
     文件        3700  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.log
     文件      714567  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.obj
     目录           0  2018-03-10 22:11  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\
     文件         590  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\cl.command.1.tlog
     文件       10146  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\CL.read.1.tlog
     文件         372  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\CL.write.1.tlog
     文件         160  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\JPEG编码.lastbuildstate
     文件        1884  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\link.command.1.tlog
     文件        4964  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\link.read.1.tlog
     文件         346  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\JPEG编码.tlog\link.write.1.tlog
     文件      592896  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\vc120.idb
     文件     1355776  2017-12-27 19:00  JPEG编码\JPEG编码\Debug\vc120.pdb
     目录           0  2018-03-10 22:11  JPEG编码\JPEG编码\images\
     文件        3126  2017-12-20 11:26  JPEG编码\JPEG编码\images\girl_32_32.bmp
     文件       21647  2017-12-27 18:59  JPEG编码\JPEG编码\JPEG编码.cpp
     文件        4177  2017-12-20 14:15  JPEG编码\JPEG编码\JPEG编码.vcxproj
     文件         951  2017-12-20 14:15  JPEG编码\JPEG编码\JPEG编码.vcxproj.filters

评论

共有 条评论