1 /* 2 * The copyright in this software is being made available under the 2-clauses 3 * BSD License, included below. This software may be subject to other third 4 * party and contributor rights, including patent rights, and no such rights 5 * are granted under this license. 6 * 7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium 8 * Copyright (c) 2002-2014, Professor Benoit Macq 9 * Copyright (c) 2001-2003, David Janssens 10 * Copyright (c) 2002-2003, Yannick Verschueren 11 * Copyright (c) 2003-2007, Francois-Olivier Devaux 12 * Copyright (c) 2003-2014, Antonin Descampe 13 * Copyright (c) 2005, Herve Drolon, FreeImage Team 14 * All rights reserved. 15 * 16 * Redistribution and use in source and binary forms, with or without 17 * modification, are permitted provided that the following conditions 18 * are met: 19 * 1. Redistributions of source code must retain the above copyright 20 * notice, this list of conditions and the following disclaimer. 21 * 2. Redistributions in binary form must reproduce the above copyright 22 * notice, this list of conditions and the following disclaimer in the 23 * documentation and/or other materials provided with the distribution. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 */ 37 38 #ifndef OPJ_DWT_H 39 #define OPJ_DWT_H 40 /** 41 @file dwt.h 42 @brief Implementation of a discrete wavelet transform (DWT) 43 44 The functions in DWT.C have for goal to realize forward and inverse discret wavelet 45 transform with filter 5-3 (reversible) and filter 9-7 (irreversible). The functions in 46 DWT.C are used by some function in TCD.C. 47 */ 48 49 /** @defgroup DWT DWT - Implementation of a discrete wavelet transform */ 50 /*@{*/ 51 52 53 /** @name Exported functions */ 54 /*@{*/ 55 /* ----------------------------------------------------------------------- */ 56 /** 57 Forward 5-3 wavelet transform in 2-D. 58 Apply a reversible DWT transform to a component of an image. 59 @param tilec Tile component information (current tile) 60 */ 61 OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t * tilec); 62 63 /** 64 Inverse 5-3 wavelet transform in 2-D. 65 Apply a reversible inverse DWT transform to a component of an image. 66 @param p_tcd TCD handle 67 @param tilec Tile component information (current tile) 68 @param numres Number of resolution levels to decode 69 */ 70 OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, 71 opj_tcd_tilecomp_t* tilec, 72 OPJ_UINT32 numres); 73 74 /** 75 Get the gain of a subband for the reversible 5-3 DWT. 76 @param orient Number that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH) 77 @return Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise 78 */ 79 OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient) ; 80 /** 81 Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. 82 @param level Level of the wavelet function 83 @param orient Band of the wavelet function 84 @return Returns the norm of the wavelet function 85 */ 86 OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient); 87 /** 88 Forward 9-7 wavelet transform in 2-D. 89 Apply an irreversible DWT transform to a component of an image. 90 @param tilec Tile component information (current tile) 91 */ 92 OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t * tilec); 93 /** 94 Inverse 9-7 wavelet transform in 2-D. 95 Apply an irreversible inverse DWT transform to a component of an image. 96 @param p_tcd TCD handle 97 @param tilec Tile component information (current tile) 98 @param numres Number of resolution levels to decode 99 */ 100 OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, 101 opj_tcd_tilecomp_t* OPJ_RESTRICT tilec, 102 OPJ_UINT32 numres); 103 104 /** 105 Get the gain of a subband for the irreversible 9-7 DWT. 106 @param orient Number that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH) 107 @return Returns the gain of the 9-7 wavelet transform 108 */ 109 OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient); 110 /** 111 Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT 112 @param level Level of the wavelet function 113 @param orient Band of the wavelet function 114 @return Returns the norm of the 9-7 wavelet 115 */ 116 OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient); 117 /** 118 Explicit calculation of the Quantization Stepsizes 119 @param tccp Tile-component coding parameters 120 @param prec Precint analyzed 121 */ 122 void opj_dwt_calc_explicit_stepsizes(opj_tccp_t * tccp, OPJ_UINT32 prec); 123 /* ----------------------------------------------------------------------- */ 124 /*@}*/ 125 126 /*@}*/ 127 128 #endif /* OPJ_DWT_H */ 129