OSZ-Banner


Perl-Skript zur Analyse der Spektren

Mit dem folgenden Skript wird die Intensität der Verschiedenen Farben eines Fotos ermittelt und in eine Datendatei sowie in eine neue Grafik ausgegeben. Das Ergebnis ist dan einerseits ein Spektrum mit der Intensitätsverteilung über alle Farben und andererseits die Datendatei, die mit Calc von OpenOffice weiter verarbeitet werden kann.

Perl-Code:


#!/usr/bin/perl
use GD;
use Math::Trig;
#----------------------------------------------------------
my $datadir='./';
my $testfile='Spektrum_CuCl2.jpg';
my $graph=100;
my $analyse='capture_analyse_CuCl2.png';
my $daten='werte_capture_CuCl2.dat';

#----------------------------------------------------------
my $im = new GD::Image($testfile) || die $!;
my ($width,$height) = $im->getBounds();
print "[$width,$height]\n";
my $Max=$height*3*255;
my $imout=new GD::Image($width,$height+$graph) || die $!;
my $white = $imout->colorAllocate(255,255,255);
my $black = $imout->colorAllocate(0,0,0);
my $red = $imout->colorAllocate(255,0,0);
my $blue = $imout->colorAllocate(0,0,255);
$imout->rectangle(0,0,$width,$graph,$black);
$imout->fill(50,50,$white);
$imout->copy($im,0,$graph,0,0,$width,$height);
for(my $i=0;$i<$width;$i++)
{
my $sum=0;
for( my $j=0;$j<$height;$j++)
{
(my $r,my $g,my $b)=$im->rgb($im->getPixel($i,$j));
$sum+=($r+$g+$b);
}
print "$i\t".(100/$Max*$sum)."\n";
open (datei, ">>$daten") or die $!;
  print datei "$i\t".(100/$Max*$sum)."\n";
close (datei);
my $ynew=$graph-($graph/$Max*$sum);
$imout->setPixel($i,$ynew,$black) ;

}
my $png = $imout->png;
open FOO, ">$analyse";
binmode FOO;
print FOO $png;
close(FOO);

Auswertung der Daten mit einer Tabellenkalkulation

Fehlt noch!



Zurück zum Versuch