smaller norm factor for d->i mask

This commit is contained in:
John Cupitt 2010-11-30 11:53:53 +00:00
parent 8cfe327cae
commit 83fc52c491
4 changed files with 28 additions and 7 deletions

View File

@ -39,7 +39,8 @@
- mask gtk-doc done
- add cfitsio dependancy
- add FITS reader
- land the vector branmch ... we have SSE erode/dilate/add/conv
- land the vector branch and the orc dependancy ... we have SSE
erode/dilate/add/conv
- add IM_SWAP
- dilate/erode do (!=0) on non-uchar images
- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask
@ -51,6 +52,8 @@
- oop, bool constants are always (int) now, so (^-1) works for unsigned types,
thanks Nicolas
- much lower memuse for im_cache() in complex pipelines
- im_scale_dmask() normalises to 20, not 100 ... we hit the fast
conv path more often
12/5/10 started 7.22.2
- the conditional image of ifthenelse can be any format, a (!=0) is added if

5
TODO
View File

@ -1,6 +1,11 @@
- im_conv()/im_morph() could have more than 10 programs? try 20 and see if we
still have a speedup
- fits >3d load
fits save

View File

@ -1037,14 +1037,24 @@ im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask )
generate = convvec_gen;
#ifdef DEBUG
printf( "im_conv_raw: using vector path\n" );
#endif /*DEBUG*/
printf( "im_conv_raw: using vector path\n" );
}
else if( mask->xsize == 3 && mask->ysize == 3 )
else if( mask->xsize == 3 && mask->ysize == 3 ) {
generate = conv3x3_gen;
else
#ifdef DEBUG
#endif /*DEBUG*/
printf( "im_conv_raw: using 3x3 path\n" );
}
else {
generate = conv_gen;
#ifdef DEBUG
#endif /*DEBUG*/
printf( "im_conv_raw: using general path\n" );
}
/* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause
* too many recalculations on overlaps.
*/

View File

@ -49,6 +49,9 @@
* - gtk-doc
* - you can use commas to separate eader fields
* - small cleanups
* 30/11/10
* - im_scale_dmask() normalises to 20, not 100 ... we hit the fast
* conv path more often
*/
/*
@ -575,7 +578,7 @@ im_read_imask( const char *filename )
* @in: mask to scale
* @filename: filename for returned mask
*
* Scale the dmask to make an imask with a maximum value of 100.
* Scale the dmask to make an imask with a maximum value of 20.
*
* See also: im_norm_dmask().
*
@ -605,10 +608,10 @@ im_scale_dmask( DOUBLEMASK *in, const char *filename )
if( in->coeff[i] > maxval )
maxval = in->coeff[i];
/* Copy and scale, setting max to 100.
/* Copy and scale, setting max to 20.
*/
for( i = 0; i < size; i++ )
out->coeff[i] = IM_RINT( in->coeff[i] * 100.0 / maxval );
out->coeff[i] = IM_RINT( in->coeff[i] * 20.0 / maxval );
out->offset = in->offset;
/* Set the scale to match the adjustment to max.