資源描述:
《基于dct變換的圖像編解碼matlab代碼》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.////////////////////////////////////////////////////////////////////////////////////////////////////////基于塊的變換編碼//讀入灰度圖像數(shù)據(jù),完成8*8像素塊余弦變換并進行DCT系數(shù)矩陣量化,把得到的量化矩陣游程編碼/////////////////////////////////////////////////////////////////////////////////////////////////////
2、/#include#include#include#include#include#include#definePI3.1415926#defineWIDTH256#defineHEIGHT256usingnamespacestd;doublearr[WIDTH][HEIGHT]={0};//自定義數(shù)組保存文件二進制數(shù)據(jù)doubledct2[8][8]={100};//自定義數(shù)組保存待變換8*8像素塊二進制數(shù)據(jù)
3、-..intx(14),y(22);//任意設(shè)定開始選定數(shù)據(jù)坐標voidDCT(int,int,doubledct2[8][8]);//余弦變換算法函實現(xiàn)數(shù)doubleCuCv(int);//中間函數(shù)C(u),C(v)voidQuant(doubledct2[8][8]);//均勻量化函數(shù)voidRun_level(doubledct2[8][8]);//游程編碼函數(shù)//***************************************************************************
4、****************************voidmain(){charch;intdata[8][8]={0};FILE*fp=NULL;//創(chuàng)建文件指針并初始化//----------------------------------------------------------以二進制只讀形式打開待處理IMG文件fp=fopen("LENA256.IMG","rb");if(fp==NULL)//如果失敗了{printf("Buffererror!Programterminated!!");
5、}ofstreamoutfile("源文件二進制數(shù)據(jù).txt");//建立文件-..charbuf[24];intcount=0;//----------------------------------------------------------將讀入文件的數(shù)據(jù)保存在自定義數(shù)組中for(inti(0);i6、始坐標:"<7、or(inti=0;i<8;i++)//變換結(jié)果輸出到文本文件中{for(intj=0;j<8;j++){cout<8、tn,doubledct2[8][8])//余弦變換算法實現(xiàn)函數(shù){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*