From: <bru...@us...> - 2009-11-27 23:27:01
|
Revision: 1169 http://panotools.svn.sourceforge.net/panotools/?rev=1169&view=rev Author: brunopostle Date: 2009-11-27 23:26:51 +0000 (Fri, 27 Nov 2009) Log Message: ----------- Leave 'v' lines that Hugin doesn't complain about Modified Paths: -------------- trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-11-27 23:25:17 UTC (rev 1168) +++ trunk/Panotools-Script/bin/ptoanchor 2009-11-27 23:26:51 UTC (rev 1169) @@ -18,6 +18,7 @@ # TODO write a Makefile instead of system() # TODO $pto->ExposureLayers() and drop Panotools::Photos # TODO run vig_optimize conditionally +# TODO vig_optimize celeste_standalone cpclean options # TODO $stub needs to be supplied on command-line GetOptions ('o|output=s' => \$path_output, @@ -96,9 +97,11 @@ push @path_pto, $path_pto_stack; } - my $path_pto_merged = File::Spec->catfile ($stub, 'merged.pto'); - system ('ptomerge', $path_input, @path_pto, $path_pto_merged); - system ('autooptimiser', '-a', '-l', '-s', '-o', $path_output, $path_pto_merged); + my $path_pto_merged = File::Spec->catfile ($stub, 'merged'); + system ('ptomerge', $path_input, @path_pto, "$path_pto_merged.0.pto"); + system ('autooptimiser', '-a', '-l', '-s', '-o', "$path_pto_merged.1.pto", "$path_pto_merged.0.pto"); + system ('ptovariable', '--positions', '--view', '--barrel', + '--output', $path_output, "$path_pto_merged.1.pto"); } else { @@ -113,8 +116,8 @@ system ('ptomerge', $path_input, "$path_pto_simple.2.pto", "$path_pto_simple.3.pto"); system ('autooptimiser', '-a', '-l', '-s', '-o', "$path_pto_simple.4.pto", "$path_pto_simple.3.pto"); - system ('ptovariable', '--positions', '--vignetting', '--response', '--exposure', - '-o', "$path_pto_simple.5.pto", "$path_pto_simple.4.pto"); + system ('ptovariable', '--positions', '--vignetting', '--response', '--exposure', '--view', + '--barrel', '--output', "$path_pto_simple.5.pto", "$path_pto_simple.4.pto"); system ('vig_optimize', '-o', $path_output, "$path_pto_simple.5.pto"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-03 22:21:49
|
Revision: 1173 http://panotools.svn.sourceforge.net/panotools/?rev=1173&view=rev Author: brunopostle Date: 2009-12-03 22:21:38 +0000 (Thu, 03 Dec 2009) Log Message: ----------- No EXIF reading, rely entirely on hints in .pto input Modified Paths: -------------- trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-12-03 21:00:15 UTC (rev 1172) +++ trunk/Panotools-Script/bin/ptoanchor 2009-12-03 22:21:38 UTC (rev 1173) @@ -5,7 +5,6 @@ use File::Spec; use Getopt::Long; use Pod::Usage; -use Panotools::Photos; use Panotools::Script; use File::Temp qw/tempdir/; @@ -16,7 +15,6 @@ # TODO projects with relative paths # TODO run panomatic too # TODO write a Makefile instead of system() -# TODO $pto->ExposureLayers() and drop Panotools::Photos # TODO run vig_optimize conditionally # TODO vig_optimize celeste_standalone cpclean options # TODO $stub needs to be supplied on command-line @@ -44,8 +42,6 @@ @refine = ('--refine', '--keep-unrefinable', 0) if (defined $pto->Option->{cpgenRefine} and $pto->Option->{cpgenRefine} eq 'true'); -my $photos_all = new Panotools::Photos (map {$_->Path ($path_input)} @{$pto->Image}); - my $tmp; $tmp->{$_} = undef for (map {$_->{j} if defined $_->{j}} @{$pto->Image}); @@ -53,25 +49,18 @@ { my $bases; my $stacks; - for my $index_photo (0 .. scalar @{$photos_all} -1) + for my $index_photo (0 .. scalar @{$pto->Image} -1) { - for my $speed (@{$photos_all->Speeds}) - { - my $et = $photos_all->[$index_photo]->{exif}->{ExposureTime} - || $photos_all->[$index_photo]->{exif}->{ShutterSpeed}; - push @{$bases->{$speed}}, $index_photo if $et eq $speed; - } next if $pto->Image->[$index_photo]->{r} =~ /^=/; push @{$stacks->[$pto->Image->[$index_photo]->{j}]}, $index_photo; } my @path_pto; - for my $speed (@{$photos_all->Speeds}) + for my $id_el (0 .. scalar @{$pto->ExposureLayers} -1) { - my @id_images = @{$bases->{$speed}}; - $speed =~ s/[^0-9a-zA-Z]/-/g; - my $path_pto_bases = File::Spec->catfile ($stub, 'bases_'. $speed); + my @id_images = @{$pto->ExposureLayers->[$id_el]}; + my $path_pto_bases = File::Spec->catfile ($stub, 'bases_'. join ('_', @id_images)); $ransac = 0 if $pto->Image->[$id_images[0]]->v ($pto) > 60; @@ -79,7 +68,7 @@ system ('autopano-sift-c', '--maxdim', $pix_max, @refine, '--ransac', $ransac, '--maxmatches', $points, "$path_pto_bases.1.pto", "$path_pto_bases.0.pto"); system ('celeste_standalone', '-i', "$path_pto_bases.1.pto", '-o', "$path_pto_bases.2.pto"); - system ('cpclean', '-o', "$path_pto_bases.3.pto", "$path_pto_bases.2.pto"); + system ('cpclean', '-n', 1.5, '-o', "$path_pto_bases.3.pto", "$path_pto_bases.2.pto"); push @path_pto, "$path_pto_bases.3.pto"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-04 00:46:38
|
Revision: 1174 http://panotools.svn.sourceforge.net/panotools/?rev=1174&view=rev Author: brunopostle Date: 2009-12-04 00:46:30 +0000 (Fri, 04 Dec 2009) Log Message: ----------- Part finished conversion to writing a Makefile Modified Paths: -------------- trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-12-03 22:21:38 UTC (rev 1173) +++ trunk/Panotools-Script/bin/ptoanchor 2009-12-04 00:46:30 UTC (rev 1174) @@ -5,32 +5,52 @@ use File::Spec; use Getopt::Long; use Pod::Usage; +use Panotools::Makefile; use Panotools::Script; use File::Temp qw/tempdir/; +my $path_prefix; my $path_output; -my $clean = 0; my $help = 0; -# TODO projects with relative paths # TODO run panomatic too # TODO write a Makefile instead of system() # TODO run vig_optimize conditionally # TODO vig_optimize celeste_standalone cpclean options -# TODO $stub needs to be supplied on command-line -GetOptions ('o|output=s' => \$path_output, - 'c|clean' => \$clean, +GetOptions ('p|prefix=s' => \$path_prefix, + 'o|output=s' => \$path_output, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_output and scalar @ARGV); +pod2usage (2) unless (defined $path_prefix and scalar @ARGV); -my $stub = tempdir (CLEANUP => $clean); -print STDERR "Temporary files will be saved in $stub\n" unless $clean; +my $stub = tempdir (CLEANUP => 0); +print STDERR "Temporary files will be saved in $stub\n"; my $path_input = shift @ARGV; +my $mk = new Panotools::Makefile; +$mk->Comment ('Command-line tools'); +$mk->Variable ('PTOSPLIT', 'ptosplit'); +$mk->Variable ('PTOMERGE', 'ptomerge'); +$mk->Variable ('PTOVARIABLE', 'ptovariable'); +$mk->Variable ('APSC', 'autopano-sift-c'); +$mk->Variable ('CELESTE', '-', 'celeste_standalone'); +$mk->Variable ('CPCLEAN', 'cpclean'); +$mk->Variable ('AUTOOPTIMISER', 'autooptimiser'); +$mk->Variable ('VIGOPTIMIZE', 'vig_optimize'); +$mk->Variable ('RM', '-', 'rm'); + +$mk->Variable ('PROJECT_FILE', $path_input); +$mk->Variable ('PREFIX', $path_prefix); + +my $rule = $mk->Rule ('all'); +$rule->Prerequisites ('$(PREFIX).pto'); + +my $rule_secondary = $mk->Rule ('.SECONDARY'); +my $var_tempfiles = $mk->Variable ('TEMP_FILES'); + my $pto = new Panotools::Script; $pto->Read ($path_input); @@ -77,12 +97,11 @@ { next unless scalar @{$stack} > 1; - my @path_photos = map {$pto->Image->[$_]->Path ($path_input)} @{$stack}; my @projection = (); @projection = ('-e') if ($pto->Image->[$stack->[0]] == 2 or $pto->Image->[$stack->[0]] == 3); my $deg_fov = $pto->Image->[$stack->[0]]->v ($pto); my $path_pto_stack = File::Spec->catfile ($stub, 'stack_'. join ('_', @{$stack}) .'.pto'); - system ('align_image_stack', @projection, '-f', $deg_fov, '-p', $path_pto_stack, @path_photos); + system ('align_image_stack', @projection, '-f', $deg_fov, '-p', $path_pto_stack, @{$stack}); push @path_pto, $path_pto_stack; } @@ -90,27 +109,66 @@ system ('ptomerge', $path_input, @path_pto, "$path_pto_merged.0.pto"); system ('autooptimiser', '-a', '-l', '-s', '-o', "$path_pto_merged.1.pto", "$path_pto_merged.0.pto"); system ('ptovariable', '--positions', '--view', '--barrel', - '--output', $path_output, "$path_pto_merged.1.pto"); + '--output', $path_prefix .'.pto', "$path_pto_merged.1.pto"); } else { $ransac = 0 if $pto->Image->[0]->v ($pto) > 60; - my $path_pto_simple = File::Spec->catfile ($stub, 'simple'); + $mk->Comment ('Some intermediate .pto project files'); + $mk->Variable ('SIMPLE_0', '$(PREFIX)_simple.0.pto'); + $mk->Variable ('SIMPLE_1', '$(PREFIX)_simple.1.pto'); + $mk->Variable ('SIMPLE_2', '$(PREFIX)_simple.2.pto'); + $mk->Variable ('SIMPLE_3', '$(PREFIX)_simple.3.pto'); + $mk->Variable ('SIMPLE_4', '$(PREFIX)_simple.4.pto'); + $mk->Variable ('SIMPLE_5', '$(PREFIX)_simple.5.pto'); - system ('autopano-sift-c', '--maxdim', $pix_max, @refine, '--ransac', $ransac, - '--maxmatches', $points, "$path_pto_simple.0.pto", $path_input); - system ('celeste_standalone', '-i', "$path_pto_simple.0.pto", '-o', "$path_pto_simple.1.pto"); - system ('cpclean', '-o', "$path_pto_simple.2.pto", "$path_pto_simple.1.pto"); - system ('ptomerge', $path_input, "$path_pto_simple.2.pto", "$path_pto_simple.3.pto"); - system ('autooptimiser', '-a', '-l', '-s', '-o', "$path_pto_simple.4.pto", - "$path_pto_simple.3.pto"); - system ('ptovariable', '--positions', '--vignetting', '--response', '--exposure', '--view', - '--barrel', '--output', "$path_pto_simple.5.pto", "$path_pto_simple.4.pto"); - system ('vig_optimize', '-o', $path_output, "$path_pto_simple.5.pto"); + $rule_secondary->Prerequisites ('$(SIMPLE_0)', '$(SIMPLE_1)', '$(SIMPLE_2)', '$(SIMPLE_3)', '$(SIMPLE_4)', '$(SIMPLE_5)'); + $var_tempfiles->Values ('$(SIMPLE_0)', '$(SIMPLE_1)', '$(SIMPLE_2)', '$(SIMPLE_3)', '$(SIMPLE_4)', '$(SIMPLE_5)'); + + $mk->Variable ('INPUT_IMAGES', map {$_->Path} @{$pto->Image}); + + $mk->Comment ('Rules for simple projects with no bracketed stacks'); + + $rule = $mk->Rule ('$(SIMPLE_0)'); + $rule->Prerequisites ('$(PROJECT_FILE)', '$(INPUT_IMAGES)'); + $rule->Command ('$(APSC_SHELL)', '--maxdim', $pix_max, @refine, '--ransac', $ransac, + '--maxmatches', $points, '$(SIMPLE_0_SHELL)', '$(PROJECT_FILE_SHELL)'); + + $rule = $mk->Rule ('$(SIMPLE_1)'); + $rule->Prerequisites ('$(SIMPLE_0)', '$(INPUT_IMAGES)'); + $rule->Command ('$(CELESTE_SHELL)', '-i', '$(SIMPLE_0_SHELL)', + '-o', '$(SIMPLE_1_SHELL)'); + + $rule = $mk->Rule ('$(SIMPLE_2)'); + $rule->Prerequisites ('$(SIMPLE_1)'); + $rule->Command ('$(CPCLEAN_SHELL)', '-o', '$(SIMPLE_2_SHELL)', '$(SIMPLE_1_SHELL)'); + + $rule = $mk->Rule ('$(SIMPLE_3)'); + $rule->Prerequisites ('$(SIMPLE_2)', '$(PROJECT_FILE)'); + $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(SIMPLE_2_SHELL)', '$(SIMPLE_3_SHELL)'); + + $rule = $mk->Rule ('$(SIMPLE_4)'); + $rule->Prerequisites ('$(SIMPLE_3)'); + $rule->Command ('$(AUTOOPTIMISER_SHELL)', '-a', '-l', '-s', '-o', '$(SIMPLE_4_SHELL)', + '$(SIMPLE_3_SHELL)'); + + $rule = $mk->Rule ('$(SIMPLE_5)'); + $rule->Prerequisites ('$(SIMPLE_4)'); + $rule->Command ('$(PTOVARIABLE_SHELL)', '--positions', '--vignetting', '--response', '--exposure', '--view', + '--barrel', '--output', '$(SIMPLE_5_SHELL)', '$(SIMPLE_4_SHELL)'); + + $rule = $mk->Rule ('$(PREFIX).pto'); + $rule->Prerequisites ('$(SIMPLE_5)'); + $rule->Command ('$(VIGOPTIMIZE_SHELL)', '-o', '$(PREFIX_SHELL).pto', '$(SIMPLE_5_SHELL)'); } +$rule = $mk->Rule ('clean'); +$rule->Command ('$(RM_SHELL)', '$(TEMP_FILES_SHELL)'); +$mk->Write ($path_output) if defined $path_output; +$mk->DoIt unless defined $path_output; + exit 0; __END__ @@ -121,11 +179,11 @@ =head1 SYNOPSIS -ptoanchor [options] --output project.pto input.pto +ptoanchor [options] --output project.mk --prefix prefix input.pto Options: - -o | --output name Filename of created panorama project - -c | --clean Delete all temporary files afterwards. + -o | --output file Output Makefile + -p | --prefix Prefix of output project -h | --help Outputs help documentation. =head1 DESCRIPTION @@ -134,6 +192,10 @@ optimises a Hugin project using a .pto project as input. Output is in the form of a .pto project. +If the --output option is given, rules for generating the project are written +to a Makefile, if --output isn't set then these rules will be executed +immediately. + Stacks are passed to align_image_stack for processing, but need to be indicated with 'i-line' 'j' parameters in the input project file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-08 21:46:16
|
Revision: 1179 http://panotools.svn.sourceforge.net/panotools/?rev=1179&view=rev Author: brunopostle Date: 2009-12-08 21:46:07 +0000 (Tue, 08 Dec 2009) Log Message: ----------- Don't level single stacks Modified Paths: -------------- trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-12-07 21:42:16 UTC (rev 1178) +++ trunk/Panotools-Script/bin/ptoanchor 2009-12-08 21:46:07 UTC (rev 1179) @@ -173,9 +173,12 @@ $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(LAYERS_SHELL)', '$(STACKS_SHELL)', '$(MERGED_A_SHELL)'); + my @autooptimiser_args; + @autooptimiser_args = ('-l') if (scalar @{$stacks} > 1); + $rule = $mk->Rule ('$(MERGED_B)'); $rule->Prerequisites ('$(MERGED_A)'); - $rule->Command ('$(AUTOOPTIMISER_SHELL)', '-a', '-l', '-s', + $rule->Command ('$(AUTOOPTIMISER_SHELL)', @autooptimiser_args, '-a', '-s', '-o', '$(MERGED_B_SHELL)', '$(MERGED_A_SHELL)'); $rule = $mk->Rule ('$(PREFIX).pto'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |