La verdad es que sé bien poco de Perl, pero necesito entender un programa de forma urgente.
Estoy trabajando con fotografías en formato fits tomadas por un telescopio. La idea es mezclar 3 fotos en distintos filtros para crear una imagen a color. El programa funciona pero necesito entender cómo lo hace.
Si alguien me puede ayudar estaré eternamente agradecida.
Using perl Syntax Highlighting
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
my $im_R = rfits('testR.fits');
$im_R -= 180.;$im_R /= 180.;
$im_R->where($im_R < 0) .= 0 ;
$im_R->where($im_R > 1) .= 1 ;
my $im_G = rfits('testG.fits');
$im_G -= 230.;
$im_G /= 230.;
$im_G->where($im_G < 0) .= 0 ;
$im_G->where($im_G > 1) .= 1 ;
my $B = $im_B(724:1059,557:783);
my $R = $im_R(724:1059,557:783);
my $G = $im_G(724:1059,557:783);
&Vtools::view($R);
&Vtools::view($G);
&Vtools::view($B);
my $cube = zeroes($R->dims,3);
$cube(:,:, (0)).= $R;
$cube(:,:, (1)).= $B;
$cube(:,:, (2)).= $G;
my $win = pgwin(Dev => '/xw');
$win ->rgbi($cube);
while (!<>) {};
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
my $im_R = rfits('testR.fits');
$im_R -= 180.;$im_R /= 180.;
$im_R->where($im_R < 0) .= 0 ;
$im_R->where($im_R > 1) .= 1 ;
my $im_G = rfits('testG.fits');
$im_G -= 230.;
$im_G /= 230.;
$im_G->where($im_G < 0) .= 0 ;
$im_G->where($im_G > 1) .= 1 ;
my $B = $im_B(724:1059,557:783);
my $R = $im_R(724:1059,557:783);
my $G = $im_G(724:1059,557:783);
&Vtools::view($R);
&Vtools::view($G);
&Vtools::view($B);
my $cube = zeroes($R->dims,3);
$cube(:,:, (0)).= $R;
$cube(:,:, (1)).= $B;
$cube(:,:, (2)).= $G;
my $win = pgwin(Dev => '/xw');
$win ->rgbi($cube);
while (!<>) {};
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
my $im_R = rfits('testR.fits');
$im_R -= 180.;$im_R /= 180.;
$im_R->where($im_R < 0) .= 0 ;
$im_R->where($im_R > 1) .= 1 ;
my $im_G = rfits('testG.fits');
$im_G -= 230.;
$im_G /= 230.;
$im_G->where($im_G < 0) .= 0 ;
$im_G->where($im_G > 1) .= 1 ;
my $B = $im_B(724:1059,557:783);
my $R = $im_R(724:1059,557:783);
my $G = $im_G(724:1059,557:783);
&Vtools::view($R);
&Vtools::view($G);
&Vtools::view($B);
my $cube = zeroes($R->dims,3);
$cube(:,:, (0)).= $R;
$cube(:,:, (1)).= $B;
$cube(:,:, (2)).= $G;
my $win = pgwin(Dev => '/xw');
$win ->rgbi($cube);
while (!<>) {};
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
use PDL;
use PDL::NiceSlice;
use Vtools;
use strict;
use PDL::Graphics::PGPLOT::Window;
#use PDL::ImageRGB;
my $im_B = rfits('testB.fits');
$im_B -= 250.;
$im_B /= 250.;
$im_B->where($im_B < 0) .= 0 ;
$im_B->where($im_B > 1) .= 1 ;
my $im_R = rfits('testR.fits');
$im_R -= 180.;$im_R /= 180.;
$im_R->where($im_R < 0) .= 0 ;
$im_R->where($im_R > 1) .= 1 ;
my $im_G = rfits('testG.fits');
$im_G -= 230.;
$im_G /= 230.;
$im_G->where($im_G < 0) .= 0 ;
$im_G->where($im_G > 1) .= 1 ;
my $B = $im_B(724:1059,557:783);
my $R = $im_R(724:1059,557:783);
my $G = $im_G(724:1059,557:783);
&Vtools::view($R);
&Vtools::view($G);
&Vtools::view($B);
my $cube = zeroes($R->dims,3);
$cube(:,:, (0)).= $R;
$cube(:,:, (1)).= $B;
$cube(:,:, (2)).= $G;
my $win = pgwin(Dev => '/xw');
$win ->rgbi($cube);
while (!<>) {};
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
¡Gracias!