in reply to Re^3: Interpolating data using pdl
in thread Interpolating data using pdl

Thanks for the update. I meant a 2-D image with RGB or ARGB.

Replies are listed 'Best First'.
Re^5: Interpolating data using pdl
by vr (Curate) on Mar 15, 2017 at 19:43 UTC
    use strict; use warnings; use PDL; use PDL::IO::Image; # data my $x = sequence( 100, 100 ); # ranges my $range1 = $x < 3000; my $range2 = ( $x >= 3000 ) * ( $x <= 7000 ); my $range3 = $x > 7000; my $bytes = ( $range1 + 2 * $range2 + 3 * $range3 )-> byte; my $palette = byte [ [ 0, 0, 0 ], [ 255, 50, 50 ], [ 128, 255, 0 ], [ 255, 215, 0 ] ]; $bytes-> wimage( 'test.png', { palette => $palette });

    Not sure if I understand what you need, but, "from the top of my head", this code produces rather dull looking image with three colorful stripes (no time to invent some "smart" data). You have your conditions, combine them, associate with palette of the same length + 1.

      I'm able to use your solution. When I try to initiate a piddle with zeroes(5400,2700) it works fine, but zeroes(21600,10800) doesn't work. It shows an error as Probably false alloc of over 1Gb PDL! (set $PDL::BIGPDL = 1 to enable). I tried setting $PDL::BIGPDL=1, but then it crashes. How can we solve this?

        zeroes(21600,10800) works for me. Are you on 32-bit OS? Then use 64-bit. If your data is going to finish as 8 bits per channel image anyway, then work with byte piddles.

        P.S. BTW, you understand, that your image will be 700 MB (uncompressed), don't you?