⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spihtwav.h

📁 spiht的压缩解压缩c编写的
💻 H
字号:
 #ifndef SPIHTWAV_H
#define SPIHTWAV_H

#include "spiht.h"
#include "spihtsq.h"

/*   filter_bank.c   */
#define QCCWAVFILTERBANK_MAGICNUM "FBK"
#define QCCWAVFILTERBANK_ORTHOGONAL 0
#define QCCWAVFILTERBANK_BIORTHOGONAL 1
#define QCCWAVFILTERBANK_GENERAL 2
#define QCCWAVFILTERBANK_PHASE_EVEN 0
#define QCCWAVFILTERBANK_PHASE_ODD 1
typedef struct
{
  QccString filename;
  QccString magic_num;
  int major_version;
  int minor_version;
  int orthogonality;
  QccFilter lowpass_analysis_filter;
  QccFilter highpass_analysis_filter;
  QccFilter lowpass_synthesis_filter;
  QccFilter highpass_synthesis_filter;
} QccWAVFilterBank;
int QccWAVFilterBankInitialize(QccWAVFilterBank *filter_bank);
int QccWAVFilterBankAlloc(QccWAVFilterBank *filter_bank);
void QccWAVFilterBankFree(QccWAVFilterBank *filter_bank);
int QccWAVFilterBankMakeOrthogonal(QccWAVFilterBank *filter_bank,
                                   const QccFilter *primary_filter);
int QccWAVFilterBankMakeBiorthogonal(QccWAVFilterBank *filter_bank,
                                     const QccFilter *primary_filter,
                                     const QccFilter *dual_filter);
int QccWAVFilterBankRead(QccWAVFilterBank *filter_bank);
int QccWAVFilterBankAnalysis(const QccVector input_signal,
                             QccVector output_signal,
                             int signal_length,
                             int phase,
                             const QccWAVFilterBank *filter_bank,
                             int boundary_extension);
int QccWAVFilterBankSynthesis(const QccVector input_signal,
                              QccVector output_signal,
                              int signal_length,
                              int phase,
                              const QccWAVFilterBank *filter_bank,
                              int boundary_extension);
/*  lazy_wavelet.c  */
int QccWAVWaveletLWT(const QccVector input_signal,
                     QccVector output_signal,
                     int signal_length,
                     int signal_origin,
                     int subsample_pattern);
int QccWAVWaveletInverseLWT(const QccVector input_signal,
                            QccVector output_signal,
                            int signal_length,
                            int signal_origin,
                            int subsample_pattern);

/*   lifting.c   */
#define QCCWAVLIFTINGSCHEME_MAGICNUM "LFT"
#define QCCWAVLIFTINGSCHEME_LWT 0
#define QCCWAVLIFTINGSCHEME_Daubechies4 1
#define QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau9_7 2
#define QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau5_3 3
typedef struct
{
  QccString filename;
  QccString magic_num;
  int major_version;
  int minor_version;
  int scheme;
} QccWAVLiftingScheme;
int QccWAVLiftingSchemeInitialize(QccWAVLiftingScheme *lifting_scheme);
int QccWAVLiftingSchemeRead(QccWAVLiftingScheme *lifting_scheme);
int QccWAVLiftingAnalysis(const QccVector input_signal,
                          QccVector output_signal,
                          int signal_length,
                          int phase,
                          const QccWAVLiftingScheme *lifting_scheme,
                          int boundary);
int QccWAVLiftingSynthesis(const QccVector input_signal,
                           QccVector output_signal,
                           int signal_length,
                           int phase,
                           const QccWAVLiftingScheme *lifting_scheme,
                           int boundary);

/*  lifting_daubechies4.c  */
int QccWAVLiftingAnalysisDaubechies4(QccVector signal,
                                     int signal_length,
                                     int phase,
                                     int boundary);
