28 char * leftname = NULL, * rightname = NULL, * outfname = NULL;
29 char * maskname = NULL, * errname;
30 FILE * leftfile, * rightfile, *maskfile, *
outfile;
31 int oflag = 0, lflag = 0;
36 float *mask_mult_table;
40 pyramid leftgausspyr, leftbandpyr;
41 pyramid rightgausspyr, rightbandpyr;
58 "% l%-levels!d o%-outfile!s inmask!s outmask!s maskfile!s",
60 &oflag, &outfname, &leftname, &rightname, &maskname ) == 0 )
73 mask_mult_table = (
float *)
malloc(
sizeof(
float) * 5 * 5 * 256);
77 maskmult = &(mask_mult_table[(i*5) << 8]);
80 for (k=0;k < 256; k++)
81 maskmult[ k ] = (
float) k * mask[i*5+j];
91 for ( rle_cnt = 0; ; rle_cnt++ )
94 &left_hdr, levels, mask_mult_table ))
102 &rightbandpyr, &right_hdr,
103 levels, mask_mult_table ))
111 &mask_hdr, levels, mask_mult_table ))
118 if (leftgausspyr.
nchan != rightgausspyr.
nchan)
121 "%s: Left and right images must have same number of channels\n",
125 if ((leftgausspyr.
xlen[0] != rightgausspyr.
xlen[0]) ||
126 (leftgausspyr.
ylen[0] != rightgausspyr.
ylen[0]))
129 "%s: Left and right images must have same dimensions\n",
136 "%s: Currently, mask image must have a mask per input channel\n",
140 if ((leftgausspyr.
xlen[0] != maskgausspyr.
xlen[0]) ||
141 (leftgausspyr.
ylen[0] != maskgausspyr.
ylen[0]))
144 "%s: Mask image must have same dimensions as input images\n",
159 splitpyr.
xlen[0] = leftbandpyr.
xlen[0];
160 splitpyr.
ylen[0] = leftbandpyr.
ylen[0];
163 for(level = splitpyr.
levels - 1; level >= 0; level--)
166 &splitpyr,&maskgausspyr);
176 splitpyr.
nchan - 1,left_hdr);
int scanargs(int argc, char **argv, const char *format,...)
void rle_addhist(char *argv[], rle_hdr *in_hdr, rle_hdr *out_hdr)
float * gauss_mask(int siz)
void rle_names(rle_hdr *the_hdr, const char *pgmname, const char *fname, int img_num)
int rle_get_error(int code, const char *pgmname, const char *fname)
rle_hdr * rle_hdr_cp(rle_hdr *from_hdr, rle_hdr *to_hdr)
FILE * rle_open_f(const char *prog_name, const char *f_name, const char *mode)
char * cmd_name(char **argv)
#define RLE_CHECK_ALLOC(pgm, ptr, name)
rle_hdr * rle_hdr_init(rle_hdr *the_hdr)