[Gllug] Faster maths?

salsaman salsaman at xs4all.nl
Thu Mar 8 23:49:36 UTC 2007


Adrian McMenamin wrote:

>I have some perl which indexes and dithers a PNG image to a 256 colour
>palette.
>
>The indexing is pretty fast - a 59K (compressed) PNG image on a 4000
>BogoMIPS machine in about a second.
>
>But I turn on dithering it takes half an hour!!
>
>The bottleneck appears to be calculating the distance of a point in
>colourspace (ie the original colour + diffused error) from any point in
>the palette (to find the closest match).
>
>I don't use sqrt - just compare square with square (and save a match so
>don't have to do the same lookup twice).
>
>But generally this requires several tens of millions of comparisons for
>a reasonably large image.
>
>There must be a better way as I know C libraries obviously don't take
>this long (do they?) and the difference in speed is so great it cannot
>simply be perl versus C that is the issue.
>
>I know this is a bit of a specialist subject - but anybody know of
>faster ways to calculate distances in a three dimensional space and/or
>work out how to compare with a smaller range of numbers than the whole
>24 bit palette?
>
>  
>

Perhaps you could do some optimising while the index is being created ? 
How do you generate the 8 bit palette ?

Gabriel.

-- 
Gllug mailing list  -  Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug




More information about the GLLUG mailing list