include/it/separable2D.h

Go to the documentation of this file.
00001 /*
00002    libit - Library for basic source and channel coding functions
00003    Copyright (C) 2005-2008 Francois Cayre, Vivien Chappelier, Herve Jegou
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public
00016    License along with this library; if not, write to the Free
00017    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 */
00019 
00020 /*
00021   Separable 2D wavelet transform using lifting.
00022   Copyright (C) 2005 Vivien Chappelier
00023 */
00024 
00025 #ifndef __it_separable2D_h
00026 #define __it_separable2D_h
00027 
00028 #include <it/types.h>
00029 #include <it/mat.h>
00030 #include <it/transform.h>
00031 #include <it/transform2D.h>
00032 
00033 /*---------------------------------------------------------------------------*/
00034 /*! \addtogroup transform Transform                                          */
00035 /* @{                                                                        */
00036 /*---------------------------------------------------------------------------*/
00037 
00038 
00039 typedef struct _it_separable2D_ {
00040   it_extends (it_transform2D_t);
00041 
00042   it_transform_t *transform;
00043 
00044   void (*it_overloaded (destructor)) (it_object_t * it_this);
00045 
00046 } it_separable2D_t;
00047 
00048 #define IT_SEPARABLE2D(x) IT_CAST(it_separable2D_t, x)
00049 
00050 it_instanciate (it_separable2D_t);
00051 
00052 #define it_separable2D_new(t) __it_separable2D_new(IT_TRANSFORM(t))
00053 static inline it_separable2D_t *__it_separable2D_new (it_transform_t *
00054                   transform) {
00055   return (it_new_va (it_separable2D_t) (it_va, transform));
00056 }
00057 /* 2D separable transform and inverse transform */
00058 #define it_separable2D_transform(t, m) ((mat) it_transform2D(IT_SEPARABLE2D(t), m))
00059 #define it_separable2D_itransform(t, m) ((mat) it_itransform2D(IT_SEPARABLE2D(t), m))
00060 /* same thing with internal object construction/destruction */
00061 mat it_separable2D (mat m, it_transform_t);
00062 mat  it_iseparable2D (mat t, it_transform_t);
00063 
00064 /* @} */
00065 
00066 #endif

Hosted by
Copyright (C) 2005-2006 Hervé Jégou
Vivien Chappelier
Francois Cayre
libit logo courtesy of Jonathan Delhumeau