int QccWAVLiftingSynthesisDaubechies4(QccVector signal,
                                      int signal_length,
                                      int phase,
                                      int boundary);


/*  lifting_cdf9_7.c  */
int QccWAVLiftingAnalysisCohenDaubechiesFeauveau9_7(QccVector signal,
                                                    int signal_length,
                                                    int phase,
                                                    int boundary);
int QccWAVLiftingSynthesisCohenDaubechiesFeauveau9_7(QccVector signal,
                                                     int signal_length,
                                                     int phase,
                                                     int boundary);


/*  lifting_cdf5_3.c  */
int QccWAVLiftingAnalysisCohenDaubechiesFeauveau5_3(QccVector signal,
                                                    int signal_length,
                                                    int phase,
                                                    int boundary);
int QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3(QccVector signal,
                                                     int signal_length,
                                                     int phase,
                                                     int boundary);

/*   wavelet.c   */
#define QCCWAVWAVELET_PATH_ENV "QCCPACK_WAVELET_PATH"
#define QCCPACK_WAVELET_PATH_DEFAULT "QCCPACK_WAVELET_PATH_DEFAULT"
#define QCCWAVWAVELET_DEFAULT_WAVELET "CohenDaubechiesFeauveau.9-7.lft"
#define QCCWAVWAVELET_IMPLEMENTATION_FILTERBANK 0
#define QCCWAVWAVELET_IMPLEMENTATION_LIFTED 1
#define QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION \
QCCFILTER_SYMMETRIC_EXTENSION
#define QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION QCCFILTER_PERIODIC_EXTENSION
#define QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET \
(QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION + 1)
#define QCCWAVWAVELET_PHASE_EVEN QCCWAVFILTERBANK_PHASE_EVEN
#define QCCWAVWAVELET_PHASE_ODD QCCWAVFILTERBANK_PHASE_ODD

typedef struct
{
  int implementation;
  int boundary;
  QccWAVLiftingScheme lifting_scheme;
  QccWAVFilterBank filter_bank;
} QccWAVWavelet;
int QccWAVInit();
int QccWAVWaveletInitialize(QccWAVWavelet *wavelet);
void QccWAVWaveletFree(QccWAVWavelet *wavelet);
int QccWAVWaveletCreate(QccWAVWavelet *wavelet,
                        const QccString wavelet_filename,
                        const QccString boundary);
int QccWAVWaveletAnalysis1D(const QccVector input_signal,
                            QccVector output_signal,
                            int signal_length,
                            int phase,
                            const QccWAVWavelet *wavelet);
int QccWAVWaveletSynthesis1D(const QccVector input_signal,
                             QccVector output_signal,
                             int signal_length,
                             int phase,
                             const QccWAVWavelet *wavelet);
int QccWAVWaveletAnalysis2D(const QccMatrix input_matrix,
                            QccMatrix output_matrix,
                            int num_rows,
                            int num_cols,
                            int phase_row,
                            int phase_col,
                            const QccWAVWavelet *wavelet);
int QccWAVWaveletSynthesis2D(const QccMatrix input_matrix,
                             QccMatrix output_matrix,
                             int num_rows,
                             int num_cols,
                             int phase_row,
                             int phase_col,
                             const QccWAVWavelet *wavelet);

/*   dwt.c               */
int QccWAVWaveletDWTSubbandLength(int original_length, int level,
                                  int highband, int signal_origin,
                                  int subsample_pattern);
int QccWAVWaveletDWT1D(const QccVector input_signal,
                       QccVector output_signal,
                       int signal_length,
                       int signal_origin,
                       int subsample_pattern,
                       int num_scales,
                       const QccWAVWavelet *wavelet);
int QccWAVWaveletDWT2D(const QccMatrix input_matrix,
                       QccMatrix output_matrix,
                       int num_rows,
                       int num_cols,
                       int origin_row,
                       int origin_col,
                       int subsample_pattern_row,
                       int subsample_pattern_col,
                       int num_scales,
                       const QccWAVWavelet *wavelet);
