[image]

Статистика использования разных фокусных расстояний

 
+
-
edit
 

Balancer

администратор
★★★★★
Написал тут скриптик, который пробежался по ~26 тыс. фотографий за последние 7-8 лет и вывел статистику по использованию фокусных расстояний.

Приведены графики общей статистики, которая как средняя температура по больнице, так как лимитирование разной оптики накладывает свои ограничения, так и по отдельным объективам, что уже интереснее. Все фокусные расстояния привёл не к ЭФР, а к экиваленту на кропе 1,6 - так привычнее и нагляднее :)


   3.6.123.6.12
+
-
edit
 

Balancer

администратор
★★★★★
Скрипт, которым делались датафайлы для GNUPlot:
code text
  1. #!/usr/bin/perl -w
  2.  
  3. use warnings;
  4. use strict;
  5. use File::Basename;
  6. use File::Find;
  7. use File::Path qw(make_path);
  8. use Image::ExifTool qw(:Public);
  9. use POSIX qw(strftime);
  10. use Time::Local;
  11.  
  12. my $exif = new Image::ExifTool;
  13. my %stat;
  14.  
  15. unlink("gnuplot/total.data");
  16.  
  17. sub get_exif
  18. {
  19.     my $file = $_[0];
  20.     my @params = @{$_[1]};
  21.     my $info = $exif->ImageInfo($file, @params);
  22.  
  23.     my %value;
  24.     foreach my $p (@params)
  25.     {
  26.         if(exists $info->{$p})
  27.         {
  28.             $value{$p} = $info->{$p};
  29.         }
  30.         else
  31.         {
  32.             $value{$p} = 0;
  33.         }
  34.     }
  35.  
  36.     return %value;
  37. }
  38.  
  39. sub focus_stat
  40. {
  41.     /\.jpe?g$/i || return;
  42.     print $File::Find::name."\n";
  43.  
  44.     my $img = $File::Find::name;
  45.  
  46.     my %info = get_exif($img, [
  47.         'Model',
  48.         'Lens',
  49.         'FocalLength',
  50.         'ShortFocal',
  51.         'LongFocal',
  52.         'FocalLength35efl',
  53.         'ScaleFactor35efl'
  54.     ]);
  55.  
  56.     next if(not $info{'FocalLength'});
  57.     next if(not $info{'ShortFocal'});
  58.     next if(not $info{'LongFocal'});
  59.  
  60.     my $lens = $info{'Lens'};
  61.  
  62.     $stat{$lens}{'sfocal'} = $info{'ShortFocal'};
  63.     $stat{$lens}{'model'} = $info{'Model'};
  64.     $stat{$lens}{'lfocal'} = $info{'LongFocal'};
  65.     $stat{$lens}{'crop'} = $info{'ScaleFactor35efl'};
  66.     push(@{$stat{$lens}{'data'}}, $info{'FocalLength'});
  67. }
  68.  
  69. find(\&focus_stat, "/home/family/Our");
  70.  
  71. foreach my $lens (keys %stat)
  72. {
  73.     print "lens = $lens\n";
  74.  
  75.     open FH, ">gnuplot/$lens.gnuplot";
  76.     print FH "model = ".$stat{$lens}{'model'}."\n";
  77.     print FH "sfocal = ".$stat{$lens}{'sfocal'}."\n";
  78.     print FH "lfocal = ".$stat{$lens}{'lfocal'}."\n";
  79.     print FH "crop = ".$stat{$lens}{'crop'}."\n";
  80.     close FH;
  81.  
  82.     open FH, ">gnuplot/$lens.data";
  83.     open FHT, ">>gnuplot/total.data";
  84.     foreach my $focal (@{$stat{$lens}{'data'}})
  85.     {
  86.         $focal =~ s/\s+mm$//;
  87.         my $efl = $focal * $stat{$lens}{'crop'};
  88.         print FH "$efl\n";
  89.         print FHT "$efl\n";
  90.     }
  91.     close FH;
  92.     close FHT;
  93. }


Файл GNUPlot для построения общей картинки:
code text
  1. set terminal pngcairo enhanced font "Tahoma,8" size 600,2000
  2. set output 'total.png'
  3.  
  4. set multiplot layout 11,1 title 'Встребованность фокусных расстояний'
  5.  
  6. bin(x,width) = width*int(x/width+0.5)
  7. round(x) = bin(x/1.6, 10/3.)
  8.  
  9. set xrange [0:260]
  10.  
  11. set xtics 10
  12.  
  13. set style fill transparent solid 0.6
  14. set boxwidth 10./3
  15.  
  16. set xlabel "Приведённое к crop 1,6 фокусное расстояние, мм"
  17. set ylabel "Количество снимков"
  18.  
  19. set title 'Все объективы:' font "Tahoma, 14"
  20. plot "total.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#808080" t 'Все объективы'
  21.  
  22. set title 'Canon G7:'
  23. plot "7.4 - 44.4 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#000080" t '7.4-44.4 x 4.6 (21-128 x 1.6)'
  24.  
  25. set title 'Canon A80:'
  26. plot "7.8 - 23.4 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#800080" t '7.8-23.4 x 4.8 (23-70 x 1.6)'
  27.  
  28. set title 'Canon 1000D:'
  29. plot "18.0 - 200.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#808000" t 'Canon 18-200 IS x 1.6'
  30.  
  31. set title 'Canon 20D, Canon 550D:'
  32. plot "55.0 - 250.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#008000" t 'Canon 55-250 IS x 1.6'
  33.  
  34. set title 'Canon 550D:'
  35. plot "50.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#80f080" t 'Canon 50/1,8 x 1.6'
  36.  
  37. set title 'Canon A40:'
  38. plot "5.4 - 16.2 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#800000" t '5.4-16.2 x 5.6 (19-57 x 1.6)'
  39.  
  40. set title 'Canon 550D:'
  41. plot "18.0 - 55.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#40f080" t 'Canon 18-55 IS x 1.6'
  42.  
  43. set title 'Canon IXUS 110 IS:'
  44. plot "5.0 - 20.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#ff80c0" t '5.0-20.0 x 5.5 (17-69 x 1.6)'
  45.  
  46. set title 'Canon 10D:'
  47. plot "24.0 - 105.0 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#404000" t '24-105 x 1.6'
  48.  
  49. set title 'Canon IXUS 60:'
  50. plot "5.8 - 17.4 mm.data" u (round($1)):(1.) smooth frequency w boxes lc rgb "#804040" t '5.8-17.4 x 5.9 (21-64 x 1.6)'
   3.6.133.6.13

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru