亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tce.c

?? QccPack implementation in C
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*
 * 
 * QccPack: Quantization, compression, and coding libraries
 * Copyright (C) 1997-2005  James E. Fowler
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 * 
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
 * MA 02139, USA.
 * 
 */

/* 
 *
 * Written by
 *
 * Chao Tian, at Cornell University, 2003 
 *
 */


#include "libQccPack.h"


#define QCCTCE_BOUNDARY_VALUE (1e-6)

//definition used in context information
#define QCCTCE_Z 0 //zero, AKA, insignificant
#define QCCTCE_NZN_NEW 2 //non-zero-neighbor
#define QCCTCE_S 3 //significant
#define QCCTCE_S_NEW 4
#define QCCTCE_NZN 5

// more refinement can be made if direction of Tarp filter is considered
// but the improvement is minor
#define QCCWAVTCE_ALPHA 0.4 
#define QCCWAVTCE_ALPHA_HIGH 0.4
#define QCCWAVTCE_ALPHA_LOW 0.4

//ugly fix, use 1-D IIR filter to provide PMF estimate
#define QCCWAVTCE_ALPHA_1D 0.995 
#define QCCWAVTCE_ALPHA_1D_O 0.005

// this should be 0.5, however, 0.3 seems to work a little better (minor)
// reason unknown
#define QCCWAVTCE_REFINE_HOLDER 0.3 

// threshold for cross-scale prediction...
#define QCCWAVTCE_PREDICT_THRESHOLD 0.05  
//weight factor for cross-scale and current scale
#define QCCWAVTCE_CURRENT_SCALE 0.7 
#define QCCWAVTCE_PARENT_SCALE 0.3


static int QccWAVtceUpdateModel(QccENTArithmeticModel *model, double prob)
{
  double probabilities[2]; 
  probabilities[1] = prob;
  probabilities[0] = 1 - probabilities[1];
  
  if (QccENTArithmeticSetModelProbabilities(model,probabilities,0))
    {
      QccErrorAddMessage("(QccWAVtceUpdateModel): Error calling QccENTArithmeticSetModelProbabilities()");
      return(1);
    } 
  return(0);
}


static int QccWAVtceEncodeDWT(QccWAVSubbandPyramid *image_subband_pyramid,
                              char **sign_array,
                              const QccIMGImageComponent *image,
                              int num_levels,
                              double *image_mean,
                              int *max_coefficient_bits,
                              double stepsize,
                              const QccWAVWavelet *wavelet)
{
  double coefficient_magnitude;
  double max_coefficient;
  int num_subbands,subband;
  int row, col;
  int subband_origin_row;
  int subband_origin_col;
  int subband_num_rows;
  int subband_num_cols;
  
  num_subbands =
    QccWAVSubbandPyramidNumLevelsToNumSubbands(num_levels);
  
  if (QccMatrixCopy(image_subband_pyramid->matrix,
                    image->image,
                    image->num_rows,
                    image->num_cols))
    {
      QccErrorAddMessage("(QccWAVtceEncodeDWT): Error calling QccMatrixCopy()");
      return(1);
    }
  
  if (QccWAVSubbandPyramidSubtractMean(image_subband_pyramid,
                                       image_mean,
                                       NULL))
    {
      QccErrorAddMessage("(QccWAVtceEncodeDWT): Error calling QccWAVSubbandPyramidSubtractMean()");
      return(1);
    }
  
  if (QccWAVSubbandPyramidDWT(image_subband_pyramid,
                              num_levels,
                              wavelet))
    {
      QccErrorAddMessage("(QccWAVtceEncodeDWT): Error calling QccWAVSubbandPyramidDWT()");
      return(1);
    }
  
  for (subband = 0; subband < num_subbands; subband++)
    {
      if (QccWAVSubbandPyramidSubbandSize(image_subband_pyramid,
                                          subband,
                                          &subband_num_rows,
                                          &subband_num_cols))
        {
          QccErrorAddMessage("(QccWAVtceEncodeDWT): Error calling QccWAVSubbandPyramidSubbandSize()");
          return(1);
        }

      if (QccWAVSubbandPyramidSubbandOffsets(image_subband_pyramid,
                                             subband,
                                             &subband_origin_row,
                                             &subband_origin_col))
        {
          QccErrorAddMessage("(QccWAVtceEncodeDWT): Error calling QccWAVSubbandPyramidSubbandOffsets()");
          return(1);
        }
      max_coefficient = -MAXFLOAT;
      
      if (stepsize > 0)
        for (row = 0; row < subband_num_rows; row++)
          for (col = 0; col < subband_num_cols; col++)
            {
              coefficient_magnitude =
                floor(fabs(image_subband_pyramid->matrix
                           [subband_origin_row + row]
                           [subband_origin_col + col] / stepsize));
              
              if (image_subband_pyramid->matrix
                  [subband_origin_row + row]
                  [subband_origin_col + col] < 0)
                sign_array
                  [subband_origin_row + row]
                  [subband_origin_col + col] = 1;
              else
                sign_array
                  [subband_origin_row + row]
                  [subband_origin_col + col] = 0;
              
              image_subband_pyramid->matrix
                [subband_origin_row + row]
                [subband_origin_col + col] = coefficient_magnitude;     
              
              if (coefficient_magnitude > max_coefficient)
                max_coefficient = coefficient_magnitude;     
            }
      else
        for (row = 0; row < subband_num_rows; row++)
          for (col = 0; col < subband_num_cols; col++)
            {
              coefficient_magnitude =
                fabs(image_subband_pyramid->matrix
                     [subband_origin_row + row]
                     [subband_origin_col + col]);
              
              if (image_subband_pyramid->matrix
                  [subband_origin_row + row]
                  [subband_origin_col + col] < 0)
                sign_array
                  [subband_origin_row + row]
                  [subband_origin_col + col] = 1;
              else
                sign_array
                  [subband_origin_row + row]
                  [subband_origin_col + col] = 0;
              
              image_subband_pyramid->matrix
                [subband_origin_row + row]
                [subband_origin_col + col] = coefficient_magnitude;     

              if (coefficient_magnitude > max_coefficient)
                max_coefficient = coefficient_magnitude;
            }

      max_coefficient_bits[subband] = 
        (int)floor(QccMathMax(0, QccMathLog2(max_coefficient + 0.0001)));  

    }   

  return(0);
}


static int QccWAVtceEncodeBitPlaneInfo(QccBitBuffer *output_buffer,
                                       int num_subbands,
                                       int *max_coefficient_bits)
{
  int subband;
  int num_zeros = 0;
  
  for (subband = 1; subband < num_subbands; subband++)
    {
      for (num_zeros = max_coefficient_bits[0] - max_coefficient_bits[subband];
           num_zeros > 0;
           num_zeros--)
        if (QccBitBufferPutBit(output_buffer, 0))
          return(1);

      if (QccBitBufferPutBit(output_buffer, 1))
        return(1);
    }

  return(0);
}


static int QccWAVtceDecodeBitPlaneInfo(QccBitBuffer *input_buffer,
                                       int num_subbands,
                                       int *max_bits,
                                       int max_coefficient_bits)
{
  int subband;
  int bit_value;
  
  max_bits[0] = max_coefficient_bits;
  
  for (subband = 1; subband < num_subbands; subband++)
    {
      max_bits[subband] = max_coefficient_bits;
      do
        {
          if (QccBitBufferGetBit(input_buffer,&bit_value))
            return(1);
          max_bits[subband]--;
        }
      while (bit_value == 0);
      max_bits[subband]++;  
    }
  
  return(0);
}


int QccWAVtceEncodeHeader(QccBitBuffer *output_buffer, 
                          int num_levels, 
                          int num_rows, int num_cols,
                          double image_mean,
                          double stepsize,
                          int max_coefficient_bits)
{
  int return_value;
  
  if (QccBitBufferPutChar(output_buffer, (unsigned char)num_levels))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPuChar()");
      goto Error;
    }
  
  if (QccBitBufferPutInt(output_buffer, num_rows))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPutInt()");
      goto Error;
    }
  
  if (QccBitBufferPutInt(output_buffer, num_cols))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPutInt()");
      goto Error;
    }
  
  if (QccBitBufferPutDouble(output_buffer, image_mean))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPutDouble()");
      goto Error;
    }
  
  if (QccBitBufferPutDouble(output_buffer, stepsize))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPutDouble()");
      goto Error;
    }
  
  if (QccBitBufferPutInt(output_buffer, max_coefficient_bits))
    {
      QccErrorAddMessage("(QccWAVtceEncodeHeader): Error calling QccBitBufferPutInt()");
      goto Error;
    }
  
  return_value = 0;
  goto Return;
 Error:
  return_value = 1;
 Return:
  return(return_value);
}


