From: <bru...@us...> - 2009-04-28 23:07:10
|
Revision: 962 http://panotools.svn.sourceforge.net/panotools/?rev=962&view=rev Author: brunopostle Date: 2009-04-28 23:06:55 +0000 (Tue, 28 Apr 2009) Log Message: ----------- minor doc stuff Modified Paths: -------------- trunk/Panotools-Script/bin/cubic2erect trunk/Panotools-Script/bin/ptovariable Modified: trunk/Panotools-Script/bin/cubic2erect =================================================================== --- trunk/Panotools-Script/bin/cubic2erect 2009-04-28 16:20:08 UTC (rev 961) +++ trunk/Panotools-Script/bin/cubic2erect 2009-04-28 23:06:55 UTC (rev 962) @@ -57,9 +57,9 @@ =head1 DESCRIPTION -`cubic2erect' is a command-line utility program for converting six cube faces +'cubic2erect' is a command-line utility program for converting six cube faces to a single TIFF format equirectangular file suitable for viewing with -`panoglview'. +'panoglview'. Input files must be JPEG, PPM or TIFF format, output is in TIFF format. Modified: trunk/Panotools-Script/bin/ptovariable =================================================================== --- trunk/Panotools-Script/bin/ptovariable 2009-04-28 16:20:08 UTC (rev 961) +++ trunk/Panotools-Script/bin/ptovariable 2009-04-28 23:06:55 UTC (rev 962) @@ -108,6 +108,20 @@ Usually this is a preparation for optimisation with autooptimiser or vig_optimize. +=head1 EXAMPLES + +This performs the equivalent of the 'Positions, View and Barrel (y,p,r,v,b)' +preset on the hugin Optimiser tab: + + ptovariable --positions --view --barrel project.pto + autooptimiser -n -o project.pto project.pto + +This is the equivalent of the 'Low dynamic range' preset on the hugin Exposure +tab: + + ptovariable --vignetting --response --exposure project.pto + vig_optimize -o project.pto project.pto + =head1 LICENSE This program is free software; you can redistribute it and/or This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-11-09 21:34:45
|
Revision: 1143 http://panotools.svn.sourceforge.net/panotools/?rev=1143&view=rev Author: brunopostle Date: 2009-11-09 21:34:35 +0000 (Mon, 09 Nov 2009) Log Message: ----------- Fix tif2svg --jpeg-proxies option (Thomas Modes) Modified Paths: -------------- trunk/Panotools-Script/bin/enblend-svg trunk/Panotools-Script/bin/tif2svg Modified: trunk/Panotools-Script/bin/enblend-svg =================================================================== --- trunk/Panotools-Script/bin/enblend-svg 2009-11-09 21:20:43 UTC (rev 1142) +++ trunk/Panotools-Script/bin/enblend-svg 2009-11-09 21:34:35 UTC (rev 1143) @@ -39,6 +39,8 @@ $xml =~ s/style=".*?"/style="fill:#00FF00"/g; $xml =~ s/xlink:href="(.*?)"//; my $image = $1; + # if image is JPEG then it must be a proxy generated by tif2svg + $image =~ s/\.jpg$/.tif/; push @files, $image; $image =~ s/\.[^.[:space:]]+$/_mask.tif/; Modified: trunk/Panotools-Script/bin/tif2svg =================================================================== --- trunk/Panotools-Script/bin/tif2svg 2009-11-09 21:20:43 UTC (rev 1142) +++ trunk/Panotools-Script/bin/tif2svg 2009-11-09 21:34:35 UTC (rev 1143) @@ -66,7 +66,7 @@ { my $tif = $file; $file =~ s/\.tif/\.jpg/; - system ('convert', $tif, $file); + system ('convert', '-geometry', '25%', $tif, $file); } $file =~ s/.*(\/|\\)//; print SVG qq| This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-11-26 23:30:23
|
Revision: 1167 http://panotools.svn.sourceforge.net/panotools/?rev=1167&view=rev Author: brunopostle Date: 2009-11-26 23:30:08 +0000 (Thu, 26 Nov 2009) Log Message: ----------- unfinished ptoanchor: run apsc for each exposure layer, specify options in .pto file, run autooptimiser and vig_optimize. Modified Paths: -------------- trunk/Panotools-Script/bin/panostart trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/panostart =================================================================== --- trunk/Panotools-Script/bin/panostart 2009-11-25 23:33:35 UTC (rev 1166) +++ trunk/Panotools-Script/bin/panostart 2009-11-26 23:30:08 UTC (rev 1167) @@ -4,7 +4,6 @@ use warnings; use Getopt::Long; use Pod::Usage; -use Panotools::Script; use Panotools::Makefile; use Panotools::Photos; Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-11-25 23:33:35 UTC (rev 1166) +++ trunk/Panotools-Script/bin/ptoanchor 2009-11-26 23:30:08 UTC (rev 1167) @@ -10,98 +10,115 @@ use File::Temp qw/tempdir/; my $path_output; -my $pix_max = 1600; -my $points = 25; -my $noransac = 0; -my $refine = 0; my $clean = 0; my $help = 0; # TODO projects with relative paths -# TODO run autopano-sift-c for each exposure layer # TODO run panomatic too +# TODO write a Makefile instead of system() +# TODO $pto->ExposureLayers() and drop Panotools::Photos +# TODO run vig_optimize conditionally +# TODO $stub needs to be supplied on command-line GetOptions ('o|output=s' => \$path_output, - 's|size=i' => \$pix_max, - 'p|points=i' => \$points, - 'n|noransac' => \$noransac, - 'r|refine' => \$refine, 'c|clean' => \$clean, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; pod2usage (2) unless (defined $path_output and scalar @ARGV); -my $ransac = 1; $ransac = 0 if $noransac; -# extra refine options -my @refine = (); @refine = ('--refine', '--keep-unrefinable', 0) if $refine; +my $stub = tempdir (CLEANUP => $clean); +print STDERR "Temporary files will be saved in $stub\n" unless $clean; -my $tempdir = tempdir (CLEANUP => $clean); -print STDERR "Temporary files will be saved in $tempdir\n" unless $clean; - my $path_input = shift @ARGV; my $pto = new Panotools::Script; $pto->Read ($path_input); +my $pix_max = $pto->Option->{cpgenSize} || 1600; +my $points = $pto->Option->{cpgenNumber} || 25; +my $ransac = 1; +$ransac = 0 if (defined $pto->Option->{cpgenRansac} and $pto->Option->{cpgenRansac} eq 'false'); +my @refine = (); +@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}); -my @stack_numbers = keys %{$tmp}; -if (scalar @stack_numbers > 1) +if (scalar keys %{$tmp} > 1) { - my $longest = shift @{$photos_all->Speeds}; - print STDERR "Longest exposure: $longest\n"; - my $bases; my $stacks; for my $index_photo (0 .. scalar @{$photos_all} -1) { - my $et = $photos_all->[$index_photo]->{exif}->{ExposureTime} || $photos_all->[$index_photo]->{exif}->{ShutterSpeed}; - push @{$bases}, $index_photo if $et eq $longest; + 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 $pto_bases = $pto->Subset (@{$bases}); - my $path_pto_bases = File::Spec->catfile ($tempdir, "bases.pto"); - $pto_bases->Write ($path_pto_bases .'.0'); + my @path_pto; + + for my $speed (@{$photos_all->Speeds}) + { + my @id_images = @{$bases->{$speed}}; + $speed =~ s/[^0-9a-zA-Z]/-/g; + my $path_pto_bases = File::Spec->catfile ($stub, 'bases_'. $speed); - $ransac = 0 if $pto_bases->Image->[0]->{v} > 60; + $ransac = 0 if $pto->Image->[$id_images[0]]->V ($pto) > 60; - system ('autopano-sift-c', '--maxdim', $pix_max, @refine, '--ransac', $ransac, - '--maxmatches', $points, $path_pto_bases .'.1', $path_pto_bases .'.0'); - system ('celeste_standalone', '-i', $path_pto_bases .'.1', '-o', $path_pto_bases .'.2'); - system ('cpclean', '-o', $path_pto_bases .'.3', $path_pto_bases .'.2'); + system ('ptosplit', @id_images, $path_input, "$path_pto_bases.0.pto"); + 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"); - my @path_pto = ($path_input, $path_pto_bases .'.3'); + push @path_pto, "$path_pto_bases.3.pto"; + } for my $stack (@{$stacks}) { + 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 ($tempdir, 'stack_'. join ('_', @{$stack}) .'.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); push @path_pto, $path_pto_stack; } - my $path_pto_merged = File::Spec->catfile ($tempdir, "merged.pto"); - system ('ptomerge', @path_pto, $path_pto_merged); - system ('ptosort', '--image', 'n', $path_pto_merged, $path_output); + 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); } else { - my $path_pto_merged = File::Spec->catfile ($tempdir, "merged.pto"); + $ransac = 0 if $pto->Image->[0]->V ($pto) > 60; + + my $path_pto_simple = File::Spec->catfile ($stub, 'simple'); + system ('autopano-sift-c', '--maxdim', $pix_max, @refine, '--ransac', $ransac, - '--maxmatches', $points, $path_pto_merged .'.0', $path_input); - system ('celeste_standalone', '-i', $path_pto_merged .'.0', '-o', $path_pto_merged .'.1'); - system ('ptomerge', $path_input, $path_pto_merged .'.1', $path_pto_merged); - system ('ptosort', '--image', 'n', $path_pto_merged, $path_output); + '--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', + '-o', "$path_pto_simple.5.pto", "$path_pto_simple.4.pto"); + system ('vig_optimize', '-o', $path_output, "$path_pto_simple.5.pto"); } + exit 0; __END__ @@ -116,24 +133,26 @@ Options: -o | --output name Filename of created panorama project - -s | --size number Downsize images until width and height is - smaller than number, default 1600 - -p | --points number Number of generated control points between, - each pair, default: 25 - -n | --noransac No ransac detection, useful for fisheye images - -r | --refine Refine the found control points using the - original images, delete unrefinable. -c | --clean Delete all temporary files afterwards. -h | --help Outputs help documentation. =head1 DESCRIPTION -B<ptoanchor> is a wrapper around autopano-sift-c and align_image_stack that -takes a .pto project and adds control points. +B<ptoanchor> is a wrapper various tools that generates control points and +optimises a Hugin project using a .pto project as input. Output is in the form +of a .pto project. Stacks are passed to align_image_stack for processing, but need to be indicated with 'i-line' 'j' parameters in the input project file. +Control point generator parameters are set via Option lines in the input +project: + + #hugin_cpgenSize 1500 + #hugin_cpgenNumber 25 + #hugin_cpgenRansac true + #hugin_cpgenRefine false + =head1 LICENSE This program is free software; you can redistribute it and/or This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-04 23:16:13
|
Revision: 1176 http://panotools.svn.sourceforge.net/panotools/?rev=1176&view=rev Author: brunopostle Date: 2009-12-04 23:16:02 +0000 (Fri, 04 Dec 2009) Log Message: ----------- Rewrite of match-n-shift to simply write a control-point-less project file suitable as input for ptoanchor. If --align is specified then it runs ptoanchor for backward compatibility. Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift trunk/Panotools-Script/bin/pto2mk2 Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2009-12-04 21:52:35 UTC (rev 1175) +++ trunk/Panotools-Script/bin/match-n-shift 2009-12-04 23:16:02 UTC (rev 1176) @@ -2,13 +2,10 @@ use strict; use warnings; -use File::Spec; use Getopt::Long; use Pod::Usage; -use Image::Size; use Panotools::Script; use Panotools::Photos; -use File::Temp qw/tempdir/; my $path_oto; my $pix_max = 1600; @@ -42,139 +39,100 @@ pod2usage (-verbose => 2) if $help; pod2usage (2) unless (defined $path_oto and scalar @ARGV > 1); -my @paths_input = map (File::Spec->rel2abs ($_), @ARGV); +my $photos_all = new Panotools::Photos (@ARGV); -my $photos_all = new Panotools::Photos (@paths_input); - -$deg_fov = ($photos_all->FOV || 50) unless defined $deg_fov; +$deg_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 $oto = new Panotools::Script; -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 -$dostacks = $photos_all->Bracketed if $dostacks; - -my $index_stack = 0; -my @path_pto_stacks; -if ($dostacks) +my $sum_Eev; +for my $id (0 .. scalar @ARGV -1) { - my $longest = shift @{$photos_all->Speeds}; - print STDERR "Longest exposure: $longest\n"; + my $image = new Panotools::Script::Line::Image; + my $photo = $photos_all->[$id]; + %{$image} = ( + n => '"'. $photo->{path} .'"', + w => $photo->{exif}->{ImageWidth}, + h => $photo->{exif}->{ImageHeight}, + r => $photos_all->Rotation ($id), p => 0.0, y => 0.0, + a => 0.0, b => 0.0, c => 0.0, d => 0.0, e => 0.0, + Ra => 0, Rb => 0, Rc => 0, Rd => 0, Re => 0, + Va => 1, Vb => 0, Vc => 0, Vd => 0, Vx => 0, Vy => 0, + f => $projection, + Eev => $photos_all->Eev ($id), + v => ($photos_all->FOV ($id) || $deg_fov) + ); + $image->{n} = '"'. $image->Path .'"'; + $image->{S} = $crop_s if defined $crop_s; + $sum_Eev += $photos_all->Eev ($id); - my $bases = new Panotools::Photos; - for my $photo (@{$photos_all}) + if ($photos_all->Bracketed) { - my $et = $photo->{exif}->{ExposureTime} || $photo->{exif}->{ShutterSpeed}; - push @{$bases}, $photo if $et eq $longest; + $image->{j} = int ($id / scalar @{$photos_all->Speeds}); } + push @{$oto->Image}, $image; - my @photos = $photos_all->Paths; - my $stacks; - while (@photos) - { - my @stack; - push @stack, shift @photos for (1 .. scalar @{$photos_all->Speeds}); - push @{$stacks}, [@stack]; - } + my $imagemetadata = new Panotools::Script::Line::ImageMetadata; + $imagemetadata->{cropFactor} = $photo->{exif}->{ScaleFactor35efl} || 1; + $imagemetadata->{autoCenterCrop} = 0 if defined $crop_s; + push @{$oto->ImageMetadata}, $imagemetadata; - for my $stack (@{$stacks}) + unless ($id == 0) { - 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', $path_pto_stack, @{$stack}); - push @path_pto_stacks, $path_pto_stack; - $index_stack++; + $oto->Variable->{$id}->{r} = 1; + $oto->Variable->{$id}->{p} = 1; + $oto->Variable->{$id}->{y} = 1; } - - @paths_input = $bases->Paths; } +#TODO distribute yaw and pitch +#TODO setup blended then fused -my $index = 0; +$oto->Panorama->{E} = sprintf ('%.3f', $sum_Eev / scalar @{$photos_all}); -system ('autopano-sift-c', '--maxdim', $pix_max, @refine, '--ransac', $ransac, - '--projection', "$projection,$deg_fov", '--maxmatches', $points, $path_oto, @paths_input); +$oto->UnifyLenses; -# Read in the generated project file -my $oto = new Panotools::Script; -$oto->Read ($path_oto); +$oto->Option->{cpgenSize} = $pix_max; +$oto->Option->{cpgenNumber} = $points; +$oto->Option->{cpgenRansac} = 'true'; +$oto->Option->{cpgenRansac} = 'false' if $noransac; +$oto->Option->{cpgenRefine} = 'false'; +$oto->Option->{cpgenRefine} = 'true' if $refine; -# merge stacks -if (scalar @path_pto_stacks) +if ($photos_all->Bracketed) { - my $tempfile = File::Spec->catfile ($tempdir, 'bases.oto'); - $oto->Write ($tempfile); - - my @ptos = ($tempfile, @path_pto_stacks); - - my $temp_merged = File::Spec->catfile ($tempdir, 'merged.oto'); - system ('ptomerge', @ptos, $temp_merged); - my $temp_sorted = File::Spec->catfile ($tempdir, 'sorted.oto'); - system ('ptosort', '--image', 'n', $temp_merged, $temp_sorted); - $oto->Read ($temp_sorted); $oto->Option->{outputLDRBlended} = 'false'; $oto->Option->{outputLDRExposureBlended} = 'true'; } - -$index = 0; -for my $image (@{$oto->Image}) +else { - ($image->{w}, $image->{h}) = imgsize (File::Spec->rel2abs ($ARGV[$index])); - $image->{S} = $crop_s if defined $crop_s; - # link all lens parameters - $image->Set (v => '=0', d => '=0', e => '=0', - a => '=0', b => '=0', c => '=0', g => '=0', t => '=0', - Ra => '=0', Rb => '=0', Rc => '=0', Rd => '=0', Re => '=0', - Va => '=0', Vb => '=0', Vc => '=0', Vd => '=0', Vx => '=0', Vy => '=0') - if ($index > 0); - $image->Set (v => $deg_fov, d => 0, e => 0, - a => 0, b => 0, c => 0, g => 0, t => 0, - Ra => 0, Rb => 0, Rc => 0, Rd => 0, Re => 0, - Va => 1, Vb => 0, Vc => 0, Vd => 0, Vx => 0, Vy => 0) - if ($index == 0); - $image->Set (f => $projection); - $index++; + $oto->Option->{outputLDRBlended} = 'true'; + $oto->Option->{outputLDRExposureBlended} = 'false'; } -for my $index_meta (0 .. scalar @{$oto->Image} -1) +if ($align) { - $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; + my $path_nopoints = $path_oto; + $path_nopoints =~ s/\.[[:alnum:]]+$//; + $path_nopoints .= '_nopoints.pto'; + $oto->Write ($path_nopoints); + system ('ptoanchor', '--prefix', $path_oto, $path_nopoints); } - -$oto->Write ($path_oto); - -if ($align) +else { - my $tempfile = File::Spec->catfile ($tempdir, 'align.oto'); - $oto->Write ($tempfile); - system ('autooptimiser', '-a', '-l', '-s', '-o', $tempfile, $tempfile); - system ('ptoclean', '-o', $tempfile, $tempfile); - system ('autooptimiser', '-n', '-l', '-o', $path_oto, $tempfile); - unless ($dostacks) - { - system ('ptovariable', '--vignetting', '--response', '--exposure', $path_oto); - system ('vig_optimize', '-o', $path_oto, $path_oto); - } + $oto->Write ($path_oto); } + exit 0; __END__ =head1 NAME -match-n-shift - wrapper to run autopano-sift on stereographic versions of photos +match-n-shift - generate a Hugin .pto project from a list of photos =head1 SYNOPSIS @@ -189,27 +147,23 @@ -n | --noransac No ransac detection, useful for fisheye images -r | --refine Refine the found control points using the original images, delete unrefinable. - -b | --stacks Use align_image_stack with bracketed stacks -f | --projection Panotools style input projection number. Use - 0 for rectilinear, 2 for circular fisheye and - 3 for full-frame fisheye images. - -v | --fov Horizontal field of view in degrees + 0 for rectilinear (default), 2 for circular fisheye and + 3 for full-frame fisheye images. Note, this has to be + specified for fisheye lenses as this can't be determined + from EXIF metadata + -v | --fov Horizontal field of view in degrees, this value is + only used if FoV can't be determined from EXIF + metadata, defaults to 50 -k | --selection Crop selection boundary, eg -459,2459,-57,2861 - -a | --align Attempt to align images. - -c | --clean Delete all temporary files afterwards. + -a | --align Generate control points (default no). -h | --help Outputs help documentation. =head1 DESCRIPTION -B<match-n-shift> takes a list of image files and creates a hugin -compatible project file containing control points linking the images together. +B<match-n-shift> takes a list of image files and creates a hugin compatible +project file optionally containing control points linking the images together. -Additionally if the --stacks option is used then align_image_stack is used to -assemble bracketed sequences within the set, usually with less error. For this -to work photos need to be taken with the camera's auto-bracketing feature, e.g. -take three different exposures, move camera, take the same three exposures, -move camera etc... - =head1 LICENSE This program is free software; you can redistribute it and/or Modified: trunk/Panotools-Script/bin/pto2mk2 =================================================================== --- trunk/Panotools-Script/bin/pto2mk2 2009-12-04 21:52:35 UTC (rev 1175) +++ trunk/Panotools-Script/bin/pto2mk2 2009-12-04 23:16:02 UTC (rev 1176) @@ -344,6 +344,7 @@ $rule = $mk->Rule ($path_prefix .'_exposure_layers_'. sprintf("%04d", $_) .'.tif'); $rule->Prerequisites ($pto->Image->[$_]->Path ($path_pto)); $rule->Prerequisites ('$(PROJECT_FILE)'); + #FIXME How does this relate to 'p' line E value? my $exposure = $pto->Image->[$_]->{Eev} || 0; $rule->Command (qw/$(NONA_SHELL) $(NONA_OPTS_SHELL) $(NONA_LDR_REMAPPED_COMP_SHELL) -r ldr -e/, $exposure, qw/-m TIFF_m -o $(LDR_EXPOSURE_REMAPPED_PREFIX_SHELL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-17 22:04:07
|
Revision: 1186 http://panotools.svn.sourceforge.net/panotools/?rev=1186&view=rev Author: brunopostle Date: 2009-12-17 22:04:01 +0000 (Thu, 17 Dec 2009) Log Message: ----------- Make use of Connections() and ConnectedGroups() methods Modified Paths: -------------- trunk/Panotools-Script/bin/ptochain trunk/Panotools-Script/bin/ptoinfo Modified: trunk/Panotools-Script/bin/ptochain =================================================================== --- trunk/Panotools-Script/bin/ptochain 2009-12-17 20:41:05 UTC (rev 1185) +++ trunk/Panotools-Script/bin/ptochain 2009-12-17 22:04:01 UTC (rev 1186) @@ -75,6 +75,7 @@ $mk->Comment ('Rules to match points between adjacent images'); for my $id_image (0 .. scalar @{$pto->Image} -2) { + next if $pto->Connections ($id_image, $id_image +1); my $path_a = $pto->Image->[$id_image]->Path ($path_input); my $path_b = $pto->Image->[$id_image +1]->Path ($path_input); # strip any suffixes @@ -132,9 +133,14 @@ =head1 DESCRIPTION -B<ptochain> is a wrapper various tools that generates control point. Output is -in the form of a .pto project. +B<ptochain> is a wrapper around various tools that generates control points. +Output is in the form of a .pto project. +Consecutive photos in the project are selected for feature matching and +connected into one or more chains of connected images. If points already exist +between photos then matching will be skipped i.e. this tool is a noop if a full +set of control points already exist in the 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. Modified: trunk/Panotools-Script/bin/ptoinfo =================================================================== --- trunk/Panotools-Script/bin/ptoinfo 2009-12-17 20:41:05 UTC (rev 1185) +++ trunk/Panotools-Script/bin/ptoinfo 2009-12-17 22:04:01 UTC (rev 1186) @@ -31,6 +31,13 @@ print STDOUT " Layer $index: ". join (', ', @{$pto->ExposureLayers->[$index]}) ."\n"; } + my $connected_groups = $pto->ConnectedGroups; + print STDOUT ' Number of connected group(s): '. scalar (@{$connected_groups}) ."\n"; + for my $index (0 .. @{$connected_groups} -1) + { + print STDOUT " Group $index: ". join (', ', @{$connected_groups->[$index]}) ."\n"; + } + # summarise control points my $results = {}; for my $control (@{$pto->Control}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-18 23:57:54
|
Revision: 1189 http://panotools.svn.sourceforge.net/panotools/?rev=1189&view=rev Author: brunopostle Date: 2009-12-18 23:57:46 +0000 (Fri, 18 Dec 2009) Log Message: ----------- Change CLI of ptoanchor, ptochain, ptobind & ptofill to work with Hugin GUI Modified Paths: -------------- trunk/Panotools-Script/bin/match-n-shift trunk/Panotools-Script/bin/panostart trunk/Panotools-Script/bin/ptoanchor trunk/Panotools-Script/bin/ptobind trunk/Panotools-Script/bin/ptochain trunk/Panotools-Script/bin/ptofill Modified: trunk/Panotools-Script/bin/match-n-shift =================================================================== --- trunk/Panotools-Script/bin/match-n-shift 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/match-n-shift 2009-12-18 23:57:46 UTC (rev 1189) @@ -130,7 +130,7 @@ $path_nopoints =~ s/\.[[:alnum:]]+$//; $path_nopoints .= '.pointless.pto'; $oto->Write ($path_nopoints); - system ('ptoanchor', '--prefix', $path_oto, $path_nopoints); + system ('ptoanchor', '--output', $path_oto, $path_nopoints); } else { Modified: trunk/Panotools-Script/bin/panostart =================================================================== --- trunk/Panotools-Script/bin/panostart 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/panostart 2009-12-18 23:57:46 UTC (rev 1189) @@ -120,8 +120,8 @@ $rule = $mk->Rule; $rule->Targets ("$stub.pointless.pto.mk"); $rule->Prerequisites ("$stub.pointless.pto"); - $rule->Command ('$(PTOANCHOR_SHELL)', '--output', "$stub.pointless.pto.mk", - '--prefix', $stub, "$stub.pointless.pto"); + $rule->Command ('$(PTOANCHOR_SHELL)', '--makefile', "$stub.pointless.pto.mk", + '--output', "$stub.pto", "$stub.pointless.pto"); $mk->Comment ('Create a finished .pto project'); $rule = $mk->Rule; Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/ptoanchor 2009-12-18 23:57:46 UTC (rev 1189) @@ -7,21 +7,22 @@ use Panotools::Makefile; use Panotools::Script; -my $path_prefix; my $path_output; +my $path_mk; my $help = 0; # TODO run panomatic too # TODO run vig_optimize conditionally # TODO vig_optimize celeste_standalone cpclean options -GetOptions ('p|prefix=s' => \$path_prefix, - 'o|output=s' => \$path_output, +GetOptions ('o|output=s' => \$path_output, + 'm|makefile=s' => \$path_mk, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_prefix and scalar @ARGV); +pod2usage (2) unless (defined $path_output and scalar @ARGV); +my $path_prefix = $path_output; $path_prefix =~ s/\.[[:alnum:]]+$//; my $path_input = shift @ARGV; @@ -42,9 +43,10 @@ $mk->Comment ('Input project file and prefix for output'); $mk->Variable ('PROJECT_FILE', $path_input); $mk->Variable ('PREFIX', $path_prefix); +$mk->Variable ('PTO_OUT', $path_output); my $rule = $mk->Rule ('all'); -$rule->Prerequisites ('$(PREFIX).pto'); +$rule->Prerequisites ('$(PTO_OUT)'); $mk->Comment ("Files we don't need afterwards"); my $var_tempfiles = $mk->Variable ('TEMP_FILES'); @@ -179,10 +181,10 @@ $rule->Command ('$(AUTOOPTIMISER_SHELL)', @autooptimiser_args, '-a', '-s', '-o', '$(MERGED_B_SHELL)', '$(MERGED_A_SHELL)'); - $rule = $mk->Rule ('$(PREFIX).pto'); + $rule = $mk->Rule ('$(PTO_OUT)'); $rule->Prerequisites ('$(MERGED_B)'); $rule->Command ('$(PTOVARIABLE_SHELL)', '--positions', '--view', '--barrel', - '--output', '$(PREFIX_SHELL).pto', '$(MERGED_B_SHELL)'); + '--output', '$(PTO_OUT_SHELL)', '$(MERGED_B_SHELL)'); } else { @@ -231,16 +233,16 @@ $rule->Command ('$(PTOVARIABLE_SHELL)', '--positions', '--vignetting', '--response', '--exposure', '--view', '--barrel', '--output', '$(SIMPLE_F_SHELL)', '$(SIMPLE_E_SHELL)'); - $rule = $mk->Rule ('$(PREFIX).pto'); + $rule = $mk->Rule ('$(PTO_OUT)'); $rule->Prerequisites ('$(SIMPLE_F)'); - $rule->Command ('$(VIGOPTIMIZE_SHELL)', '-o', '$(PREFIX_SHELL).pto', '$(SIMPLE_F_SHELL)'); + $rule->Command ('$(VIGOPTIMIZE_SHELL)', '-o', '$(PTO_OUT_SHELL)', '$(SIMPLE_F_SHELL)'); } my $rule_secondary = $mk->Rule ('.SECONDARY'); $rule_secondary->Prerequisites ('$(TEMP_FILES)'); -$mk->Write ($path_output) if defined $path_output; -$mk->DoIt ('all', 'clean') unless defined $path_output; +$mk->Write ($path_mk) if defined $path_mk; +$mk->DoIt ('--always-make', 'all', 'clean') unless defined $path_mk; exit 0; @@ -252,11 +254,11 @@ =head1 SYNOPSIS -ptoanchor [options] --output project.mk --prefix prefix input.pto +ptoanchor [options] --output output.pto input.pto Options: - -o | --output file Output Makefile - -p | --prefix Prefix of output project + -m | --makefile file Output Makefile + -o | --output file Output project -h | --help Outputs help documentation. =head1 DESCRIPTION @@ -265,8 +267,8 @@ 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 +If the --makefile option is given, rules for generating the project are written +to a Makefile, if --makefile isn't set then these rules will be executed immediately. Stacks are passed to align_image_stack for processing, but need to be indicated Modified: trunk/Panotools-Script/bin/ptobind =================================================================== --- trunk/Panotools-Script/bin/ptobind 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/ptobind 2009-12-18 23:57:46 UTC (rev 1189) @@ -7,17 +7,18 @@ use Panotools::Makefile; use Panotools::Script; -my $path_prefix; my $path_output; +my $path_mk; my $help = 0; -GetOptions ('p|prefix=s' => \$path_prefix, - 'o|output=s' => \$path_output, +GetOptions ('o|output=s' => \$path_output, + 'm|makefile=s' => \$path_mk, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_prefix and scalar @ARGV); +pod2usage (2) unless (defined $path_output and scalar @ARGV); +my $path_prefix = $path_output; $path_prefix =~ s/\.[[:alnum:]]+$//; my $path_input = shift @ARGV; @@ -33,9 +34,10 @@ $mk->Comment ('Input project file and prefix for output'); $mk->Variable ('PROJECT_FILE', $path_input); $mk->Variable ('PREFIX', $path_prefix); +$mk->Variable ('PTO_OUT', $path_output); my $rule = $mk->Rule ('all'); -$rule->Prerequisites ('$(PREFIX).pto'); +$rule->Prerequisites ('$(PTO_OUT)'); $rule = $mk->Rule ('.PHONY'); $rule->Prerequisites ('all', 'clean'); @@ -89,10 +91,10 @@ $var_tempfiles->Values ('$(PREFIX).ends.b.pto'); -$rule = $mk->Rule ('$(PREFIX).pto'); +$rule = $mk->Rule ('$(PTO_OUT)'); $rule->Prerequisites ('$(PROJECT_FILE)', '$(PREFIX).ends.b.pto'); $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(PREFIX_SHELL).ends.b.pto', - '$(PREFIX_SHELL).pto'); + '$(PTO_OUT_SHELL)'); $rule = $mk->Rule ('clean'); $rule->Command ('$(RM_SHELL)', '$(TEMP_FILES_SHELL)'); @@ -100,8 +102,8 @@ my $rule_secondary = $mk->Rule ('.SECONDARY'); $rule_secondary->Prerequisites ('$(TEMP_FILES)'); -$mk->Write ($path_output) if defined $path_output; -$mk->DoIt ('all', 'clean') unless defined $path_output; +$mk->Write ($path_mk) if defined $path_mk; +$mk->DoIt ('--always-make', 'all', 'clean') unless defined $path_mk; exit 0; @@ -113,11 +115,11 @@ =head1 SYNOPSIS -ptobind [options] --output project.mk --prefix prefix input.pto +ptobind [options] --output output.pto input.pto Options: - -o | --output file Output Makefile - -p | --prefix Prefix of output project + -m | --makefile file Output Makefile + -o | --output file Output project -h | --help Outputs help documentation. =head1 DESCRIPTION @@ -135,8 +137,8 @@ This tool is intended to use the output and intermediate .key files created by ptochain. -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 +If the --makefile option is given, rules for generating the project are written +to a Makefile, if --makefile isn't set then these rules will be executed immediately. Control point generator parameters are set via Option lines in the input Modified: trunk/Panotools-Script/bin/ptochain =================================================================== --- trunk/Panotools-Script/bin/ptochain 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/ptochain 2009-12-18 23:57:46 UTC (rev 1189) @@ -7,17 +7,18 @@ use Panotools::Makefile; use Panotools::Script; -my $path_prefix; my $path_output; +my $path_mk; my $help = 0; -GetOptions ('p|prefix=s' => \$path_prefix, - 'o|output=s' => \$path_output, +GetOptions ('o|output=s' => \$path_output, + 'm|makefile=s' => \$path_mk, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_prefix and scalar @ARGV); +pod2usage (2) unless (defined $path_output and scalar @ARGV); +my $path_prefix = $path_output; $path_prefix =~ s/\.[[:alnum:]]+$//; my $path_input = shift @ARGV; @@ -34,9 +35,10 @@ $mk->Comment ('Input project file and prefix for output'); $mk->Variable ('PROJECT_FILE', $path_input); $mk->Variable ('PREFIX', $path_prefix); +$mk->Variable ('PTO_OUT', $path_output); my $rule = $mk->Rule ('all'); -$rule->Prerequisites ('$(PREFIX).pto'); +$rule->Prerequisites ('$(PTO_OUT)'); $mk->Comment ("Files we don't need afterwards"); my $var_tempfiles = $mk->Variable ('TEMP_FILES'); @@ -103,16 +105,16 @@ $var_tempfiles->Values ($stub .'.pto'); } -$rule = $mk->Rule ('$(PREFIX).pto'); +$rule = $mk->Rule ('$(PTO_OUT)'); $rule->Prerequisites ('$(PROJECT_FILE)', '$(LINK_PTOS)'); $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(LINK_PTOS_SHELL)', - '$(PREFIX_SHELL).pto'); + '$(PTO_OUT_SHELL)'); my $rule_secondary = $mk->Rule ('.SECONDARY'); $rule_secondary->Prerequisites ('$(TEMP_FILES)'); -$mk->Write ($path_output) if defined $path_output; -$mk->DoIt ('all', 'clean') unless defined $path_output; +$mk->Write ($path_mk) if defined $path_mk; +$mk->DoIt ('--always-make', 'all', 'clean') unless defined $path_mk; exit 0; @@ -124,11 +126,11 @@ =head1 SYNOPSIS -ptochain [options] --output project.mk --prefix prefix input.pto +ptochain [options] --output output.pto input.pto Options: - -o | --output file Output Makefile - -p | --prefix Prefix of output project + -m | --makefile file Output Makefile + -o | --output file Output project -h | --help Outputs help documentation. =head1 DESCRIPTION @@ -141,8 +143,8 @@ between photos then matching will be skipped i.e. this tool is a noop if a full set of control points already exist in the 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 +If the --makefile option is given, rules for generating the project are written +to a Makefile, if --makefile isn't set then these rules will be executed immediately. Control point generator parameters are set via Option lines in the input Modified: trunk/Panotools-Script/bin/ptofill =================================================================== --- trunk/Panotools-Script/bin/ptofill 2009-12-17 22:07:33 UTC (rev 1188) +++ trunk/Panotools-Script/bin/ptofill 2009-12-18 23:57:46 UTC (rev 1189) @@ -7,19 +7,20 @@ use Panotools::Makefile; use Panotools::Script; -my $path_prefix; my $path_output; +my $path_mk; my $factor = 1.25; my $help = 0; -GetOptions ('p|prefix=s' => \$path_prefix, - 'o|output=s' => \$path_output, +GetOptions ('o|output=s' => \$path_output, + 'm|makefile=s' => \$path_mk, 'f|factor=s' => \$factor, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; -pod2usage (2) unless (defined $path_prefix and scalar @ARGV); +pod2usage (2) unless (defined $path_output and scalar @ARGV); +my $path_prefix = $path_output; $path_prefix =~ s/\.[[:alnum:]]+$//; my $path_input = shift @ARGV; @@ -36,9 +37,10 @@ $mk->Comment ('Input project file and prefix for output'); $mk->Variable ('PROJECT_FILE', $path_input); $mk->Variable ('PREFIX', $path_prefix); +$mk->Variable ('PTO_OUT', $path_output); my $rule = $mk->Rule ('all'); -$rule->Prerequisites ('$(PREFIX).pto'); +$rule->Prerequisites ('$(PTO_OUT)'); $mk->Comment ("Files we don't need afterwards"); my $var_tempfiles = $mk->Variable ('TEMP_FILES'); @@ -67,8 +69,6 @@ $rule->Prerequisites ('%'); $rule->Command ('$(GENKEYS_SHELL)', '$<', '$@', $pix_max); -#$var_tempfiles->Values (map {$_->Path ($path_input) .'.key'} @{$pto->Image}); - my $var_links = $mk->Variable ('LINK_PTOS'); my $keys = {}; @@ -122,16 +122,16 @@ $var_tempfiles->Values (sort keys %{$keys}); -$rule = $mk->Rule ('$(PREFIX).pto'); +$rule = $mk->Rule ('$(PTO_OUT)'); $rule->Prerequisites ('$(PROJECT_FILE)', '$(LINK_PTOS)'); $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(LINK_PTOS_SHELL)', - '$(PREFIX_SHELL).pto'); + '$(PTO_OUT_SHELL)'); my $rule_secondary = $mk->Rule ('.SECONDARY'); $rule_secondary->Prerequisites ('$(TEMP_FILES)'); -$mk->Write ($path_output) if defined $path_output; -$mk->DoIt ('all', 'clean') unless defined $path_output; +$mk->Write ($path_mk) if defined $path_mk; +$mk->DoIt ('--always-make', 'all', 'clean') unless defined $path_mk; exit 0; @@ -143,11 +143,11 @@ =head1 SYNOPSIS -ptofill [options] --output project.mk --prefix prefix input.pto +ptofill [options] --output output.pto input.pto Options: - -o | --output file Output Makefile - -p | --prefix Prefix of output project + -m | --makefile file Output Makefile + -o | --output file Output project -f | --factor Distance factor to search for overlaps (default=1.25) -h | --help Outputs help documentation. @@ -160,8 +160,8 @@ determine if photos likely overlap, if points already exist between photos then matching will be skipped. -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 +If the --makefile option is given, rules for generating the project are written +to a Makefile, if --makefile isn't set then these rules will be executed immediately. Control point generator parameters are set via Option lines in the input This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-19 00:03:54
|
Revision: 1190 http://panotools.svn.sourceforge.net/panotools/?rev=1190&view=rev Author: brunopostle Date: 2009-12-19 00:03:42 +0000 (Sat, 19 Dec 2009) Log Message: ----------- Set executable property Property Changed: ---------------- trunk/Panotools-Script/bin/pto2mk2 trunk/Panotools-Script/bin/ptobind trunk/Panotools-Script/bin/ptochain trunk/Panotools-Script/bin/ptofill Property changes on: trunk/Panotools-Script/bin/pto2mk2 ___________________________________________________________________ Added: svn:executable + * Property changes on: trunk/Panotools-Script/bin/ptobind ___________________________________________________________________ Added: svn:executable + * Property changes on: trunk/Panotools-Script/bin/ptochain ___________________________________________________________________ Added: svn:executable + * Property changes on: trunk/Panotools-Script/bin/ptofill ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-12-24 00:24:03
|
Revision: 1196 http://panotools.svn.sourceforge.net/panotools/?rev=1196&view=rev Author: brunopostle Date: 2009-12-24 00:22:07 +0000 (Thu, 24 Dec 2009) Log Message: ----------- Be consistent about _SHELL variables Modified Paths: -------------- trunk/Panotools-Script/bin/gigastart trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/gigastart =================================================================== --- trunk/Panotools-Script/bin/gigastart 2009-12-22 00:15:42 UTC (rev 1195) +++ trunk/Panotools-Script/bin/gigastart 2009-12-24 00:22:07 UTC (rev 1196) @@ -67,7 +67,7 @@ $rule = $mk->Rule ('$(PREFIX).pointless.pto'); $rule->Prerequisites ('$(INPUT_IMAGES)'); -my @command = ('$(MATCHNSHIFT_SHELL)', '--output', '$(PREFIX).pointless.pto', '--noransac'); +my @command = ('$(MATCHNSHIFT_SHELL)', '--output', '$(PREFIX_SHELL).pointless.pto', '--noransac'); push @command, ('--fov', $deg_fov) if defined $deg_fov; push @command, ('$(INPUT_IMAGES_SHELL)'); $rule->Command (@command); @@ -75,46 +75,46 @@ $mk->Comment ('Add points between consecutive photos'); $rule = $mk->Rule ('$(PREFIX).chained.mk', '$(PREFIX).chained.pto'); $rule->Prerequisites ('$(INPUT_IMAGES)', '$(PREFIX).pointless.pto'); -$rule->Command ('$(PTOCHAIN_SHELL)', '--makefile', '$(PREFIX).chained.mk', - '--output', '$(PREFIX).chained.pto', '$(PREFIX).pointless.pto'); -$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX).chained.mk', '$(PREFIX).chained.pto'); +$rule->Command ('$(PTOCHAIN_SHELL)', '--makefile', '$(PREFIX_SHELL).chained.mk', + '--output', '$(PREFIX_SHELL).chained.pto', '$(PREFIX_SHELL).pointless.pto'); +$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX_SHELL).chained.mk', '$(PREFIX_SHELL).chained.pto'); $mk->Comment ('Try and connect ends of chains'); $rule = $mk->Rule ('$(PREFIX).bound.mk', '$(PREFIX).bound.pto'); $rule->Prerequisites ('$(INPUT_IMAGES)', '$(PREFIX).chained.pto'); -$rule->Command ('$(PTOBIND_SHELL)', '--makefile', '$(PREFIX).bound.mk', - '--output', '$(PREFIX).bound.pto', '$(PREFIX).chained.pto'); -$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX).bound.mk', '$(PREFIX).bound.pto'); -$rule->Command ('$(PTOVARIABLE_SHELL)', '--pitch', '--yaw', '$(PREFIX).bound.pto'); +$rule->Command ('$(PTOBIND_SHELL)', '--makefile', '$(PREFIX_SHELL).bound.mk', + '--output', '$(PREFIX_SHELL).bound.pto', '$(PREFIX_SHELL).chained.pto'); +$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX_SHELL).bound.mk', '$(PREFIX_SHELL).bound.pto'); +$rule->Command ('$(PTOVARIABLE_SHELL)', '--pitch', '--yaw', '$(PREFIX_SHELL).bound.pto'); $mk->Comment ('Optimise approximate positions'); $rule = $mk->Rule ('$(PREFIX).placed.1.pto', '$(PREFIX).placed.pto'); $rule->Prerequisites ('$(PREFIX).bound.pto', '$(PREFIX).pointless.pto'); -$rule->Command ('$(AUTOOPTIMISER_SHELL)', '-n', '-l', '-o', '$(PREFIX).placed.1.pto', '$(PREFIX).bound.pto'); -$rule->Command ('$(PTOMERGE_SHELL)', '$(PREFIX).placed.1.pto', '$(PREFIX).pointless.pto', '$(PREFIX).placed.pto'); +$rule->Command ('$(AUTOOPTIMISER_SHELL)', '-n', '-l', '-o', '$(PREFIX_SHELL).placed.1.pto', '$(PREFIX_SHELL).bound.pto'); +$rule->Command ('$(PTOMERGE_SHELL)', '$(PREFIX_SHELL).placed.1.pto', '$(PREFIX_SHELL).pointless.pto', '$(PREFIX_SHELL).placed.pto'); $mk->Comment ('Add points to overlapping pairs'); $rule = $mk->Rule ('$(PREFIX).filled.mk', '$(PREFIX).filled.pto'); $rule->Prerequisites ('$(INPUT_IMAGES)', '$(PREFIX).placed.pto'); -$rule->Command ('$(PTOFILL_SHELL)', '--makefile', '$(PREFIX).filled.mk', '-f', '1.0', - '--output', '$(PREFIX).filled.pto', '$(PREFIX).placed.pto'); -$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX).filled.mk', '$(PREFIX).filled.pto'); +$rule->Command ('$(PTOFILL_SHELL)', '--makefile', '$(PREFIX_SHELL).filled.mk', '-f', '1.0', + '--output', '$(PREFIX_SHELL).filled.pto', '$(PREFIX_SHELL).placed.pto'); +$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX_SHELL).filled.mk', '$(PREFIX_SHELL).filled.pto'); $mk->Comment ('Clean unlikely control points'); $rule = $mk->Rule ('$(PREFIX).cleaned.pto'); $rule->Prerequisites ('$(PREFIX).filled.pto'); -$rule->Command ('$(CPCLEAN_SHELL)', '-o', '$(PREFIX).cleaned.pto', '$(PREFIX).filled.pto'); +$rule->Command ('$(CPCLEAN_SHELL)', '-o', '$(PREFIX_SHELL).cleaned.pto', '$(PREFIX_SHELL).filled.pto'); $mk->Comment ('Optimise final positions'); $rule = $mk->Rule ('$(PREFIX).pto'); $rule->Prerequisites ('$(PREFIX).cleaned.pto'); -$rule->Command ('$(AUTOOPTIMISER_SHELL)', '-a', '-l', '-s', '-o', '$(PREFIX).pto', '$(PREFIX).cleaned.pto'); +$rule->Command ('$(AUTOOPTIMISER_SHELL)', '-a', '-l', '-s', '-o', '$(PREFIX_SHELL).pto', '$(PREFIX_SHELL).cleaned.pto'); $mk->Comment ('Normal seam blended output'); $rule = $mk->Rule ('$(PREFIX).pto.mk', '$(PREFIX).tif'); $rule->Prerequisites ('$(PREFIX).pto', '$(INPUT_IMAGES)'); -$rule->Command ('$(PTO2MK_SHELL)', '-o', '$(PREFIX).pto.mk', '-p', '$(PREFIX)', '$(PREFIX).pto'); -$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX).pto.mk', '$(PREFIX).tif', '$(MAKE_EXTRA_ARGS_SHELL)'); +$rule->Command ('$(PTO2MK_SHELL)', '-o', '$(PREFIX_SHELL).pto.mk', '-p', '$(PREFIX_SHELL)', '$(PREFIX_SHELL).pto'); +$rule->Command ('$(MAKE)', '-e', '-f', '$(PREFIX_SHELL).pto.mk', '$(PREFIX_SHELL).tif', '$(MAKE_EXTRA_ARGS_SHELL)'); $rule = $mk->Rule; $rule->Targets ($path_makefile); Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2009-12-22 00:15:42 UTC (rev 1195) +++ trunk/Panotools-Script/bin/ptoanchor 2009-12-24 00:22:07 UTC (rev 1196) @@ -120,12 +120,12 @@ $rule = $mk->Rule ($var_layer_c->NameRef); $rule->Prerequisites ($var_layer_b->NameRef, $var_layer_input->NameRef); - $rule->Command ('$(CELESTE)', '-i', $var_layer_b->NameRefShell, + $rule->Command ('$(CELESTE_SHELL)', '-i', $var_layer_b->NameRefShell, '-o', $var_layer_c->NameRefShell); $rule = $mk->Rule ($var_layer_d->NameRef); $rule->Prerequisites ($var_layer_c->NameRef); - $rule->Command ('$(CPCLEAN)', '-n', 1.5, + $rule->Command ('$(CPCLEAN_SHELL)', '-n', 1.5, '-o', $var_layer_d->NameRefShell, $var_layer_c->NameRefShell); $var_layers->Values ($var_layer_d->NameRef); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2010-01-11 23:24:31
|
Revision: 1219 http://panotools.svn.sourceforge.net/panotools/?rev=1219&view=rev Author: brunopostle Date: 2010-01-11 23:24:22 +0000 (Mon, 11 Jan 2010) Log Message: ----------- gigastart: add 'images' target Modified Paths: -------------- trunk/Panotools-Script/bin/gigastart trunk/Panotools-Script/bin/ptoanchor Modified: trunk/Panotools-Script/bin/gigastart =================================================================== --- trunk/Panotools-Script/bin/gigastart 2010-01-11 17:54:57 UTC (rev 1218) +++ trunk/Panotools-Script/bin/gigastart 2010-01-11 23:24:22 UTC (rev 1219) @@ -23,7 +23,7 @@ $path_makefile = 'Makefile' unless defined $path_makefile; my $rule = $mk->Rule ('.PHONY'); -$rule->Prerequisites (qw/all pointless chained bound filled cleaned pto clean/); +$rule->Prerequisites (qw/all pointless chained bound filled cleaned pto images clean/); $rule = $mk->Rule ('all'); $rule->Prerequisites ('pto'); @@ -62,6 +62,8 @@ $rule->Prerequisites ('$(PREFIX).cleaned.pto'); $rule = $mk->Rule ('pto'); $rule->Prerequisites ('$(PREFIX).pto'); +$rule = $mk->Rule ('images'); +$rule->Prerequisites ('$(PREFIX).tif'); $mk->Comment ('Create a pointless project file from a list of photos'); $rule = $mk->Rule ('$(PREFIX).pointless.pto'); Modified: trunk/Panotools-Script/bin/ptoanchor =================================================================== --- trunk/Panotools-Script/bin/ptoanchor 2010-01-11 17:54:57 UTC (rev 1218) +++ trunk/Panotools-Script/bin/ptoanchor 2010-01-11 23:24:22 UTC (rev 1219) @@ -173,9 +173,11 @@ $rule->Command ('$(PTOMERGE_SHELL)', '$(PROJECT_FILE_SHELL)', '$(LAYERS_SHELL)', '$(STACKS_SHELL)', '$(MERGED_A_SHELL)'); + # FIXME -n and just positions should be optimised for single stacks my @autooptimiser_args; @autooptimiser_args = ('-l') if (scalar @{$stacks} > 1); + # FIXME -a optimises b, d and e for single stacks, bad $rule = $mk->Rule ('$(MERGED_B)'); $rule->Prerequisites ('$(MERGED_A)'); $rule->Command ('$(AUTOOPTIMISER_SHELL)', @autooptimiser_args, '-a', '-s', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2010-01-25 23:51:17
|
Revision: 1243 http://panotools.svn.sourceforge.net/panotools/?rev=1243&view=rev Author: brunopostle Date: 2010-01-25 23:51:10 +0000 (Mon, 25 Jan 2010) Log Message: ----------- Workaround another ImageMagick bug Modified Paths: -------------- trunk/Panotools-Script/bin/entile trunk/Panotools-Script/bin/gmaptemplate Modified: trunk/Panotools-Script/bin/entile =================================================================== --- trunk/Panotools-Script/bin/entile 2010-01-24 00:27:40 UTC (rev 1242) +++ trunk/Panotools-Script/bin/entile 2010-01-25 23:51:10 UTC (rev 1243) @@ -17,8 +17,8 @@ unless ($pix_size == $pix_width && $pix_size == $pix_height) { - my $x_offset = $pix_size - $pix_width; - my $y_offset = $pix_size - $pix_height; + my $x_offset = $pix_size - $pix_width +1; + my $y_offset = $pix_size - $pix_height +1; $image->Border (geometry => $x_offset .'x'. $y_offset); $image->Crop (geometry => $pix_size .'x'. $pix_size .'+'. $x_offset .'+'. $y_offset); $image->Set (page => '0x0+0+0'); Modified: trunk/Panotools-Script/bin/gmaptemplate =================================================================== --- trunk/Panotools-Script/bin/gmaptemplate 2010-01-24 00:27:40 UTC (rev 1242) +++ trunk/Panotools-Script/bin/gmaptemplate 2010-01-25 23:51:10 UTC (rev 1243) @@ -175,7 +175,7 @@ pic_tileLayers[0].getOpacity = function() { return 1.0; }; var proj=new CustomProjection($maxzoomp1,imageWraps); var pic_customMap = new GMapType(pic_tileLayers, proj, "Pic", - {maxResolution:$maxzoom, minResolution:$minres, errorMessage:"Data not available"}); + {maxResolution:$maxzoom, minResolution:$minres, errorMessage:"This space intentionally left blank"}); //Now create the custom map. Would normally be G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |