mirror of https://github.com/opencv/opencv.git
Merge pull request #5670 from askourik:opencv_agast_tree
commit
9d624f82c0
10 changed files with 18668 additions and 13 deletions
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,284 @@ |
||||
#!/usr/bin/perl |
||||
use strict; |
||||
use warnings; |
||||
use autodie; # die if problem reading or writing a file |
||||
|
||||
my $filein = "./agast.txt"; |
||||
my $fileout = "./agast_new.txt"; |
||||
my $i1=1; |
||||
my $i2=1; |
||||
my $i3=1; |
||||
my $tmp; |
||||
my $ifcount0=0; |
||||
my $ifcount1=0; |
||||
my $ifcount2=0; |
||||
my $ifcount3=0; |
||||
my $ifcount4=0; |
||||
my $elsecount; |
||||
my $myfirstline = $ARGV[0]; |
||||
my $mylastline = $ARGV[1]; |
||||
my $tablename = $ARGV[2]; |
||||
my @array0 = (); |
||||
my @array1 = (); |
||||
my @array2 = (); |
||||
my @array3 = (); |
||||
my $homogeneous; |
||||
my $success_homogeneous; |
||||
my $structured; |
||||
my $success_structured; |
||||
|
||||
open(my $in1, "<", $filein) or die "Can't open $filein: $!"; |
||||
open(my $out, ">", $fileout) or die "Can't open $fileout: $!"; |
||||
|
||||
|
||||
$array0[0] = 0; |
||||
$i1=1; |
||||
while (my $line1 = <$in1>) |
||||
{ |
||||
chomp $line1; |
||||
$array0[$i1] = 0; |
||||
if (($i1>=$myfirstline)&&($i1<=$mylastline)) |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+)/) |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+).*\>.*cb/) |
||||
{ |
||||
$tmp=$1; |
||||
} |
||||
else |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+).*\<.*c\_b/) |
||||
{ |
||||
$tmp=$1+128; |
||||
} |
||||
else |
||||
{ |
||||
die "invalid array index!" |
||||
} |
||||
} |
||||
$array1[$ifcount1] = $tmp; |
||||
$array0[$ifcount1] = $i1; |
||||
$ifcount1++; |
||||
} |
||||
else |
||||
{ |
||||
} |
||||
} |
||||
$i1++; |
||||
} |
||||
$homogeneous=$ifcount1; |
||||
$success_homogeneous=$ifcount1+1; |
||||
$structured=$ifcount1+2; |
||||
$success_structured=$ifcount1+3; |
||||
|
||||
close $in1 or die "Can't close $filein: $!"; |
||||
|
||||
open($in1, "<", $filein) or die "Can't open $filein: $!"; |
||||
|
||||
|
||||
$i1=1; |
||||
while (my $line1 = <$in1>) |
||||
{ |
||||
chomp $line1; |
||||
if (($i1>=$myfirstline)&&($i1<=$mylastline)) |
||||
{ |
||||
if ($array0[$ifcount2] == $i1) |
||||
{ |
||||
$array2[$ifcount2]=0; |
||||
$array3[$ifcount2]=0; |
||||
if ($array0[$ifcount2+1] == ($i1+1)) |
||||
{ |
||||
$array2[$ifcount2]=($ifcount2+1); |
||||
} |
||||
else |
||||
{ |
||||
open(my $in2, "<", $filein) or die "Can't open $filein: $!"; |
||||
$i2=1; |
||||
while (my $line2 = <$in2>) |
||||
{ |
||||
chomp $line2; |
||||
if ($i2 == $i1) |
||||
{ |
||||
last; |
||||
} |
||||
$i2++; |
||||
} |
||||
my $line2 = <$in2>; |
||||
chomp $line2; |
||||
if ($line2=~/goto (\w+)/) |
||||
{ |
||||
$tmp=$1; |
||||
if ($tmp eq "homogeneous") |
||||
{ |
||||
$array2[$ifcount2]=$homogeneous; |
||||
} |
||||
if ($tmp eq "success_homogeneous") |
||||
{ |
||||
$array2[$ifcount2]=$success_homogeneous; |
||||
} |
||||
if ($tmp eq "structured") |
||||
{ |
||||
$array2[$ifcount2]=$structured; |
||||
} |
||||
if ($tmp eq "success_structured") |
||||
{ |
||||
$array2[$ifcount2]=$success_structured; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
die "goto expected: $!"; |
||||
} |
||||
close $in2 or die "Can't close $filein: $!"; |
||||
} |
||||
#find next else and interprete it |
||||
open(my $in3, "<", $filein) or die "Can't open $filein: $!"; |
||||
$i3=1; |
||||
$ifcount3=0; |
||||
$elsecount=0; |
||||
while (my $line3 = <$in3>) |
||||
{ |
||||
chomp $line3; |
||||
$i3++; |
||||
if ($i3 == $i1) |
||||
{ |
||||
last; |
||||
} |
||||
} |
||||
while (my $line3 = <$in3>) |
||||
{ |
||||
chomp $line3; |
||||
$ifcount3++; |
||||
if (($elsecount==0)&&($i3>$i1)) |
||||
{ |
||||
if ($line3=~/goto (\w+)/) |
||||
{ |
||||
$tmp=$1; |
||||
if ($tmp eq "homogeneous") |
||||
{ |
||||
$array3[$ifcount2]=$homogeneous; |
||||
} |
||||
if ($tmp eq "success_homogeneous") |
||||
{ |
||||
$array3[$ifcount2]=$success_homogeneous; |
||||
} |
||||
if ($tmp eq "structured") |
||||
{ |
||||
$array3[$ifcount2]=$structured; |
||||
} |
||||
if ($tmp eq "success_structured") |
||||
{ |
||||
$array3[$ifcount2]=$success_structured; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/if\(ptr\[offset/) |
||||
{ |
||||
$ifcount4=0; |
||||
while ($array0[$ifcount4]!=$i3) |
||||
{ |
||||
$ifcount4++; |
||||
if ($ifcount4==$ifcount1) |
||||
{ |
||||
die "if else match expected: $!"; |
||||
} |
||||
$array3[$ifcount2]=$ifcount4; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
die "elseif or elsegoto match expected: $!"; |
||||
} |
||||
} |
||||
last; |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/if\(ptr\[offset/) |
||||
{ |
||||
$elsecount++; |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/else/) |
||||
{ |
||||
$elsecount--; |
||||
} |
||||
} |
||||
} |
||||
$i3++; |
||||
} |
||||
printf("%3d [%3d][0x%08x]\n", $array0[$ifcount2], $ifcount2, (($array1[$ifcount2]&15)<<28)|($array2[$ifcount2]<<16)|(($array1[$ifcount2]&128)<<5)|($array3[$ifcount2])); |
||||
close $in3 or die "Can't close $filein: $!"; |
||||
$ifcount2++; |
||||
} |
||||
else |
||||
{ |
||||
} |
||||
} |
||||
$i1++; |
||||
} |
||||
|
||||
printf(" [%3d][0x%08x]\n", $homogeneous, 252); |
||||
printf(" [%3d][0x%08x]\n", $success_homogeneous, 253); |
||||
printf(" [%3d][0x%08x]\n", $structured, 254); |
||||
printf(" [%3d][0x%08x]\n", $success_structured, 255); |
||||
|
||||
close $in1 or die "Can't close $filein: $!"; |
||||
|
||||
$ifcount0=0; |
||||
$ifcount2=0; |
||||
printf $out " static const unsigned long %s[] = {\n ", $tablename; |
||||
while ($ifcount0 < $ifcount1) |
||||
{ |
||||
printf $out "0x%08x, ", (($array1[$ifcount0]&15)<<28)|($array2[$ifcount0]<<16)|(($array1[$ifcount0]&128)<<5)|($array3[$ifcount0]); |
||||
|
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
|
||||
} |
||||
printf $out "0x%08x, ", 252; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
printf $out "0x%08x, ", 253; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
printf $out "0x%08x, ", 254; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
printf $out "0x%08x\n", 255; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
printf $out " };\n\n"; |
||||
|
||||
$#array0 = -1; |
||||
$#array1 = -1; |
||||
$#array2 = -1; |
||||
$#array3 = -1; |
||||
|
||||
close $out or die "Can't close $fileout: $!"; |
@ -0,0 +1,244 @@ |
||||
#!/usr/bin/perl |
||||
use strict; |
||||
use warnings; |
||||
use autodie; # die if problem reading or writing a file |
||||
|
||||
my $filein = "./agast_score.txt"; |
||||
my $fileout = "./agast_new.txt"; |
||||
my $i1=1; |
||||
my $i2=1; |
||||
my $i3=1; |
||||
my $tmp; |
||||
my $ifcount0=0; |
||||
my $ifcount1=0; |
||||
my $ifcount2=0; |
||||
my $ifcount3=0; |
||||
my $ifcount4=0; |
||||
my $elsecount; |
||||
my $myfirstline = $ARGV[0]; |
||||
my $mylastline = $ARGV[1]; |
||||
my $tablename = $ARGV[2]; |
||||
my @array0 = (); |
||||
my @array1 = (); |
||||
my @array2 = (); |
||||
my @array3 = (); |
||||
my $is_not_a_corner; |
||||
my $is_a_corner; |
||||
|
||||
open(my $in1, "<", $filein) or die "Can't open $filein: $!"; |
||||
open(my $out, ">", $fileout) or die "Can't open $fileout: $!"; |
||||
|
||||
|
||||
$array0[0] = 0; |
||||
$i1=1; |
||||
while (my $line1 = <$in1>) |
||||
{ |
||||
chomp $line1; |
||||
$array0[$i1] = 0; |
||||
if (($i1>=$myfirstline)&&($i1<=$mylastline)) |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+)/) |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+).*\>.*cb/) |
||||
{ |
||||
$tmp=$1; |
||||
} |
||||
else |
||||
{ |
||||
if($line1=~/if\(ptr\[offset(\d+).*\<.*c\_b/) |
||||
{ |
||||
$tmp=$1+128; |
||||
} |
||||
else |
||||
{ |
||||
die "invalid array index!" |
||||
} |
||||
} |
||||
$array1[$ifcount1] = $tmp; |
||||
$array0[$ifcount1] = $i1; |
||||
$ifcount1++; |
||||
} |
||||
else |
||||
{ |
||||
} |
||||
} |
||||
$i1++; |
||||
} |
||||
$is_not_a_corner=$ifcount1; |
||||
$is_a_corner=$ifcount1+1; |
||||
|
||||
close $in1 or die "Can't close $filein: $!"; |
||||
|
||||
open($in1, "<", $filein) or die "Can't open $filein: $!"; |
||||
|
||||
|
||||
$i1=1; |
||||
while (my $line1 = <$in1>) |
||||
{ |
||||
chomp $line1; |
||||
if (($i1>=$myfirstline)&&($i1<=$mylastline)) |
||||
{ |
||||
if ($array0[$ifcount2] == $i1) |
||||
{ |
||||
$array2[$ifcount2]=0; |
||||
$array3[$ifcount2]=0; |
||||
if ($array0[$ifcount2+1] == ($i1+1)) |
||||
{ |
||||
$array2[$ifcount2]=($ifcount2+1); |
||||
} |
||||
else |
||||
{ |
||||
open(my $in2, "<", $filein) or die "Can't open $filein: $!"; |
||||
$i2=1; |
||||
while (my $line2 = <$in2>) |
||||
{ |
||||
chomp $line2; |
||||
if ($i2 == $i1) |
||||
{ |
||||
last; |
||||
} |
||||
$i2++; |
||||
} |
||||
my $line2 = <$in2>; |
||||
chomp $line2; |
||||
if ($line2=~/goto (\w+)/) |
||||
{ |
||||
$tmp=$1; |
||||
if ($tmp eq "is_not_a_corner") |
||||
{ |
||||
$array2[$ifcount2]=$is_not_a_corner; |
||||
} |
||||
if ($tmp eq "is_a_corner") |
||||
{ |
||||
$array2[$ifcount2]=$is_a_corner; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
die "goto expected: $!"; |
||||
} |
||||
close $in2 or die "Can't close $filein: $!"; |
||||
} |
||||
#find next else and interprete it |
||||
open(my $in3, "<", $filein) or die "Can't open $filein: $!"; |
||||
$i3=1; |
||||
$ifcount3=0; |
||||
$elsecount=0; |
||||
while (my $line3 = <$in3>) |
||||
{ |
||||
chomp $line3; |
||||
$i3++; |
||||
if ($i3 == $i1) |
||||
{ |
||||
last; |
||||
} |
||||
} |
||||
while (my $line3 = <$in3>) |
||||
{ |
||||
chomp $line3; |
||||
$ifcount3++; |
||||
if (($elsecount==0)&&($i3>$i1)) |
||||
{ |
||||
if ($line3=~/goto (\w+)/) |
||||
{ |
||||
$tmp=$1; |
||||
if ($tmp eq "is_not_a_corner") |
||||
{ |
||||
$array3[$ifcount2]=$is_not_a_corner; |
||||
} |
||||
if ($tmp eq "is_a_corner") |
||||
{ |
||||
$array3[$ifcount2]=$is_a_corner; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/if\(ptr\[offset/) |
||||
{ |
||||
$ifcount4=0; |
||||
while ($array0[$ifcount4]!=$i3) |
||||
{ |
||||
$ifcount4++; |
||||
if ($ifcount4==$ifcount1) |
||||
{ |
||||
die "if else match expected: $!"; |
||||
} |
||||
$array3[$ifcount2]=$ifcount4; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
die "elseif or elsegoto match expected: $!"; |
||||
} |
||||
} |
||||
last; |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/if\(ptr\[offset/) |
||||
{ |
||||
$elsecount++; |
||||
} |
||||
else |
||||
{ |
||||
if ($line3=~/else/) |
||||
{ |
||||
$elsecount--; |
||||
} |
||||
} |
||||
} |
||||
$i3++; |
||||
} |
||||
printf("%3d [%3d][0x%08x]\n", $array0[$ifcount2], $ifcount2, (($array1[$ifcount2]&15)<<28)|($array2[$ifcount2]<<16)|(($array1[$ifcount2]&128)<<5)|($array3[$ifcount2])); |
||||
close $in3 or die "Can't close $filein: $!"; |
||||
$ifcount2++; |
||||
} |
||||
else |
||||
{ |
||||
} |
||||
} |
||||
$i1++; |
||||
} |
||||
|
||||
printf(" [%3d][0x%08x]\n", $is_not_a_corner, 254); |
||||
printf(" [%3d][0x%08x]\n", $is_a_corner, 255); |
||||
|
||||
close $in1 or die "Can't close $filein: $!"; |
||||
|
||||
$ifcount0=0; |
||||
$ifcount2=0; |
||||
printf $out " static const unsigned long %s[] = {\n ", $tablename; |
||||
while ($ifcount0 < $ifcount1) |
||||
{ |
||||
printf $out "0x%08x, ", (($array1[$ifcount0]&15)<<28)|($array2[$ifcount0]<<16)|(($array1[$ifcount0]&128)<<5)|($array3[$ifcount0]); |
||||
|
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
|
||||
} |
||||
printf $out "0x%08x, ", 254; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
if ($ifcount2==8) |
||||
{ |
||||
$ifcount2=0; |
||||
printf $out "\n"; |
||||
printf $out " "; |
||||
} |
||||
printf $out "0x%08x\n", 255; |
||||
$ifcount0++; |
||||
$ifcount2++; |
||||
printf $out " };\n\n"; |
||||
|
||||
$#array0 = -1; |
||||
$#array1 = -1; |
||||
$#array2 = -1; |
||||
$#array3 = -1; |
||||
|
||||
close $out or die "Can't close $fileout: $!"; |
@ -0,0 +1,32 @@ |
||||
perl read_file_score32.pl 9059 9385 table_5_8_corner_struct |
||||
move agast_new.txt agast_score_table.txt |
||||
perl read_file_score32.pl 2215 3387 table_7_12d_corner_struct |
||||
copy /A agast_score_table.txt + agast_new.txt agast_score_table.txt |
||||
del agast_new.txt |
||||
perl read_file_score32.pl 3428 9022 table_7_12s_corner_struct |
||||
copy /A agast_score_table.txt + agast_new.txt agast_score_table.txt |
||||
del agast_new.txt |
||||
perl read_file_score32.pl 118 2174 table_9_16_corner_struct |
||||
copy /A agast_score_table.txt + agast_new.txt agast_score_table.txt |
||||
del agast_new.txt |
||||
|
||||
perl read_file_nondiff32.pl 103 430 table_5_8_struct1 |
||||
move agast_new.txt agast_table.txt |
||||
perl read_file_nondiff32.pl 440 779 table_5_8_struct2 |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
||||
perl read_file_nondiff32.pl 869 2042 table_7_12d_struct1 |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
||||
perl read_file_nondiff32.pl 2052 3225 table_7_12d_struct2 |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
||||
perl read_file_nondiff32.pl 3315 4344 table_7_12s_struct1 |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
||||
perl read_file_nondiff32.pl 4354 5308 table_7_12s_struct2 |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
||||
perl read_file_nondiff32.pl 5400 7454 table_9_16_struct |
||||
copy /A agast_table.txt + agast_new.txt agast_table.txt |
||||
del agast_new.txt |
Loading…
Reference in new issue