Webkamera
Z určitého důvodu jsem si pořídil velice levnou webkameru. Zaznamenám tu pár poznatků o novém hardwaru.
- Kamerka sežere aspoň 4W, někdy až 5W, elektrické energie. To nestojí za řeč při desktopovém použití, kdy sestava v klidu s uspaným monitorem spálí 30W, ale pro připojení na RaspberryPi je to zatraceně hodně. Maličké Zero 2 bez zátěže potřebuje jen kolem 0.6W. Čtyři watty pro kamerku v tomto kontextu není vůbec málo. Na druhou stranu dva 18650 lithiové akumulátory ji dokážou pohánět 2 hodiny bez problémů a to je pro moje zamýšlené použití víc než dost.
- Výrobce se chlubil zárukou několika let, ale mě trvalo hodinu a půl, než jsem přístroj rozebral a méně než jeden den, než jsem provedl nevratné změny, které možnost reklamace definitně znemožňují. Čtyři šrouby skrývaly tajemství, že optický senzor je přímo připláclý na PCB a šroubovací M12/S-mount nad ním drží levnou plastovou čočku. To má dva důsledky: jednak je možná vyměnit objektiv (levný a plastový) za něco lepšího a méně plastového & druhak, že zaostřování se provádí šroubováním. Když se čočka posune blíž k senzoru, ostří do větší vzdálenosti, když se od něj odsune dál, ostří blíž. Několikrát ji otočte a máte makro objektiv.
- Senzor má rozlišení 2 megapixely – 1920x1080 – při horizontálním rozměru 3mm. V porovnání s full frame senzorem, který při šířce 36 mm rozliší 6000 pixelů,
nabízí 4× vyšší hustotu pixelů. Fotocitlivé body jsou maličké, nabízí jen omezený
dynamický rozsah a mají větší šum. Přesto 4× vyšší rozlišení není málo a nějak by
šlo zneužít. Kdybych tento mini-senzor nasadil na klasický objektiv (FE sklo
má flange vzdálenost 18mm), mohl bych dosáhnout zajímavého přiblížení.
Efektivní ohnisková vzdálenost cca 12× větší, rozlišení 3× menší. Se
ctihodným 210mm beercanem by se dalo emulovat 840mm sklo, pokud by optika
byla dost kvalitní pro tyhle drastické detaily. Jsem si jistý, že by to
tlačilo za hranice toho, čeho je stařičké sklo z roku 1985 schopné, přesto to
někdy v budoucnu musím vyzkoušet.
Potřeboval bych pro to vyrobit jakýsi DIY adaptér mezi S-mountem a FE-mountem a perfektně ho izolovat před zběhlými paprsky světla, aby nesmyly výsledný obraz do červeno-růžových tónů. Na tohle nebude stačit pistole nabitá tavným lepidlem, ale něco lepšího. Jak jsou na tom cenově levné 3d tiskárny? Nějaká by se hodila. (Pokud chcete materiálně sponzorovat moje špatné nápady, ozvěte se na duuuuuude@k47.cz).
- Když jsem se díval, co jsou tyhle pidisenzory a plastové čočky zač, nabyl jsem
dojmu, že senzor je zcela nahý bez infračerveného filtru, který je zabudovaný
do čočky. Dává to smysl. Výrobce může prodávat stejný kus
křemíku jak pro webkamerky, tak i pro bezpečnostní kamery, které budou
civět do tmy s IR přísvitem. Čip zůstane stejný, změní se jen plastová čočka.
To se potrvdilo. Ze zadní části čočky se dá vyloupnout maličký IR blokující filtr, obraz pak dostane červený nádech a najednou je citlivý na infračervené světlo z přísvitu jiné webkamerky. Když jsem kamerku otočil ven, ukázal e klasický výjev z IR fotografie: listy a tráva najedou byla velice jasně a nepřirozeně bílá.
Nejde ale o čistě IR fotografii, ale o mix viditelného světla s IR zářením. Abych to dotáhl do extrému, potřebuju sehnat IR-propustný filtr, který vyblokuje viditelné světlo a ukáže, jak svět vypadá ve světle neviditelném pro lidské oko.
Na to se taky někdy v budoucnosti podívám. Můžu si tak snadno vyzkoušet infračervenou fotografii zcela bez nutnosti modifikovat (tj. potenciálně rozbít) existující (velký) foto-hardware.
- Z kamery leze jednak YUV:[yy] "4:2:2 v rozlišení max 640x480 nebo mjpeg v plných
1920x1080. Druhý jmenovaný není nic víc než proud snímků, kdy každý z nich
je nezávisle komprimovaný jako jpeg. To se hodí, protože můžu video uložit
jen natlačením jednotlivých jpegů na disk. Obejde se to bez kódování do
efektivnějších formátů (rpi zero je velice pomalé a tohle by bez HW podpory
určitě nestíhalo) a výsledné video není zas tak velké. Když ukládám každý
třetí snímek (výsledné mjpeg video jede rychlostí 10fps), jedna hodina
spotřebuje asi 4GB na SD kartě.
Linuxové API pro práci s kamerami a zařízení zaznamenávajících obraz je docela ok. Na straně jádra jde o subsystém video4linux a v uživatelském prostoru je nad ním postavená maličká knihovna
libv4l2
, která uhladí pár vrásek jaderného rozhraní navěky sevřeného slibem, že nikdy za žádných okolností nemůže rozbít userspace.Pro moje záměry stačilo vzít tenhle ukázkový program a trochu ho poštelovat. Vůbec nic komplikovaného.
- Kamera má jen omezené možnosti nastavení. Expozice je jen automatická a vůbec
nedovolí nastavit rychlost závěrky. Navíc záznam v plném rozlišení zcela
ignoruje všechny nastavení a jede ve zcela automatickém módu. Uživatelská
nastavení se týkají jen nižších rozlišení v YUV formátu.
Moje ještě starší kamera, která zvládá pouhých 640x480, umí nastavit čas závěrky až na 1.6s.
Nemožnost nastavit expozici znemožňuje ručně naprogramovat exposure bracketing, kdy rychle za sebou pořídím několik snímků s různou expozicí, abych se vypořádal s nízkým dynamickým rozsahem senzoru a velkou jistotou, že něco přepálí a něco podexponuje.
To je vše. O reálném použití webkamery v terénu se (doufám) rozepíšu někdy příště.