User:Rama/focus stacking
Jump to navigation
Jump to search
align_image_stack -m -a AIS_ IMG_????.JPG enfuse -o result.tif --exposure-weight=0 --saturation-weight=0 --contrast-weight=1 --hard-mask AIS_????.tif
My perl script
[edit]- Usage
Put images to stack in "targetDirectory" and use
$ focusstacking targetDirectory/
The script will output a "result.tiff" in "targetDirectory".
- Requirements
- Perl
- rename
- convert (part of ImageMagik)
- enfuse and enblend (part of hugin)
- Installation
- copy-paste the following text into a file ("focusstack.pl" for instance)
- autorise excecution : "chmod +x focusstack.pl"
- as root, copy file into /usr/bin (there are more elegant ways to do this).
#!/usr/bin/perl
use strict;
my $numArgs = $#ARGV + 1;
if ($numArgs != 1)
{
print "Please enter one argument (path to directory containing photographs to stack)\n";
exit(1);
}
my $targetPath=$ARGV[0];
unless (-d $targetPath)
{
print "Directory does not exist. Please check the path.\n";
exit(1);
}
chdir($targetPath) or die "Cannot chdir to $targetPath.\n";
print "Stacking photographs in $targetPath\n";
system("rename JPG jpg *");
# system("rename s/JPG/jpg/ *"); # Depending on what "rename" you have in your distribution
opendir(DIR, ".");
my @files = grep(/\.jpg$/,readdir(DIR));
closedir(DIR);
print "Converting files to TIFF\n";
my $file="";
foreach $file (@files) {
#print "Converting $file to TIFF\n";
system "convert $file z_$file.tif";
}
print "Creating masks\n";
system "align_image_stack -m -a mask z_*.tif";
system "rm -f z_*.tif";
my $exposureOption ="wExposure=0" ;
my $saturationOption = "wSaturation=0" ;
my $contrastOption = "wContrast=1" ;
my $maskOption = "HardMask" ;
my $contrastWindowOption = "ContrastWindowSize=9";
# my $exposureOption ="exposure-weight=0" ; # Depending on your version of enfuse.
# my $saturationOption = "saturation-weight=0" ; # The above should work with all versions.
# my $contrastOption = "contrast-weight=1" ;
# my $maskOption = "hard-mask" ;
# my $contrastWindowOption = "contrast-window-size=9";
system "enfuse -o result.tiff --$exposureOption --$saturationOption --$contrastOption --$maskOption --$contrastWindowOption mask*.tif";
system "rm -f mask*.tif";