資源簡介
該程序主要實現(xiàn)圖像的無損壓縮,具體算法包括:
(1)整數(shù)小波變換+SPIHT無損壓縮
其中整數(shù)小波可以采用JPEG2000提供的5-3小波,也可以采用S+P變換,本程序均已給出。
(2)DPCM+算術(shù)編碼
DPCM采用的是JPEG中采用的方法;
(3)JPEG-LS標(biāo)準(zhǔn)
JPEG-LS的無損壓縮性能非常好,超過JPEG2000。
代碼片段和文件信息
//?ARITHCoding.cpp:?implementation?of?the?CARITHCoding?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“HIC.h“
#include?“ARITHCoding.h“
#include?“math.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
static?unsigned?short?qe_value[47]=
{0x56010x34010x18010x0ac10x05210x02210x56010x5401
?0x48010x38010x30010x24010x1c010x16010x56010x5401
?0x51010x48010x38010x34010x30010x28010x24010x2201
?0x1c010x18010x16010x14010x12010x11010x0ac10x09c1
?0x08a10x05210x04410x02a10x02210x01410x01110x0085
?0x00490x00250x00150x00090x00050x00010x5601};
static?unsigned?short?nmps[47]=
{1?2?3?4?5?387?8?9?1011121329151617181920
?2122232425262728293031323334353637383940
?41424344454546};
static?unsigned?short?nlps[47]=
{1?6?9?1229336?14141417182021141415161718
?1919202122232425262728293031323334353637
?38394041424346};
static?unsigned?short?flag[47]=
{10000010000000100000000000000
?00000000000000000};
static?unsigned?short?a_registerctmps[20]index[20];
static?unsigned?long?c_registerbpb0b1CC;
static?long?BytesLimitscTByteLimit;??????????????//?size?limited?by?compressed?image?size.
static?long?num_of_packed_bytes=0;?????????????????//?total?bytes?written?out.
static?long?num_of_unpacked_bytes=0;???????????????//?total?bytes?read?in.
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CARITHCoding::CARITHCoding()
{
}
CARITHCoding::~CARITHCoding()
{
}
/**************************************************************************
?完成算術(shù)編碼的初始化?MQ_EncoderInit()
?**************************************************************************/
void?CARITHCoding::MQ_EncoderInit()
{
short?i;
????a_register=0x8000;
????c_register=0;
????ct=12;
????bp=0;
????sc=0;
????for(i=0;i<20;i++)
{
??index[i]=0;
??mps[i]=0;
??if(i==0)??index[i]=4;
??if(i==17)?index[i]=3;
??if((i==18)||(i==19))?index[i]=46;
}
}
/**************************************************************************
?算術(shù)編碼的主函數(shù)?pack1()
?**************************************************************************/
long?CARITHCoding::pack1(short?bit_num?short?bit_value?short?con)
{
short??if_bit;
for(i=0;i {
f_bit=bit_value>>i;
if((f_bit&1)==mps[con])
{
a_register-=qe_value[index[con]];
if((a_register&0x8000)==0)
{
if(a_register else?c_register+=qe_value[index[con]];
index[con]=nmps[index[con]];
do{
a_register<<=1;
c_register<<=1;
ct--;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10429??2007-09-01?20:27??Lossless+coding\Lossless?coding\ARITHCoding.cpp
?????文件???????1389??2007-08-31?10:30??Lossless+coding\Lossless?coding\ARITHCoding.h
?????文件??????26167??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\ARITHCoding.obj
?????文件??????50326??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\Dib.obj
?????文件?????209003??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HIC.exe
?????文件?????438128??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HIC.ilk
?????文件??????23628??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HIC.obj
?????文件????5711384??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HIC.pch
?????文件?????467968??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HIC.pdb
?????文件???????6756??2011-08-13?10:09??Lossless+coding\Lossless?coding\Debug\HIC.res
?????文件??????47208??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HICDoc.obj
?????文件??????26851??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\HICView.obj
?????文件??????15904??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\IntDwt53.obj
?????文件??????50197??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\JPEG_LS.obj
?????文件??????10406??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\li
?????文件??????20708??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\MainFrm.obj
?????文件???????2656??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\MATRIX2D.obj
?????文件??????34781??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\SPIHTCoder.obj
?????文件??????16720??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\SPTransform.obj
?????文件?????106739??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\StdAfx.obj
?????文件?????377856??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\vc60.idb
?????文件?????372736??2012-07-21?13:48??Lossless+coding\Lossless?coding\Debug\vc60.pdb
?????文件??????22791??2003-06-28?21:16??Lossless+coding\Lossless?coding\Dib.cpp
?????文件???????2530??2007-08-19?16:32??Lossless+coding\Lossless?coding\Dib.h
?????文件??????28532??2007-11-01?16:57??Lossless+coding\Lossless?coding\HIC.APS
?????文件???????1916??2007-11-01?16:57??Lossless+coding\Lossless?coding\HIC.clw
?????文件???????4155??2005-09-15?21:12??Lossless+coding\Lossless?coding\HIC.cpp
?????文件???????5517??2005-10-29?17:18??Lossless+coding\Lossless?coding\HIC.dsp
?????文件????????531??2005-09-15?21:12??Lossless+coding\Lossless?coding\HIC.dsw
?????文件???????1323??2005-09-15?21:12??Lossless+coding\Lossless?coding\HIC.h
............此處省略45個文件信息
評論
共有 條評論