make im_spcor[12] static, im_spcor is wrapper

This commit is contained in:
John Cupitt 2007-11-12 17:34:37 +00:00
parent 19c9cccbfc
commit 46f4cd5800
3 changed files with 63 additions and 66 deletions

View File

@ -274,8 +274,6 @@ int im_fastcor( IMAGE *, IMAGE *, IMAGE * );
int im_fastcor_raw( IMAGE *, IMAGE *, IMAGE * );
int im_spcor( IMAGE *, IMAGE *, IMAGE * );
int im_spcor_raw( IMAGE *, IMAGE *, IMAGE * );
int im_spcor2( IMAGE *, IMAGE *, IMAGE * );
int im_spcor2_raw( IMAGE *, IMAGE *, IMAGE * );
int im_gradcor( IMAGE *, IMAGE *, IMAGE * );
int im_gradcor_raw( IMAGE *, IMAGE *, IMAGE * );
int im_contrast_surface( IMAGE *, IMAGE *, int, int );

View File

@ -1007,44 +1007,6 @@ static im_function spcor_raw_desc = {
two_in_one_out /* Arg list */
};
/* Call im_spcor2 via arg vector.
*/
static int
spcor2_vec( im_object *argv )
{
return( im_spcor2( argv[0], argv[1], argv[2] ) );
}
/* Description of im_spcor2.
*/
static im_function spcor2_desc = {
"im_spcor2", /* Name */
"normalised correlation of in2 within in1",
IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */
spcor2_vec, /* Dispatch function */
IM_NUMBER( two_in_one_out ), /* Size of arg list */
two_in_one_out /* Arg list */
};
/* Call im_spcor2_raw via arg vector.
*/
static int
spcor2_raw_vec( im_object *argv )
{
return( im_spcor2_raw( argv[0], argv[1], argv[2] ) );
}
/* Description of im_spcor2_raw.
*/
static im_function spcor2_raw_desc = {
"im_spcor2_raw", /* Name */
"normalised correlation of in2 within in1, no black padding",
IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */
spcor2_raw_vec, /* Dispatch function */
IM_NUMBER( two_in_one_out ), /* Size of arg list */
two_in_one_out /* Arg list */
};
/* Args for im_zerox.
*/
static im_arg_desc zerox_args[] = {
@ -1392,8 +1354,6 @@ static im_function *convol_list[] = {
&shrink_desc,
&spcor_desc,
&spcor_raw_desc,
&spcor2_desc,
&spcor2_raw_desc,
&stretch3_desc,
&zerox_desc
};

View File

@ -17,7 +17,8 @@
* @(#)
* @(#) Returns 0 on sucess and -1 on error.
*
* Copyright: 1990, N. Dessipris.
* Copyright: 1990, N. Dessipris; 2006, 2007 Nottingham Trent University.
*
*
* Author: Nicos Dessipris
* Written on: 02/05/1990
@ -39,6 +40,12 @@
* - sets Xoffset / Yoffset
* 8/3/06 JC
* - use im_embed() with edge stretching on the input, not the output
*
* 2006-10-24 tcv
* - add im_spcor2
*
* 2007-11-12 tcv
* - make im_spcor a wrapper selecting either im__spcor1 or im__spcor2
*/
/*
@ -113,6 +120,11 @@ static void *spcor2_start( IMAGE *r, void *a, void *b );
static int spcor2_gen( REGION *r, void *seq, void *a, void *b );
static int spcor2_stop( void *seq, void *a, void *b );
/* spcor1 generate function.
*/
static int
spcor1_gen( REGION *or, void *seq, void *a, void *b )
{
#define LOOP(IN) \
{ \
IN *a = (IN *) p; \
@ -152,12 +164,6 @@ static int spcor2_stop( void *seq, void *a, void *b );
} \
} \
}
/* spcor generate function.
*/
static int
spcor_gen( REGION *or, void *seq, void *a, void *b )
{
REGION *ir = (REGION *) seq;
SpcorInfo *inf = (SpcorInfo *) b;
IMAGE *ref = inf->ref;
@ -202,7 +208,7 @@ spcor_gen( REGION *or, void *seq, void *a, void *b )
case IM_BANDFMT_USHORT: LOOP(unsigned short); break;
case IM_BANDFMT_SHORT: LOOP(signed short); break;
default:
error_exit( "im_spcor: internal error #7934" );
error_exit( "im_spcor1: internal error #7934" );
/* Keep gcc -Wall happy.
*/
@ -219,6 +225,7 @@ spcor_gen( REGION *or, void *seq, void *a, void *b )
}
return( 0 );
#undef LOOP
}
/* Pre-calculate stuff for our reference image.
@ -252,8 +259,8 @@ make_inf( IMAGE *out, IMAGE *ref )
return( inf );
}
int
im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
static int
im__spcor1_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
{
SpcorInfo *inf;
@ -265,7 +272,7 @@ im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
/* Check sizes.
*/
if( in->Xsize < ref->Xsize || in->Ysize < ref->Ysize ) {
im_errormsg( "im_spcor_raw: ref not smaller than in" );
im_errormsg( "im_spcor1_raw: ref not smaller than in" );
return( -1 );
}
@ -274,13 +281,13 @@ im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
if( in->Coding != IM_CODING_NONE || in->Bands != 1 ||
ref->Coding != IM_CODING_NONE || ref->Bands != 1 ||
in->BandFmt != ref->BandFmt ) {
im_errormsg( "im_spcor_raw: input not uncoded 1 band" );
im_errormsg( "im_spcor1_raw: input not uncoded 1 band" );
return( -1 );
}
if( in->BandFmt != IM_BANDFMT_UCHAR &&
in->BandFmt != IM_BANDFMT_SHORT &&
in->BandFmt != IM_BANDFMT_USHORT ) {
im_errormsg( "im_spcor_raw: input not char/short/ushort" );
im_errormsg( "im_spcor1_raw: input not char/short/ushort" );
return( -1 );
}
@ -307,7 +314,7 @@ im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
/* Write the correlation.
*/
if( im_generate( out,
im_start_one, spcor_gen, im_stop_one, in, inf ) )
im_start_one, spcor1_gen, im_stop_one, in, inf ) )
return( -1 );
out->Xoffset = -ref->Xsize / 2;
@ -318,17 +325,17 @@ im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out )
/* The above, with the input expanded to make out the same size as in.
*/
int
im_spcor( IMAGE *in, IMAGE *ref, IMAGE *out )
static int
im__spcor1( IMAGE *in, IMAGE *ref, IMAGE *out )
{
IMAGE *t1 = im_open_local( out, "im_spcor intermediate", "p" );
IMAGE *t1 = im_open_local( out, "im_spcor1 intermediate", "p" );
if( !t1 ||
im_embed( in, t1, 1,
ref->Xsize / 2, ref->Ysize / 2,
in->Xsize + ref->Xsize - 1,
in->Ysize + ref->Ysize - 1 ) ||
im_spcor_raw( t1, ref, out ) )
im__spcor1_raw( t1, ref, out ) )
return( -1 );
out->Xoffset = 0;
@ -337,13 +344,13 @@ im_spcor( IMAGE *in, IMAGE *ref, IMAGE *out )
return( 0 );
}
int
im_spcor2_raw(
static int
im__spcor2_raw(
IMAGE *f,
IMAGE *w,
IMAGE *r
){
#define FUNCTION_NAME "im_spcor_raw"
#define FUNCTION_NAME "im_spcor2_raw"
DOUBLEMASK *w_stats;
spcor2_w_inf *w_inf;
@ -533,8 +540,8 @@ spcor2_stop( void *vseq, void *a, void *b ){
return 0;
}
int
im_spcor2( IMAGE *in, IMAGE *ref, IMAGE *out )
static int
im__spcor2( IMAGE *in, IMAGE *ref, IMAGE *out )
{
IMAGE *t1 = im_open_local( out, "im_spcor2 intermediate", "p" );
@ -543,7 +550,7 @@ im_spcor2( IMAGE *in, IMAGE *ref, IMAGE *out )
ref->Xsize / 2, ref->Ysize / 2,
in->Xsize + ref->Xsize - 1,
in->Ysize + ref->Ysize - 1 ) ||
im_spcor2_raw( t1, ref, out ) )
im__spcor2_raw( t1, ref, out ) )
return( -1 );
out->Xoffset = 0;
@ -551,3 +558,35 @@ im_spcor2( IMAGE *in, IMAGE *ref, IMAGE *out )
return( 0 );
}
int
im_spcor_raw(
IMAGE *f,
IMAGE *w,
IMAGE *r
){
if( im_incheck( w ))
return -1;
if( 3 <= w-> Xsize || 3 <= w-> Ysize )
return im__spcor2( f, w, r );
else
return im__spcor1( f, w, r );
}
int
im_spcor(
IMAGE *f,
IMAGE *w,
IMAGE *r
){
if( im_incheck( w ))
return -1;
if( 3 <= w-> Xsize || 3 <= w-> Ysize )
return im__spcor2( f, w, r );
else
return im__spcor1( f, w, r );
}