static int QccWAVtceRevEst(QccWAVSubbandPyramid *coefficients,
                           char **significance_map,
                           int subband,
                           double *subband_significance,
                           double **p)
{
  
  int return_value;
  int subband_origin_row;
  int subband_origin_col;
  int subband_num_rows;
  int subband_num_cols;
  int row, col;
  int current_row, current_col;
  double p1, p3;
  QccVector p2 = NULL;
  char *p_char;
  int v;  
  double filter_coef;
  double alpha_v, alpha_h;
  
  if (subband % 3==1)
    { 
      //LH horizental more important?
      alpha_h = QCCWAVTCE_ALPHA_HIGH;
      alpha_v = QCCWAVTCE_ALPHA_LOW;
    }
  else
    {
      if (subband % 3==2)
        {
          alpha_h = QCCWAVTCE_ALPHA_LOW;
          alpha_v = QCCWAVTCE_ALPHA_HIGH;   
        }
      else
        {
          alpha_h = QCCWAVTCE_ALPHA;
          alpha_v = QCCWAVTCE_ALPHA;
        }
    }
  
  filter_coef = (1 - alpha_h) * (1 - alpha_v) / (2*alpha_h + 2*alpha_v);
  
  subband_significance[subband] = 0.0;
  
  if (QccWAVSubbandPyramidSubbandSize(coefficients,
                                      subband,
                                      &subband_num_rows,
                                      &subband_num_cols))
    {
      QccErrorAddMessage("(QccWAVtceRevEst): Error calling QccWAVSubbandPyramidSubbandSize()");
      goto Error;
    }
  if (QccWAVSubbandPyramidSubbandOffsets(coefficients,
                                         subband,
                                         &subband_origin_row,
                                         &subband_origin_col))
    {
      QccErrorAddMessage("(QccWAVtceRevEst): Error calling QccWAVSubbandPyramidSubbandOffsets()");
      goto Error;
    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人国产精品| 蜜桃视频在线观看一区| www.性欧美| 中文字幕亚洲区| 欧美三区在线观看| 午夜亚洲国产au精品一区二区| 欧美日韩中文字幕精品| 青草国产精品久久久久久| 久久久久久久久免费| 99九九99九九九视频精品| 亚洲第一狼人社区| 精品国产一区二区三区忘忧草 | 国产三级三级三级精品8ⅰ区| 国产一区二区三区电影在线观看 | 色婷婷综合五月| 亚洲国产精品麻豆| 欧美成人vps| 成人app在线| 爽爽淫人综合网网站| 久久综合国产精品| 国产成人精品一区二| 国产婷婷色一区二区三区| 在线观看网站黄不卡| 亚洲妇女屁股眼交7| 4438亚洲最大| 紧缚捆绑精品一区二区| 中文字幕第一页久久| 色又黄又爽网站www久久| 亚洲综合999| 日韩一级高清毛片| 国产ts人妖一区二区| 亚洲免费观看高清完整| 欧美男女性生活在线直播观看| 日韩黄色免费网站| 国产日韩欧美精品电影三级在线| 成a人片国产精品| 亚洲国产日韩a在线播放| 欧美日本在线播放| 国产自产高清不卡| 亚洲美女视频在线| 欧美mv日韩mv国产| 91在线观看美女| 奇米在线7777在线精品| 久久精品夜夜夜夜久久| 色94色欧美sute亚洲线路二| 免费一级欧美片在线观看| 日本一区二区三区在线不卡| 欧美在线制服丝袜| 国产乱码精品1区2区3区| 亚洲精品国产一区二区三区四区在线| 欧美一区二区福利在线| 972aa.com艺术欧美| 九九精品视频在线看| 亚洲免费观看高清完整版在线观看熊 | 91精品视频网| 99久久伊人精品| 奇米一区二区三区av| 亚洲人成在线播放网站岛国| 欧美成人女星排名| 精品视频在线免费看| 成人黄色网址在线观看| 秋霞av亚洲一区二区三| 亚洲视频狠狠干| 精品1区2区在线观看| 精品污污网站免费看| 成人成人成人在线视频| 美日韩一区二区| 亚洲电影一区二区| 成人欧美一区二区三区白人| 精品国免费一区二区三区| 91在线观看高清| 国产一区二区三区四区五区入口| 首页欧美精品中文字幕| 亚洲男人天堂av| 国产精品入口麻豆原神| 久久品道一品道久久精品| 337p亚洲精品色噜噜噜| 91黄色免费看| 91丨porny丨户外露出| 成人听书哪个软件好| 国产一区二区免费看| 七七婷婷婷婷精品国产| 亚洲成人av在线电影| 亚洲综合图片区| 亚洲欧美另类小说| 日韩伦理免费电影| 国产精品久久毛片av大全日韩| 久久久国产精品麻豆| 精品久久国产97色综合| 日韩午夜av电影| 欧美一级高清片在线观看| 91行情网站电视在线观看高清版| www.日本不卡| jlzzjlzz欧美大全| 成人aa视频在线观看| 成人激情文学综合网| 波多野结衣在线一区| 国产伦精品一区二区三区免费迷 | 亚洲一区自拍偷拍| 久久综合九色综合欧美亚洲| 在线综合亚洲欧美在线视频| 欧美天堂亚洲电影院在线播放| 91一区二区三区在线观看| 99久久久无码国产精品| 91色|porny| 欧美色偷偷大香| 宅男噜噜噜66一区二区66| 欧美一区二区三区爱爱| 久久午夜色播影院免费高清 | 国产一区 二区 三区一级| 国模娜娜一区二区三区| 国产一区二区在线观看免费| 国产成人精品午夜视频免费 | 麻豆精品一区二区三区| 韩国精品主播一区二区在线观看 | 日本不卡一区二区三区高清视频| 日本成人在线电影网| 九九九精品视频| av在线一区二区三区| 欧美亚一区二区| 精品国产一区二区三区久久久蜜月| 久久精品人人做人人爽人人| 亚洲卡通欧美制服中文| 日韩中文字幕亚洲一区二区va在线| 久久国内精品视频| 成人18视频日本| 欧美三级日韩三级国产三级| 欧美电影免费观看高清完整版在| 久久久综合九色合综国产精品| 国产精品麻豆视频| 亚洲国产精品久久人人爱| 韩国av一区二区三区| 91久久一区二区| 久久亚洲私人国产精品va媚药| 综合婷婷亚洲小说| 日本va欧美va精品| 成人午夜免费视频| 欧美一区中文字幕| 国产精品福利在线播放| 欧美aaa在线| 97久久精品人人做人人爽50路| 欧美日韩在线播| 国产欧美日本一区视频| 午夜精品福利一区二区三区av| 国产sm精品调教视频网站| 色www精品视频在线观看| 精品国产一区二区三区忘忧草 | 久久亚洲一级片| 亚洲一区二区成人在线观看| 国产美女一区二区| 在线不卡中文字幕| 亚洲三级电影网站| 国产精品一区二区在线观看不卡 | 精品欧美一区二区三区精品久久| 最新日韩av在线| 国产精品一区2区| 91精品国产入口| 亚洲精品日日夜夜| 国产成人亚洲综合色影视| 91精品国产高清一区二区三区| 亚洲欧洲综合另类| 丁香一区二区三区| 精品成人一区二区| 日本va欧美va精品发布| 欧美又粗又大又爽| 国产精品二区一区二区aⅴ污介绍| 久热成人在线视频| 91麻豆精品国产| 午夜视频在线观看一区二区三区| 成人高清视频在线| 久久久久久久久岛国免费| 性做久久久久久免费观看| 国产精品影视在线| 日韩欧美色综合| 亚洲电影中文字幕在线观看| 国产精品888| 日韩午夜小视频| 黄色小说综合网站| 精品盗摄一区二区三区| 精品在线你懂的| 欧美v国产在线一区二区三区| 天堂久久久久va久久久久| 欧美日韩在线播放一区| 亚洲五月六月丁香激情| 日本高清免费不卡视频| 亚洲男女毛片无遮挡| 91福利在线免费观看| 亚洲自拍偷拍综合| 欧美精品九九99久久| 日韩成人一级片| 欧美精品一区男女天堂| 国产麻豆一精品一av一免费| 国产午夜精品久久| 99精品视频在线观看| 亚洲精品免费视频| 欧美蜜桃一区二区三区| 日本欧美一区二区三区乱码| 日韩一区二区视频| 国产激情精品久久久第一区二区| 日本一区二区在线不卡|