Histogram goriščnic na seriji slik

Utisevalec

Guru
12. nov 2007
16.113
4.083
113
A kdo tole uporablja oz. se spomne imena kakšne takšne zadeve?

Pred (dolgo) časa nazaj sem uporabil eno command line skripto, ki je naredila potem lep izris v Rju ampak sedaj ne najdem zadeve.

Mora pa bit stvar preprosta (najraje če je command line pa da deluje na linuxu, bi pa prežival tudi enostavne windows zadeve) in ne del kakšnega slonastega "plačljivega" programa ala Photoshop ali kaj podobnega. Pa preživet mora velike serije slik (do nekaj 10k fotk recimo).

Če kdo ne ve zakaj bi se to rabilo, imaš recimo serijo slik z nekega dogodka in potem poženeš analizo in dobiš graf (histogram) ki prikaže katere goriščnice si najbolj uporabljal. Če vidiš nek izjemen vzorec drugič namesto all-arround objektiva vzameš nekaj kar zadosti histogramu v ožjem spektru in ima verjetno 3x boljšo prehodnost svetlobe.

Druga uporabna zadeva je da ko imaš enkrat DSLR s kit allaround-om in preveč denarja in bi rad kupil en specialen (fiksen) objektiv pa ne veš točno kaj bi ti najbolj pasalo!
evil.gif


(vem da vi/mi profiji vemo vse te stvari na pamet, ampak jst rabim zgornje podatke ugotovit iz zbirke fotk na disku od nekoga drugega)
 

Utisevalec

Guru
12. nov 2007
16.113
4.083
113
Ker je ravno vroče in se mi je dalo sem spisal 1 vrstico dolg ukaz ki nameče goriščne razdalje iz EXIF podatka v en fajl.

Če koga zanima, rabiš klasično linux okolje s standardnimi konzolnimi orodji in pa program exiftool (ki je del precej distribucij serijsko).

Sam program lahko ekstrakta EXIF podatke rekurzivno po folderjih, simple ukaz ki pridobi vse te podatke za recimo vse JPG fajle v trenutnem delovnem direktoriju ali pa pa v subfolderjih je
Koda:
exiftool -r *.JPG

Oz. ker itak preveri za EXIF podatki v fajlu se lahko uporabi kar splošno po vseh datotekah:
Koda:
exiftool -r *

Potem lahko z grep-anjem filtriramo output glede na to kaj rabimo (regex). Pri kakšnih kompaktih bo stvar delovala preprosto samo z iskanjem stringa, je pa res da pri drugih fotoaparatih na tak način dobimo en kup podatkov. Čisto preprosta koda je taka:
Koda:
grep -i "Focal Length"

.. ker je meni vračalo še en kup podatkov ki imajo ime "Focal Length" (min, max, podatki o objektivu, ipd.) sem dodal bolj strikten izraz, ki je zadovoljil pogoje (na koncu sta dva presledka [\ ] zato da se losamo izraza "Focal Length In 35mm Format")
Koda:
grep -iw ^Focal\ Length\ \

Ker mi je noter še vedno metalo po dve vrstici, ena s fotoaparata in ena s podatki objektiva sem moral v grep nastavit še exclude (za nize tipa "18.0 mm (35 mm equivalent: 27.0 mm"). Najlažje to naredimo da output prvega grep-anja pipe-amo še enkrat z neželenim nizom.
Koda:
grep -v "equivalent"

Vse te ukaze se pipe-ne v eno vrstico in output nastavimo v nek TXT file (dodan še time za stetje casa izvedbe)
Koda:
time exiftool -r * | grep -v "equivalent" | grep -i "^Focal Length\ \ " > goriscnice.txt

TXT file vsebuje potem tole
Koda:
Focal Length                    : 75.0 mm
Focal Length                    : 75.0 mm
Focal Length                    : 52.0 mm
Focal Length                    : 52.0 mm
Focal Length                    : 52.0 mm
Focal Length                    : 52.0 mm
Focal Length                    : 75.0 mm

.. odvisi od hitrosti diska in CPUja ampak moj test je pokazal cca. 10 sec na 1000 slik kar je solidno in se da preživet.

Na koncu samo odstranimo nepotrebne podatke ki so itak enaki ves čas (v txt editorju "search & replace z null", konkretno "Focal Lenght :" in pa "mm") da dobimo samo celo številko. TXT nato odpremo v excelu kot tabelo in potem z excel funkcijami operiramo dalje (v bistvu nastavimo intervale za frekvence ki jih rabimo in potem ko dobimo frekvenco [funkcija FREQUENCY] izrišemo graf).

Takole zgleda graf za neke osnovne frekvence goriščnic za serijo slik:
focall.png


Skratka za to serijo se je slikalo večinoma s 50mm, uporabljalo se je pa tudi precej min (18) in max (105) goriščnico. To je nekako klasična "turistična" uporaba fotoaparata. Za kupit bi bil pa 50mm z neko spodobno svetlobno vrednostjo!
cheer.gif
 

matejm1994

Fizikalc
1. jan 2009
1.119
2
38
Opa, res, kapo dol. Bo še prišlo prav.

Pa mogoče malo off. Mogoče kdo ve, če se da te podatke brati tudi z Javo? Če da, ali obstaja kje kakšen vodič?