proto2D.h

00001 /*
00002 *    Copyright (c) 2007. The BATI team. All right reserved.
00003 *
00004 *    This file is part of BATI library.
00005 *
00006 *    BATI library is free software: you can redistribute it and/or modify
00007 *    it under the terms of the GNU General Public License as published by
00008 *    the Free Software Foundation, either version 3 of the License, or
00009 *    (at your option) any later version.
00010 *
00011 *    BATI library  is distributed in the hope that it will be useful,
00012 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 *    GNU General Public License for more details.
00015 *
00016 *    You should have received a copy of the GNU General Public License
00017 *    along with BATI library.  If not, see <http://www.gnu.org/licenses/>.
00018 */
00019 /* ********************** proto2D.h ************************/
00020 /*                                                         */
00021 /*  prototypes des fonctions de base de routines.c         */
00022 /*  descripteurs et prototypes pour les operateurs 2D      */
00023 /*                                                         */
00024 /*  Derniere modif : E. TROUVE, 25/11/99                   */
00025 /* *********************************************************/
00026 
00027 /*pas de code avant cette ligne */
00028 #ifndef __proto
00029 #define __proto
00030 
00031 
00032 #include <stdio.h>
00033 #include "image.h"
00034 #include <stdlib.h>
00035 
00036 /* ******************************************************************/
00037 /*     prototypes des fonctions comunnes de routines.c              */
00038 /* ******************************************************************/
00039 
00040 /* debut/fin de programme */
00041 int param_debut(int argc, char **argv, param *ptp);
00042 int param_fin(int argc, char **argv, param *ptp);
00043 
00044 /* lecture de parametre */
00045 void lec_param(char *chaine, param *ptp);
00046 int flec_param(FILE *fp, param *ptp);
00047 void alloc_param(param *ptp);
00048 
00049 void lec_int(int *pt_i, char *chaine);
00050 void lec_float(float *pt_f, char *chaine);
00051 void lec_double(double *pt_d, char *chaine);
00052 void lec_nom(char *pt_nom, char *chaine);
00053 int nom_image_suivante( char *nom0, char *nomres);
00054 
00055 /* allocation d'image */
00056 int alloc_imau1(imau1 *im);
00057 int alloc_imau1_as(imau1 *modele, imau1 *out);
00058 int alloc_imarvb(imarvb *im);
00059 int alloc_imau2(imau2 *im);
00060 int alloc_imas2(imas2 *im);
00061 int alloc_imau4(imau4 *im);
00062 int alloc_imas4(imas4 *im);
00063 int alloc_imafl(imafl *im);
00064 int alloc_imadb(imadb *im);
00065 int alloc_imacx4(imacx4 *im);
00066 int alloc_imacx8(imacx8 *im);
00067 int alloc_imacx16(imacx16 *im);
00068 
00069 /* liberation memoire image */
00070 int free_imau1(imau1 *im);
00071 int free_imarvb(imarvb *im);
00072 int free_imau2(imau2 *im);
00073 int free_imas2(imas2 *im);
00074 int free_imau4(imau4 *im);
00075 int free_imas4(imas4 *im);
00076 int free_imafl(imafl *im);
00077 int free_imadb(imadb *im);
00078 int free_imacx4(imacx4 *im);
00079 int free_imacx8(imacx8 *im);
00080 int free_imacx16(imacx16 *im);
00081 
00082 /*conversion d'image*/
00083 void conv_TLS_RVB(imarvb *ima_tls, imarvb *ima_rvb);
00084 void conv_RVB_TLS(imarvb *ima_rvb, imarvb *ima_tls);
00085 
00086 
00087 /* *************************************************************************/
00088 /*  descripteurs et prototypes des fonctions associees aux operateurs 2D   */  
00089 /* *************************************************************************/
00090 
00091 /* **************************** lread_ima.c ******************************/
00092 /* lecture d'une image complete,                                         */
00093 /*      differents format .ras/.ima / .imw / .imf / .cxs / .cxf + .dim   */
00094 
00097 typedef struct {
00098    char nom[200];  
00099    char ext[10];     
00100 }read_ima_t;
00101 
00102 param *read_ima_lect(read_ima_t *des, param *ptp, char *debq);
00103 int read_imau1_init(read_ima_t *des, imau1 *im);   /* .ras/.ima  */
00104 int read_imau2_init(read_ima_t *des, imau2 *im);   /* .imw       */
00105 int read_imau4_init(read_ima_t *des, imau4 *im);   /* .iml       */
00106 int read_imafl_init(read_ima_t *des, imafl *im);   /* .imf       */
00107 int read_imacx4_init(read_ima_t *des, imacx4 *im); /* .cxs       */
00108 int read_imacx8_init(read_ima_t *des, imacx8 *im); /* .cxf       */
00109 int read_imarvb_init(read_ima_t *des, imarvb *im); /* .ras       */
00110 /* pas de read_ima_calc : lecture une fois pour toute! */
00111 
00112 
00113 /* **************************** lwrite_ima.c ******************************/
00114 /* ecriture d'une image complete,                                         */
00115 /*      differents format       .ima / .imw / .imf / .cxs / .cxf + .dim   */
00116 
00119 typedef struct {
00120    FILE *pfd;       
00121    int  dfi;        
00122    char nom[200];   
00123    char ext[10];
00124 } write_ima_t;
00125 
00126 param *write_ima_lect(write_ima_t *des, param *ptp, char *debq);
00127 int write_ima_init(write_ima_t *des);
00128 /* pas de write_ima_calc : ecriture en une fois a la fin */
00129 int write_imau1_ferm(write_ima_t *des, imau1 im);   /* .ima       */
00130 int write_imau2_ferm(write_ima_t *des, imau2 im);   /* .imw       */
00131 int write_imau4_ferm(write_ima_t *des, imau4 im);   /* .iml       */
00132 int write_imafl_ferm(write_ima_t *des, imafl im);   /* .imf       */
00133 int write_imacx4_ferm(write_ima_t *des, imacx4 im); /* .cxs       */
00134 int write_imacx8_ferm(write_ima_t *des, imacx8 im); /* .cxf       */
00135 int write_imarvb_ferm(write_ima_t *des, imarvb im); /* .ras       */
00136 
00137 /* **************************** lselect_ima.c *****************************/
00138 /* lecture d'une image bloc par bloc (1 ou plusieurs lignes)              */
00139 /*      differents format .ras/.ima / .imw / .imf / .cxs / .cxf + .dim    */
00140 
00143 typedef struct {
00144    char nom[200];  
00145    char ext[10];     
00146    int dimX, dimY; 
00147    int col0, lig0; 
00148    int nb_col, nb_lig; 
00149    int nb_bloc;    
00150    int dfi;        
00151    int next_lig;   
00152    int nb_bloc_lu; 
00153    int header;     
00154    int lut_ng;     
00155 } select_ima_t;
00156 
00157 param *select_ima_lect(select_ima_t *des, param *ptp, char *debq);
00158 
00159 int select_imau1_init(select_ima_t *des, imau1 *im);   /* .ima       */
00160 int select_imau2_init(select_ima_t *des, imau2 *im);   /* .imw       */
00161 int select_imau4_init(select_ima_t *des, imau4 *im);   /* .iml       */
00162 int select_imafl_init(select_ima_t *des, imafl *im);   /* .imf       */
00163 int select_imacx4_init(select_ima_t *des, imacx4 *im); /* .cxs       */
00164 int select_imacx8_init(select_ima_t *des, imacx8 *im); /* .cxf       */
00165 
00166 int select_imau1_calc(select_ima_t *des, imau1 *im);   /* .ima       */
00167 int select_imau2_calc(select_ima_t *des, imau2 *im);   /* .imw       */
00168 int select_imau4_calc(select_ima_t *des, imau4 *im);   /* .iml       */
00169 int select_imafl_calc(select_ima_t *des, imafl *im);   /* .imf       */
00170 int select_imacx4_calc(select_ima_t *des, imacx4 *im); /* .cxs       */
00171 int select_imacx8_calc(select_ima_t *des, imacx8 *im); /* .cxf       */
00172 
00173 /* **************************** lsave_ima.c ******************************/
00174 /* ecriture d'une image complete,                                         */
00175 /*      differents format       .ima / .imw / .imf / .cxs / .cxf + .dim   */
00176 
00179 typedef struct { 
00180    FILE *pfd;       
00181    int  dfi;        
00182    char nom[200];   
00183    char ext[10];    
00184    int  nb_lig_ecr;     
00185    int  nb_col_ecr;     
00186    char  legende[200];   
00187 } save_ima_t;
00188 
00189 /* lecture */
00190 param *save_ima_lect(save_ima_t *des, param *ptp, char *debq);
00191 /* init */
00192 int save_imau1_init(save_ima_t *des, imau1 im); /* .ima | .ras */
00193 int save_ima_init(save_ima_t *des);   /* autres types que u1 */
00194 /* calcul */
00195 int save_imau1_calc(save_ima_t *des, imau1 im);   /* .ima  */
00196 int save_imau2_calc(save_ima_t *des, imau2 im);   /* .imw       */
00197 int save_imau4_calc(save_ima_t *des, imau4 im);   /* .iml       */
00198 int save_imafl_calc(save_ima_t *des, imafl im);   /* .imf       */
00199 int save_imacx4_calc(save_ima_t *des, imacx4 im); /* .cxs       */
00200 int save_imacx8_calc(save_ima_t *des, imacx8 im); /* .cxf       */
00201 /* fermeture */
00202 int save_ima_ferm(select_ima_t sel, save_ima_t des);  
00203 
00204 
00205 /* **************************** lmoy2D.c *****************************/
00206 /*  moyennage spatiale                                                */
00207 /*    entree : u1, u2, fl, db                                        */
00208 /*    sortie : u1, u2, fl, db (meme type que l'entree)               */
00209 /* *******************************************************************/
00210 
00211 
00214 typedef struct { 
00215    int dimX, dimY;          
00216    pixu4 *tmpcolu4;         
00217    double *tmpcoldb;        
00218 } moy2D_t;
00219 
00220 param *moy2D_lect(moy2D_t *des, param *ptp, char *debq);
00221 int moy2Du1_init(moy2D_t *des, imau1 im0, imau1 *imres);   
00222 int moy2Du2_init(moy2D_t *des, imau2 im0, imau2 *imres);   
00223 int moy2Dfl_init(moy2D_t *des, imafl im0, imafl *imres);   
00224 int moy2Ddb_init(moy2D_t *des, imadb im0, imadb *imres);   
00225 int moy2Du1_calc(moy2D_t *des, imau1 im0, imau1 *imres);   
00226 int moy2Du2_calc(moy2D_t *des, imau2 im0, imau2 *imres);   
00227 int moy2Dfl_calc(moy2D_t *des, imafl im0, imafl *imres);   
00228 int moy2Ddb_calc(moy2D_t *des, imadb im0, imadb *imres);   
00229 
00230 /* **************************** lmoycarre2D.c ************************************/
00231 /*   moyenne des carres d'une image - calcul glissant, exact sur les bords       */
00232 /* *******************************************************************************/
00235 typedef struct {
00236    int dimX, dimY; 
00237    double *tab;    
00238    double *tmplig; 
00239    double *tmpcol; 
00240 } moycarre2D_t;
00241 
00242 param *moycarre2D_lect(moycarre2D_t *des, param *ptp, char *debq);
00243 /* init */
00244 int moycarre2Du1_init(moycarre2D_t *des, imau1 im0, imafl *imres);     
00245 int moycarre2Du2_init(moycarre2D_t *des, imau2 im0, imafl *imres);     
00246 int moycarre2Dfl_init(moycarre2D_t *des, imafl im0, imafl *imres);     
00247 int moycarre2Ddb_init(moycarre2D_t *des, imadb im0, imadb *imres);     
00248 /* calc */
00249 int moycarre2Du1_calc(moycarre2D_t *des, imau1 im0, imafl *imres);   
00250 int moycarre2Du2_calc(moycarre2D_t *des, imau2 im0, imafl *imres);   
00251 int moycarre2Dfl_calc(moycarre2D_t *des, imafl im0, imafl *imres);   
00252 int moycarre2Ddb_calc(moycarre2D_t *des, imadb im0, imadb *imres);   
00253 
00254 
00255 /* *************************** add_color_map **************************/
00256 /*  ajout d'une color map                                             */
00257 /* *******************************************************************/
00260 typedef struct {
00261     char *nom; 
00262     pixu1 *lutr, *lutv, *lutb;   
00263 } add_colormap_t;
00264 
00265 param * add_colormap_lect(add_colormap_t *des, param * ptp, char * debq);
00266 int add_colormap_init(add_colormap_t *des);
00267 int add_colormap_calc(add_colormap_t *des, imau1 *ima);
00268 int free_lut_u1(imau1 *im);
00269 int alloc_lut_u1(imau1 *im);
00270 
00271 short breshenham( imau1 *image,short x1, short y1, short x2,short y2,short intensity);
00272 
00273 /*pas de code aprés cette ligne*/
00274 #endif

Generated on Tue Apr 22 13:31:04 2008 for ima2D by  doxygen 1.5.3