资源简介

Contourlet变换代码, VC++实现Contourlet图像处理

资源截图

代码片段和文件信息

/* libezbc - EZBC subband coding/decoding
      Copyright (C) 2004 Vivien Chappelier

      This library is inspired from code originaly developped by Yongjun Wu Jan in MC-EZBC. This rewritten version may still contain code similar to his original implementation.

      Reference paper: “embedded Image Coding Using Zeroblocks Of Subband/Wavelet Coefficient And Context Modeling“ Shih-Ta Hsiang and John W. Woods Data Compression Conference (DCC ‘01) March 27 - 29 2001 Snowbird Utah 
*/

/* Binary Arithmetic Coder/Decoder 
      Copyright (C) 2004 Vivien Chappelier

      Originally inspired from the MPEG-4 VM binary arithmetic coder.
*/
#include “stdafx.h“
#include 
#include 
#include 
#include “arithmetic_codec.h“

static void renormalize_encoder(arithmetic_codec_t *arithmetic_codec);
static void renormalize_decoder(arithmetic_codec_t *arithmetic_codec);

arithmetic_codec_t *arithmetic_codec_new(unsigned char *buffer
 int length);
void arithmetic_decoder_delete(arithmetic_codec_t *arithmetic_codec);
void arithmetic_codec_start(arithmetic_codec_t *arithmetic_codec);
void arithmetic_decoder_stop(arithmetic_codec_t *arithmetic_codec);
int arithmetic_encoder_stop(arithmetic_codec_t *arithmetic_codec);
int arithmetic_codec_decode(arithmetic_codec_t *arithmetic_codec
    float prob_zero);
void arithmetic_codec_encode(arithmetic_codec_t *arithmetic_codec
     float prob_zero
     arithmetic_codec_bit_t bit);

int ffs(int n)
{
  int i;
  for(i = 0; n; n >>= 1 i++);
  return(i - 1);
}

static void follow(arithmetic_codec_t *arithmetic_codec unsigned char bit)
{
  if (!arithmetic_codec->first_bit)
    bitbuffer_write_bit(arithmetic_codec->bitbuffer bit);
  else
    arithmetic_codec->first_bit = 0;

  while(arithmetic_codec->bits_to_follow > 0) {
    bitbuffer_write_bit(arithmetic_codec->bitbuffer !bit);
    arithmetic_codec->bits_to_follow--;
  }
}

static void renormalize_encoder(arithmetic_codec_t *arithmetic_codec)
{
  while (arithmetic_codec->range < ARITHMETIC_CODEC_QUARTER) {
    if (arithmetic_codec->lower >= ARITHMETIC_CODEC_HALF) { 
      follow(arithmetic_codec 1);
      arithmetic_codec->lower -= ARITHMETIC_CODEC_HALF;
    } else {
      if (arithmetic_codec->lower + arithmetic_codec->range <=
  ARITHMETIC_CODEC_HALF)
follow(arithmetic_codec 0);
      else {
arithmetic_codec->bits_to_follow++;
arithmetic_codec->lower -= ARITHMETIC_CODEC_QUARTER;
      }
    }
    arithmetic_codec->lower += arithmetic_codec->lower;
    arithmetic_codec->range += arithmetic_codec->range;
  }
}

static void renormalize_decoder(arithmetic_codec_t *arithmetic_codec)
{
  while (arithmetic_codec->range < ARITHMETIC_CODEC_QUARTER) {
    if (arithmetic_codec->lower >= ARITHMETIC_CODEC_HALF) {
      arithmetic_codec->value -= ARITHMETIC_CODEC_HALF;
      arithmetic_codec->lower -= ARITHMETIC_CODEC_HALF;
      arithmetic_codec->bits_to_follow = 0;
    } else
      if (arithmetic_codec->lower + arithmetic_codec->

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     262159  2012-02-24 20:07  myContourLet\input&output\1.pgm

     文件     263204  2014-04-10 20:54  myContourLet\input&output\dfb0.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\dwt.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rband0_0.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rband0_1.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rband0_2.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rband0_3.pgm

     文件     262179  2014-04-10 20:54  myContourLet\input&output\rec.pgm

     文件      84561  2014-04-10 20:54  myContourLet\input&output\rec0.jpg

     文件     263204  2014-04-10 20:54  myContourLet\input&output\rec_dfb0.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rec_dwt.pgm

     文件       1057  2014-04-10 20:54  myContourLet\input&output\rec_low.pgm

     文件     262179  2014-04-10 20:54  myContourLet\input&output\rhigh0.pgm

     文件      65571  2014-04-10 20:54  myContourLet\input&output\rlow0.pgm

     文件       6879  2015-04-22 10:53  myContourLet\myContourLet\arithmetic_codec.cpp

     文件       2272  2005-08-09 19:35  myContourLet\myContourLet\arithmetic_codec.h

     文件       1850  2015-04-22 10:53  myContourLet\myContourLet\bitbuffer.cpp

     文件       1594  2005-08-09 19:35  myContourLet\myContourLet\bitbuffer.h

     文件       6713  2015-04-22 14:52  myContourLet\myContourLet\contourlet.cpp

     文件       1771  2012-02-24 19:09  myContourLet\myContourLet\contourlet.h

     文件      24938  2015-04-22 10:53  myContourLet\myContourLet\dfb.cpp

     文件       2534  2012-02-24 19:15  myContourLet\myContourLet\dfb.h

     文件      14091  2015-04-22 10:53  myContourLet\myContourLet\ezbc.cpp

     文件       1115  2012-02-24 19:15  myContourLet\myContourLet\ezbc.h

     文件      18210  2015-04-22 10:53  myContourLet\myContourLet\ezbc_codec.cpp

     文件       5361  2010-03-11 08:54  myContourLet\myContourLet\ezbc_codec.h

     文件      21281  2015-04-22 10:52  myContourLet\myContourLet\ezbc_decoder.cpp

     文件        877  2005-08-09 19:34  myContourLet\myContourLet\ezbc_decoder.h

     文件      23614  2015-04-22 10:51  myContourLet\myContourLet\ezbc_encoder.cpp

     文件        715  2005-08-09 19:35  myContourLet\myContourLet\ezbc_encoder.h

............此处省略101个文件信息

评论

共有 条评论