- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
C++实现对RGB图片进行编码的示例代码
目录1.转换色彩空间2.离散余弦变化3.zigzag编码4.量化5.Huffman编码代码如下依据上一篇的JPEG编码所得到的RGB信息,我们可以重新对RGB图片进行编码,也可对其他图片如BMP所得到的RGB信息进行编码,来得到*.jpg文件,注意我这里实现的JPEG编码不知道为啥编码出来的文件比原来大了好多。还有要注意的地方,下面会着重写的
1.转换色彩空间
看了挺多博客,说是有不同的公式分别对应不同用途的图片。我这里使用的RGB转YCbCr的公式如下:
doubley=(0.299*t.red+0.587*t.green+0.114*t.blue-128);
doublecb=(-0.1687*t.red-0.3313*t.green+0.500*t.blue);
doublecr=(0.500*t.red-0.4187*t.green-0.0813*t.blue);
这里t的结构如下,如果要是还有Alpha这个值也可以添加进去
structRGB{
uint8_tred;
uint8_tgreen;
uint8_tblue;
};
2.离散余弦变化
使用矩阵乘法,转化那个DCT变换的公式,最后会得到Y=AXA这个公式A是指A的转置,X是输入,Y是输出
矩阵A的获取方式如下:
double**JPEGData::createDCTAndIDCTArray(introw){
double**res=newdouble*[row];
for(inti=0;ii++)res[i]=newdouble[row];
for(inti=0;ii++){
for(intj=0;jj++){
doublet=0;
if(i==0)t=sqrt(1.0/row);
elset=sqrt(2.0/row);
res[i][j]=t*cos(M_PI*(j+0.5)*i/row);
returnres;
}
计算Y的方法如下:
voidJPEGData::DCT(double**originMatrix){
//原理Y=A*X*A
vectorvectordoubletemp(ROW,vectordouble(COL,0));
for(inti=0;ii++){
for(intj=0;jj++){
doublesum=0;
for(intk=0;kk++){
sum+=DCTAndIDCTArray[i][k]*originMatrix[k][j];
temp[i][j]=sum;
for(inti=0;ii++){
for(intj=0;jj++){
doublesum=0;
for(intk=0;kk++){
sum+=temp[i][k]*DCTAndIDCTArray[j][k];
originMatrix[i][j]=sum;
}
3.zigzag编码
此编码的目的是为了使更多的0聚到一起,从而压缩文件大小(我打断点发现我这里0里面经常会出现1)。编码方式是将88的矩阵变成164的矩阵。
4.量化
我看到很多博客都没有详细说明,我这里说一下:
此步量化是对已经zigzag编码后的量化,就是对已经变成164的数组的变换,而对应的量化表如下,也是164的数组,对应项相乘即可
staticuint8_tYQualityTable[64]={
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};
staticuint8_tCQualityTable[64]={
17,18,24,47,99,99,9
您可能关注的文档
最近下载
- 初中综合实践活动教学设计 种植花生.docx VIP
- 医疗废物分类管理.pptx VIP
- 塔吊信号工试题及答案.docx VIP
- 2025《某大学10KV变电所供配电系统电气设计报告》19000字.docx VIP
- DZT 0295-2016 土地质量地球化学评价规范.pdf VIP
- 运输过程中出现损坏的处理措施.doc VIP
- 《铁血丹心》完美演奏版简谱钢琴谱 简谱双手数字完整版原版.pdf VIP
- 2025年高中数学_数列通项公式的求法教学设计学情分析教材分析课后反思.pdf VIP
- 海南省公安厅辅警真题.pdf
- 新人教版高中数学必修第一册第四章指数函数与对数函数全套PPT课件教案讲义.pptx
文档评论(0)