欢迎来到天天文库
浏览记录
ID:50906633
大小:46.45 KB
页数:11页
时间:2020-03-15
《基于DCT变换的图像编解码matlab代码.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、////////////////////////////////////////////////////////////////////////////////////////////////////////基于块的变换编码//读入灰度图像数据,完成8*8像素块余弦变换并进行DCT系数矩阵量化,把得到的量化矩阵游程编码////////////////////////////////////////////////////////////////////////////////////////////////
2、//////#include#include#include#include#include#include#definePI3.1415926#defineWIDTH256#defineHEIGHT256usingnamespacestd;doublearr[WIDTH][HEIGHT]={0};//自定义数组保存文件二进制数据doubledct2[8][8]={100};//自定义数组保存待变换
3、8*8像素块二进制数据intx(14),y(22);//任意设定开始选定数据坐标voidDCT(int,int,doubledct2[8][8]);//余弦变换算法函实现数doubleCuCv(int);//中间函数C(u),C(v)voidQuant(doubledct2[8][8]);//均匀量化函数voidRun_level(doubledct2[8][8]);//游程编码函数//*************************************************************
4、******************************************voidmain(){charch;intdata[8][8]={0};FILE*fp=NULL;//创建文件指针并初始化//----------------------------------------------------------以二进制只读形式打开待处理IMG文件fp=fopen("LENA256.IMG","rb");if(fp==NULL)//如果失败了{printf("Buffererror!Progra
5、mterminated!!");}ofstreamoutfile("源文件二进制数据.txt");//建立文件charbuf[24];intcount=0;//----------------------------------------------------------将读入文件的数据保存在自定义数组中for(inti(0);i6、cout<<"256*256选定8*8像素块开始坐标:"<7、;//余弦变换Quant(dct2);//均匀量化for(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、**************voidDCT(intm,intn,doubledct2[8][8])//余弦变换算法实现函数{for(intu(0);u<8;u++){for(intv(0);v<8;v++){doublesum=0;for(inti(0);i<8;i++){for(intj(0);j<8;j++){sum=sum+(arr[m+i][n+j]*cos((2*i+1)*u*PI/16)*cos((2
6、cout<<"256*256选定8*8像素块开始坐标:"<7、;//余弦变换Quant(dct2);//均匀量化for(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、**************voidDCT(intm,intn,doubledct2[8][8])//余弦变换算法实现函数{for(intu(0);u<8;u++){for(intv(0);v<8;v++){doublesum=0;for(inti(0);i<8;i++){for(intj(0);j<8;j++){sum=sum+(arr[m+i][n+j]*cos((2*i+1)*u*PI/16)*cos((2
7、;//余弦变换Quant(dct2);//均匀量化for(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、**************voidDCT(intm,intn,doubledct2[8][8])//余弦变换算法实现函数{for(intu(0);u<8;u++){for(intv(0);v<8;v++){doublesum=0;for(inti(0);i<8;i++){for(intj(0);j<8;j++){sum=sum+(arr[m+i][n+j]*cos((2*i+1)*u*PI/16)*cos((2
8、**************voidDCT(intm,intn,doubledct2[8][8])//余弦变换算法实现函数{for(intu(0);u<8;u++){for(intv(0);v<8;v++){doublesum=0;for(inti(0);i<8;i++){for(intj(0);j<8;j++){sum=sum+(arr[m+i][n+j]*cos((2*i+1)*u*PI/16)*cos((2
此文档下载收益归作者所有