From: <bru...@us...> - 2008-08-21 16:09:13
|
Revision: 872 http://panotools.svn.sourceforge.net/panotools/?rev=872&view=rev Author: brunopostle Date: 2008-08-21 16:09:23 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Oops, various fixes I forgot to commit before. Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2008-08-21 00:39:26 UTC (rev 871) +++ trunk/Panotools-Script/bin/match-n-shift 2008-08-21 16:09:23 UTC (rev 872) @@ -65,7 +65,7 @@ { my @photos = map (File::Spec->rel2abs ($_), @ARGV); - my $speeds; + my $speeds = {}; for my $path_photo (@photos) { my $exif_info = Image::ExifTool::ImageInfo ($path_photo, 'ExposureTime', 'ShutterSpeed'); @@ -75,15 +75,21 @@ my $brackets = scalar keys (%{$speeds}); print STDERR "$brackets shutter speeds found.\n"; - die "Number of images not divisible by $brackets" if scalar (@photos) % $brackets; + if (scalar (@photos) % $brackets) + { + print STDERR "Can't align stacks, number of images not divisible by $brackets\n"; + $dostacks = 0; + } if ($brackets < 2) { - print STDERR "Not attempting to align stacks.\n"; + print STDERR "Can't align stacks, no exposure bracketing detected.\n"; $dostacks = 0; } - next unless ($dostacks); + if ($dostacks) + { + my $longest; for my $et (keys %{$speeds}) { @@ -114,11 +120,14 @@ { my @projection = (); @projection = ('-e') if ($projection == 2 or $projection == 3); - system ('align_image_stack', @projection, '-f', $deg_fov, '-p', File::Spec->catfile ($tempdir, "stack_$index_stack.pto"), @{$stack}); + system ('align_image_stack', @projection, '-f', $deg_fov, + '-p', File::Spec->catfile ($tempdir, "stack_$index_stack.pto"), @{$stack}); $index_stack++; } @paths_input = @{$bases}; + + } } @@ -281,9 +290,6 @@ $oto->Option->{outputLDRExposureBlended} = 'true'; } -# FIXME -$oto->Write ('abc'); - $index = 0; for my $image (@{$oto->Image}) { @@ -304,8 +310,11 @@ $index++; } -# FIXME -$oto->Write ('def'); +for my $index_meta (0 .. scalar @{$oto->Image} -1) +{ + $oto->ImageMetadata->[$index_meta] = new Panotools::Script::Line::ImageMetadata; + $oto->ImageMetadata->[$index_meta]->{autoCenterCrop} = 0 if defined $crop_s; +} if ($align) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2008-09-01 21:39:31
|
Revision: 876 http://panotools.svn.sourceforge.net/panotools/?rev=876&view=rev Author: brunopostle Date: 2008-09-01 21:39:42 +0000 (Mon, 01 Sep 2008) Log Message: ----------- Write crop factor Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2008-09-01 21:38:55 UTC (rev 875) +++ trunk/Panotools-Script/bin/match-n-shift 2008-09-01 21:39:42 UTC (rev 876) @@ -313,6 +313,7 @@ for my $index_meta (0 .. scalar @{$oto->Image} -1) { $oto->ImageMetadata->[$index_meta] = new Panotools::Script::Line::ImageMetadata; + $oto->ImageMetadata->[$index_meta]->{cropFactor} = 1; $oto->ImageMetadata->[$index_meta]->{autoCenterCrop} = 0 if defined $crop_s; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-11-20 23:39:23
|
Revision: 1161 http://panotools.svn.sourceforge.net/panotools/?rev=1161&view=rev Author: brunopostle Date: 2009-11-20 23:39:15 +0000 (Fri, 20 Nov 2009) Log Message: ----------- Use Panotools::Photos for stack detection Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2009-11-19 00:37:29 UTC (rev 1160) +++ trunk/Panotools-Script/bin/match-n-shift 2009-11-20 23:39:15 UTC (rev 1161) @@ -9,6 +9,7 @@ use Image::ExifTool; use Math::Trig; use Panotools::Script; +use Panotools::Photos; use File::Temp qw/tempdir/; my $path_oto; @@ -58,54 +59,16 @@ # try and so something sane with bracketed stacks my $index_stack = 0; +my $photos_all = new Panotools::Photos (map (File::Spec->rel2abs ($_), @ARGV)); +my @photos = map (File::Spec->rel2abs ($_), @ARGV); + +$dostacks = $photos_all->Bracketed if $dostacks; + if ($dostacks) { - my @photos = map (File::Spec->rel2abs ($_), @ARGV); - my $speeds = {}; - for my $path_photo (@photos) - { - my $exif_info = Image::ExifTool::ImageInfo ($path_photo, 'ExposureTime', 'ShutterSpeed'); - my $et = $exif_info->{ExposureTime} || $exif_info->{ShutterSpeed}; - $speeds->{$et} = 'TRUE'; - } + my $longest = shift @{$photos_all->Speeds}; - my $brackets = scalar keys (%{$speeds}); - print STDERR "$brackets shutter speeds found.\n"; - if (scalar (@photos) % $brackets) - { - print STDERR "Can't align stacks, number of images not divisible by $brackets\n"; - $dostacks = 0; - } - - if ($brackets < 2) - { - print STDERR "Can't align stacks, no exposure bracketing detected.\n"; - $dostacks = 0; - } - - if ($dostacks) - { - - my $longest; - my $sec_longest; - for my $et (keys %{$speeds}) - { - my $sec_et = $et; - if ($sec_et =~ /^1\/([0-9]+)$/) - { - $sec_et = 1 / $1; - } - - $longest = $et unless defined $longest; - $sec_longest = $sec_et unless defined $sec_longest; - if ($sec_et > $sec_longest) - { - $longest = $et; - $sec_longest = $sec_et; - } - } - print STDERR "Longest exposure: $longest\n"; my $bases; @@ -120,7 +83,7 @@ while (@photos) { my @stack; - push @stack, shift @photos for (1 .. $brackets); + push @stack, shift @photos for (1 .. scalar @{$photos_all->Speeds}); push @{$stacks}, [@stack]; } @@ -135,7 +98,6 @@ @paths_input = @{$bases}; - } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-11-22 23:13:58
|
Revision: 1162 http://panotools.svn.sourceforge.net/panotools/?rev=1162&view=rev Author: brunopostle Date: 2009-11-22 23:13:51 +0000 (Sun, 22 Nov 2009) Log Message: ----------- Use EXIF angle of view if available Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2009-11-20 23:39:15 UTC (rev 1161) +++ trunk/Panotools-Script/bin/match-n-shift 2009-11-22 23:13:51 UTC (rev 1162) @@ -6,8 +6,6 @@ use Getopt::Long; use Pod::Usage; use Image::Size; -use Image::ExifTool; -use Math::Trig; use Panotools::Script; use Panotools::Photos; use File::Temp qw/tempdir/; @@ -19,7 +17,7 @@ my $refine = 0; my $dostacks = 0; my $projection = 0; -my $deg_fov = 50; +my $deg_fov; my $crop_s = undef; my $align = 0; my $clean = 0; @@ -40,45 +38,44 @@ # code assumes images are sorted @ARGV = sort @ARGV; -my @paths_input = @ARGV; pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_oto and scalar @paths_input > 1); +pod2usage (2) unless (defined $path_oto and scalar @ARGV > 1); +my @paths_input = map (File::Spec->rel2abs ($_), @ARGV); + +my $photos_all = new Panotools::Photos (@paths_input); + +$deg_fov = ($photos_all->FOV || 50) unless defined $deg_fov; # decimal separator workaround $deg_fov =~ s/,.*//; + # disable ransac for wideangle shots my $ransac = 1; $ransac = 0 if ($noransac or $deg_fov > 60); # extra refine options my @refine = (); @refine = ('--refine', '--keep-unrefinable', 0) if $refine; -my @paths_output = (); - my $tempdir = tempdir (CLEANUP => $clean); +print STDERR "Temporary files will be saved in $tempdir\n" unless $clean; - # try and so something sane with bracketed stacks -my $index_stack = 0; -my $photos_all = new Panotools::Photos (map (File::Spec->rel2abs ($_), @ARGV)); -my @photos = map (File::Spec->rel2abs ($_), @ARGV); - $dostacks = $photos_all->Bracketed if $dostacks; +my $index_stack = 0; +my @path_pto_stacks; if ($dostacks) { - my $longest = shift @{$photos_all->Speeds}; - print STDERR "Longest exposure: $longest\n"; - my $bases; - for my $path_photo (@photos) + my $bases = new Panotools::Photos; + for my $photo (@{$photos_all}) { - my $exif_info = Image::ExifTool::ImageInfo ($path_photo, 'ExposureTime', 'ShutterSpeed'); - my $et = $exif_info->{ExposureTime} || $exif_info->{ShutterSpeed}; - push @{$bases}, $path_photo if $et eq $longest; + my $et = $photo->{exif}->{ExposureTime} || $photo->{exif}->{ShutterSpeed}; + push @{$bases}, $photo if $et eq $longest; } + my @photos = $photos_all->Paths; my $stacks; while (@photos) { @@ -91,13 +88,14 @@ { my @projection = (); @projection = ('-e') if ($projection == 2 or $projection == 3); + my $path_pto_stack = File::Spec->catfile ($tempdir, "stack_$index_stack.pto"); system ('align_image_stack', @projection, '-f', $deg_fov, - '-p', File::Spec->catfile ($tempdir, "stack_$index_stack.pto"), @{$stack}); + '-p', $path_pto_stack, @{$stack}); + push @path_pto_stacks, $path_pto_stack; $index_stack++; } - @paths_input = @{$bases}; - + @paths_input = $bases->Paths; } @@ -111,18 +109,13 @@ $oto->Read ($path_oto); # merge stacks -if ($dostacks) +if (scalar @path_pto_stacks) { my $tempfile = File::Spec->catfile ($tempdir, 'bases.oto'); $oto->Write ($tempfile); - my @ptos = ($tempfile); + my @ptos = ($tempfile, @path_pto_stacks); - for my $i (0 .. $index_stack -1) - { - push @ptos, File::Spec->catfile ($tempdir, "stack_$i.pto"); - } - my $temp_merged = File::Spec->catfile ($tempdir, 'merged.oto'); system ('ptomerge', @ptos, $temp_merged); my $temp_sorted = File::Spec->catfile ($tempdir, 'sorted.oto'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2013-01-31 21:31:30
|
Revision: 1356 http://panotools.svn.sourceforge.net/panotools/?rev=1356&view=rev Author: brunopostle Date: 2013-01-31 21:31:23 +0000 (Thu, 31 Jan 2013) Log Message: ----------- Allow setting XYZ translation parameters in CSV file Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2013-01-29 21:20:58 UTC (rev 1355) +++ trunk/Panotools-Script/bin/match-n-shift 2013-01-31 21:31:23 UTC (rev 1356) @@ -91,6 +91,9 @@ $image->{y} = $csv[$id]->[1] if (defined $csv[$id] and defined $csv[$id]->[1]); $image->{p} = $csv[$id]->[2] if (defined $csv[$id] and defined $csv[$id]->[2]); $image->{r} = $csv[$id]->[3] if (defined $csv[$id] and defined $csv[$id]->[3]); + $image->{TrX} = $csv[$id]->[4] if (defined $csv[$id] and defined $csv[$id]->[4]); + $image->{TrY} = $csv[$id]->[5] if (defined $csv[$id] and defined $csv[$id]->[5]); + $image->{TrZ} = $csv[$id]->[6] if (defined $csv[$id] and defined $csv[$id]->[6]); if ($photos_all->Bracketed) { @@ -224,6 +227,13 @@ DSC_0003.JPG,180,20,90 DSC_0004.JPG,-180,-20,90 +..or optionally specify XYZ translation parameters as well: + + DSC_0001.JPG, 0, 20, 0, 0.5, 0.0, 1.0 + DSC_0002.JPG, 0, 20, 0, 1.4, 0.0, 1.0 + DSC_0003.JPG, 0, 20, 0, 2.3, 0.0, 1.0 + DSC_0004.JPG, 0, 20, 0, 3.2, 0.0, 1.0 + If the roll field is ommitted then it will be set to zero or any value obtainable from EXIF data, similarly if the pitch field is ommitted then pitch will be set to zero. So this should also work: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |