Přenos dat z iPhonu přes Wi-Fi do Linuxu
- Pustíme Airdroid a necháme ho běžet na obrazovce. Pokud je v pozadí, nefunguje. Preemptivní multitaskování bylo poprvé implementováno na MULTICSu v roce 1964, na OS/360 v 1967 a na Unixu v roce 1969.
Pokrok IT. Vlevo: MULTICS, 1964. Má preemptivní multitasking. Uprostřed: IBM/360, 1967. Má preemptivní multitasking. Vpravo: Airdroid na iPhonu X, 2021. Nemá multitasking.
- V prohlížeči na PC zadáme http://172.20.10.1:8888, IP adresu upravíme podle adresy iPhonu (gatewaye), z příkazu route -n
- Na obrazovce iPhonu potvrdíme akceptanci. Někdy to náhodně nefunguje, je třeba znova odenterovat URL, případně restartovat další komponenty (Airdroid, WiFi).
- V prohlížeči klikneme na Photos a maximalizujeme okno galerie
- Najíždíme na malé šipečky download u jednotlivých fotek, počkáme, až zmodrají a klikneme na ně. Masové stahování Airdroid nemá – pokud se o něj pokusíme, již komprimované soubory se znova komprimují do ZIP, žádnou další kompresi to nepřinese, trvá to déle než fotky postahovat ručně, telefon se přitom přehřeje a pokud označíme fotek desítky, nedoběhne to.
Focení masek korekce nerovnoměrnosti obrazového pole
Dalekohled vinětuje. Kromě toho různé pixely mají trochu jinou citlivost a občas se vyskytne pixel nebývale citlivý nebo necitlivý. Takže je obraz vynásoben jakýmsi lehce zašuměným kopečkem s tečkami. Vyfotíme si proto uniformní bílé pole, abychom mohli tímto polem obraz podělit a získat obraz, kde všechny tyto vady budou vykompenzovány. Této technice se říká flat field correction (FFC). Abychom do obrazu nepřidali šum, vyfotíme fotek mnoho a zprůměrujeme je:
Tričko nemusí být dokonale bílé, dcraw bílou vyváží. Obě vrstvy ale musí být napnuté bez záhybů a volná látka nesmí stínit, abychom pak ve všech kompenzovaných fotografiích neměli stíny.
- Ostření mobilu nastavíme na doraz na dálku.
- Dalekohled k tomu doostříme na krajinu z okna. Tím bude pozice čoček vůči otvorům a hranolům identická s normálním focením a vinětování bude identické.
- Přes objektiv napneme bílé tričko, obě vrstvy tkaniny (skrz jednu silně prosvítá obraz lampy). Obě vrstvy musí být napnuté a tričko na objektivu obepneme gumičkou. Přebývající tričko se nesmí dostat před objektiv.
- Zapneme v Neoshotu automatic white balance, 3×3 mřížku a v menu Volume shutter.
- Vycentrujeme bílý kruh na mřížce 3×3 pomocí přeexpozice
- Nastavíme minimální ISO a nejdelší čas a přisuneme jasnou lampu co nejblíž tak, aby na RGB histogramu žádný kanál nešel na doraz a měl ještě trochu rezervu.
- Namíříme ne přímo na lampu, ale trochu stranou (obraz jasné lampy stále poněkud prosvítá)
- Namíříme na mobil větrák. Při sériovém focení RAW se silně zahřívá.
- Fotografujeme dlouhou sérii držením knoflíku snížení hlasitosti. Stále kontrolujeme histogram.
- Při přenosu velkého množství snímků pozor: fotografie, kterým se ještě nestihl vytvořit náhled v okamžiku mountování USB, se na USB nezobrazí.
Skript na masku korekce nerovnoměrnosti obrazového pole
Masky jsem hromadně konvertoval z DNG do PPM následujícím skriptem:
#!/bin/bash if [ $# -lt 1 ] then echo -e "\nPoužití:$0 <dng soubor> <dng soubor> ...\n" exit 1 fi parallel -j 4 -u 'dcraw -t 90 -v -4 -j -a -q 3 -C 1.0015 0.9963 {}' ::: $@
Je nutné, aby se anomální pixely transformovaly identicky, jako se to s nimi stane při focení obrazu, který obsahuje motiv. Proto je nastavena jak korekce chromatické aberace -C 1.0015 0.9963, tak algoritmus interpolace barev -q 3 stejně, jak to bude u cílového obrazu. Pro jiný dalekohled mohou být jiná čísla, je třeba experimentálně ozkoušet, co bude produkovat minimální barevné proužky na jasné černo-bílé hraně v kraji snímku. Pro testovací foto jsou vhodné budovy.
Chromatická aberace je latinský termín pro barevnou vadu. Způsobí, že červený a modrý kanál mají jinou velikost obrazu než zelený. Jedná se pouze o promile. Projevuje se to jako barevné hrany tam, kde mají být pouze černobílé. Změnou velikosti se dá také v dcraw kompenzovat. Kompenzace není dokonalá, protože tento „zoom“ zdá se není v celém obrazu rovnoměrný. I když jsem ho v jednom místě vykompenzoval, v jiných pořád trochu aberace je.
Jeden z souborů PPM kontrolně nahrajeme do G'MICu, ten vypíše statistiku a vidíme, že se žádný z nadměrně citlivých pixelů nepřeexponoval – maximum nedosahuje 65535, je pouze 46210. Maska tedy bude korektní:
$ gmic EKWC5584.ppm [gmic]-0./ Start G'MIC interpreter. [gmic]-0./ Input file 'EKWC5584.ppm' at position 0 (1 image 3024x4032x1x3). [gmic]-1./ Display image [0] = 'EKWC5584.ppm'. [0] = 'EKWC5584.ppm': size = (3024,4032,1,3) [139 Mio of floats]. data = (560,575,465,313,376,404,350,302,121,13,249,413,(...),0,290,549,496,461,266,41,245,426,302,237,215). min = 0, max = 46210, mean = 21683.7, std = 11126.1, coords_min = (45,0,0,0), coords_max = (1593,2246,0,0).
Další skript sečte masky ze souborů PPM do souboru masks_added.png:
#!/bin/bash cmdline=$(ls *.ppm | sed -e 's/^/"/;s/$/" -add/' | tr '\n' ' ') gmic $cmdline -pow 0.45454545 -normalize 0,65535 -o masks_added.png
-pow 0.45454545 vytváří PNG s gammou 2,2, která dobře využívá přesnost 16 bitů v celém tonálním rozsahu obrazu.
Maska nerovnoměrnosti obrazového pole (vlevo) a její detaily v různých místech. Kontrast byl zvýšen podle minima a maxima ve výřezu. Vidíme, jakou fantazii má senzor Sony Exmor RS. (můžete si stáhnout originální soubory)
Skript pro konverze z DNG do 16-bitového PNG pomocí dcraw
Pro konverzi, korekci chromatické aberace a korekci vinětování používám následující skript. Pokud konvertujeme více fotek naráz, program parallel zrychlí čtyřnásobně na mém 4-procesorovém systému. Gamma 2.2 bez lineárního segmentu sice neodpovídá sRGB, ale zase se snadno konvertuje do a z lineárního fotometrického prostoru pro manipulace v G'MICu.
Soubor masks_added.png
který jsme právě vytvořili, musí být připraven ve stejném adresáři jako je skript.
#!/bin/bash set -o pipefail # Předejde přílišnému zesilování obrazu vlivem tmavých částí masky cutpoint=0.07 if [ $# -lt 1 ] then echo -e "\nPoužití: $0 <DNG soubor> <DNG soubor> ...\n" >&2 exit 1 fi dir=$(dirname $0) maskfn="$dir/masks_added.png" parallel -u 'dcraw -t 90 -c -v -g 2.2 0 -6 -j -W -w -q 3 -C 1.0015 0.9963 {} \ | gmic -.ppm '"$maskfn"' -div 65535 -pow 2.2 -cut[1] '"$cutpoint"',1 -div -pow 0.454545 -normalize 0,65535 -o {}.png' ::: $@
Výstup je v 16-bitovém PPM (-6), gamma 2,2 (čistá funkce umocnění) (-g 2.2 0), vyvážení bílé podle iPhonu (-w). Používá se pokročilá rekonstrukce barev AHD (-q 3, pozor, není to ADHD). Koriguje se chromatická aberace dalekohledu (-C 1.0015 0.9963).
Dá se zlepšit ostrost rozdílným zaostřením mobilu a dalekohledu?
Na jednu vzdálenost k fotografovanému předmětu se dá zaostřit různými kombinacemi zaostření mobilu a dalekohledu. Můžeme tedy svobodně volit jednu veličinu. Nezobrazuje naše soustava ostřeji při určitém nastavení této veličiny?
Vlevo je telefon zaostřen na blízko, uprostřed na půl rozsahu a vpravo na dálku. Dalekohled byl tomu příslušně doostřen. Vidíme, že levý obrázek je více zazoomovaný než pravý. Hodnoty zoomu jsou 1,075; 1,035 a 1,000. Vzdálenost: 3,7 km.
Ořízneme-li obrázky, aby zobrazovaly stejný motiv a zvětšíme zhruba na 200% na stejný rozměr, přijde mi, že jejich ostrost je téměř totožná. Doufal jsem, že nastavením na určitý fokus by třeba zobrazovací vady elementů zobrazovací soustavy interagovaly příznivějším způsobem a tak by se dala ostrost optimalizovat.
Závěr: ostrost jsme nezlepšili, ale přišli jsme na bizarní slabý zoom 1,075×, kterým soustava oplývá, ač ani mobil, ani dalekohled zoom nemají.
Kalibrace jako dálkoměr
Parametr | Kamera „2ד s dalekohledem 6,835× |
Úhlová perioda pixelů ve středu zorného pole | 24,14 µrad |
Pro srovnání: typická divergence zeleného laserového ukazovátka (1200 μrad) | 50 pixelů |
Pro srovnání: průměr Měsíce (9040 µrad) | 374 pixelů |
Využitý průměr objektivu | 17,1 mm |
Pokud je v obrazu nějaký známý rozměr (např. rozteč podlaží, rozteč očí, velikost hlavy člověka, výška člověka, velikost poznávací značky, průměr kola auta, rozteč drátěného pletiva, rozteč vlnitého plechu), můžeme použít iPhone X s dalekohledem jako hrubý dálkoměr. Na obrázku odpočítáme pixely např. v GIMPu. Nejdříve je třeba zkalibrovat dalekohled:
K odečtení pixelových roztečí se hodí GIMP, souřadnice lze odečíst i v G'MICu:
Šířka budovy bez dalekohledu | Šířka budovy s dalekohledem | Zvětšení dalekohledu | |
---|---|---|---|
Fotografie 1 | 129,00 pixelů | 881 pixelů | |
Fotografie 2 | 128,50 pixelů | 879 pixelů | |
Průměr | 128,75 pixelů | 880 pixelů | 6,835× |
Pokud kalibrujeme v Indonésii, na Filipínách, nebo v Japonsku, nepoužíváme vzdálenosti budov vyfotografované v různé dny, protože ty nemusí zůstat neměnné.
Vzdálenost k identifikované budově jsem odečetl na Google maps jako 4,516 km. 1 pixel odpovídá 24,14 μrad × 4,516 km = 10,90 cm.
Rozměr | Pixely | Metry |
---|---|---|
Rozteč 7 pater | 191 pixelů | 20,82 m |
Rozteč 1 patra | 27,29 pixelů | 2,975 m |
Šířka okna bytu | 11 pixelů | 120 cm |
Výška okna bytu | 12 pixelů | 131 cm |
Šířka velkého schodišťového okna s 3×2 tabulemi | 31 pixelů | 3,38 m |
Výška velkého schodišťového okna s 3×2 tabulemi | 21 pixelů | 2,29 m |
V příštím díle budeme měřit skutečné rozlišení dalekohledu matematicky.
(Autorem fotografií je Karel Kulhavý, není-li uvedeno jinak.)