int QccWAVWaveletInverseDWT2D(const QccMatrix input_matrix,
                              QccMatrix output_matrix,
                              int num_rows,
                              int num_cols,
                              int origin_row,
                              int origin_col,
                              int subsample_pattern_row,
                              int subsample_pattern_col,
                              int num_scales,
                              const QccWAVWavelet *wavelet);

/*   sadwt.c        */
int QccWAVWaveletInverseShapeAdaptiveDWT2D(const QccMatrix input_data, 
                                           const QccMatrix input_mask, 
                                           QccMatrix output_data, 
                                           QccMatrix output_mask,
                                           int num_rows,
                                           int num_cols,
                                           int num_scales,
                                           const QccWAVWavelet *wavelet);

/*   subband_pyramid.c   */
#define QCCWAVSUBBANDPYRAMID_MAGICNUM "SBP"
typedef struct
{
  QccString filename;
  QccString magic_num;
  int major_version;
  int minor_version;
  int num_levels;
  int num_rows;
  int num_cols;
  int origin_row;
  int origin_col;
  int subsample_pattern_row;
  int subsample_pattern_col;
  QccMatrix matrix;
} QccWAVSubbandPyramid;
int QccWAVSubbandPyramidInitialize(QccWAVSubbandPyramid *subband_pyramid);
int QccWAVSubbandPyramidAlloc(QccWAVSubbandPyramid *subband_pyramid);
void QccWAVSubbandPyramidFree(QccWAVSubbandPyramid *subband_pyramid);
int QccWAVSubbandPyramidNumLevelsToNumSubbands(int num_levels);
int QccWAVSubbandPyramidCalcLevelFromSubband(int subband, int num_levels);
int QccWAVSubbandPyramidSubbandSize(const QccWAVSubbandPyramid
                                    *subband_pyramid,
                                    int subband,
                                    int *subband_num_rows,
                                    int *subband_num_cols);
int QccWAVSubbandPyramidSubbandOffsets(const QccWAVSubbandPyramid
                                       *subband_pyramid,
                                       int subband,
                                       int *row_offset,
                                       int *col_offset);
int QccWAVSubbandPyramidAddMean(QccWAVSubbandPyramid *subband_pyramid,
                                double mean);
int QccWAVSubbandPyramidDWT(QccWAVSubbandPyramid *subband_pyramid,
                            int num_levels,
                            const QccWAVWavelet *wavelet);
int QccWAVSubbandPyramidInverseDWT(QccWAVSubbandPyramid *subband_pyramid,
                                   const QccWAVWavelet *wavelet);
int QccWAVSubbandPyramidInverseShapeAdaptiveDWT(QccWAVSubbandPyramid
                                                *subband_pyramid,
                                                QccWAVSubbandPyramid *mask,
                                                const QccWAVWavelet *wavelet);

/*   perceptual_weights.c   */
#define QCCWAVPERCEPTUALWEIGHTS_MAGICNUM "PCP"
typedef struct
{
  QccString filename;
  QccString magic_num;
  int major_version;
  int minor_version;
  int num_subbands;
  QccVector perceptual_weights;
} QccWAVPerceptualWeights;
int QccWAVPerceptualWeightsInitialize(QccWAVPerceptualWeights 
                                      *perceptual_weights);
int QccWAVPerceptualWeightsAlloc(QccWAVPerceptualWeights *perceptual_weights);
void QccWAVPerceptualWeightsFree(QccWAVPerceptualWeights *perceptual_weights);
int QccWAVPerceptualWeightsRead(QccWAVPerceptualWeights *perceptual_weights);
int QccWAVPerceptualWeightsRemove(QccWAVSubbandPyramid 
                                  *subband_pyramid,
                                  const QccWAVPerceptualWeights 
                                  *perceptual_weights);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -