欢迎来到天天文库
浏览记录
ID:27839376
大小:36.00 KB
页数:11页
时间:2018-12-06
《基于dct变换的图像编解码matlab代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.////////////////////////////////////////////////////////////////////////////////////////////////////////基于块的变换编码//读入灰度图像数据,完成8*8像素块余弦变换并进行DCT系数矩阵量化,把得到的量化矩阵游程编码/////////////////////////////////////////////////////////////////////////////////////////////////////
2、/#include#include#include#include#include#include#definePI3.1415926#defineWIDTH256#defineHEIGHT256usingnamespacestd;doublearr[WIDTH][HEIGHT]={0};//自定义数组保存文件二进制数据doubledct2[8][8]={100};//自定义数组保存待变换8*8像素块二进制数据
3、-..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!Programterminated!!");
5、}ofstreamoutfile("源文件二进制数据.txt");//建立文件-..charbuf[24];intcount=0;//----------------------------------------------------------将读入文件的数据保存在自定义数组中for(inti(0);i6、始坐标:"<7、or(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、tn,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*
6、始坐标:"<7、or(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、tn,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*
7、or(inti=0;i<8;i++)//变换结果输出到文本文件中{for(intj=0;j<8;j++){cout<8、tn,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*
8、tn,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*
此文档下载收益归作者所有