<<

#348 ; Ĉu la tria fojo jam diros la finan veron?

>>

Suomoj havas la proverbon "Kolmas kerta toden sanoo", rekte esperante tradukita: "tria fojo diras la veron". Ekzemple ofte estas nur la tria vario de iom granda komputila programo la unua iom bona vario. Kelkaj ekzemploj: Windows, QuickBASIC, TurboPascal, ... kaj certe la tria monda milito estos la plej forta. Mi ne scias tre bone la armilojn de tria monda milito, sed por la kvara MM oni povas uzi nur ŝtonoj kaj bastonoj ... ĉar aliaj ne plu ekzistas!

Por mi estas jam tria fojo por skribi pri simpla kontrola fotilo, do espereble la rezulto estos kiel eble plej vera kaj ĝusta.

Apude ni vidas la nunan varion de foto por nia distanca TTT-legila kontrola fotilo. Lumigado de mapo eble povus esti iom pli bona en pli malfruaj fotoj. La kialo por tio estis la dum tempo malfortiĝanta natura lumo.

La mondo ja estas jam dividita al okcidenta kaj orienta duono. Fakto de vivo. Tio ne estas mia kulpo. Oni akuzu Vladimir Putin de Rusujo kaj Sleepy-Joe de Usono pri tio. La Uesto kaj la Eosto ja neniam renkontos! En nunaj tempoj tio estas speciale facile por kredi.

Antaŭe mi skribis ke la posedanto de por la kontrola fotilo uzata foto /var/www/html/webcam/foto.jpg pli bone estu la norma uzanto pi sed tio ne gravas se oni ne volas prilabori la datumon. La posedanto de dosiero /var/www/html/webcam/ estas la speciala uzanto root kaj tial oni devas uzi la vorton sudo por foti.

En bona lumo facile eblas foti almenaŭ 12 fotoj per minuto, proksimume 5 sekundoj da tempo inter la fotoj. Miaopinie oni povas uzi prokraston 1 sekundo per la selektilo -t 1000 en bona lumo, sed en ioma malhelo oni eble devas doni pli da tempo por la fotilo por sin stabiligi. Kaj klare, se la ekspona tempo estas speciale longa, oni ne povas foti sinsekve tre rapide. Miamemore estas la plej longa ebla ekspona tempo por RPi-fotilo vario 2 proksimume 10 sekundoj.

Mi ne volas memorteni ĉiujn la fotojn en la memora karto de RPi. Se ni fotas ekzemple 10 fotoj dum minuto en 6 sekunda intertempo kaj la meza grando de unu sufiĉe modesta 640x480 foto estas proksimume 250 KB, bezonus ni proksimume 3,6 GB da memoro por la fotoj dum unu tago. Tio certe estus tro multe. Oni bezonas alian solvon se oni volas memorteni multe da fotoj de aŭtomata kontrola fotilo. Mi ne ilin memortenos.

Mi skribis novan "script" por foti en serio. Oni povas stopi la "script" simple, nur presu ion klavon de klavaro. Ĝi atendas por 3 sekundoj la preson de klavo por ĉio rondo post la fotado. Oni ne bezonas plu uzi la klavan kombinaĵon Ctrl+C

Jen la "script" en dosiero /home/pi/ , nomita while.sh :

#!/bin/bash
while true; do
  date
  sudo raspistill -w 640 -h 480 -t 1000 -a 1036 -a "Simeoni @ %X %d.%m.%Y" -o /var/www/html/webcam/foto.jpg
  # sudo chown pi: /var/www/html/webcam/foto.jpg            # Ĉi tion vicon oni apenaŭ bezonas!
  if read -r -N 1 -t 3; then
    break
  fi
done

Oni preparas la datumon por uzo en komanda fenestro per la ordinara komando chmod +x while.sh kaj sekve eblas starti la fotadon en serio per komando ./while.sh

Kaj jen la nuna vario de PHP -kodo fotu.php por la HTML-radiko /var/www/html/ de TTT-servilo Apache:

<?php echo "<title> Montru la foton </title>"; ?>
<?php echo "<meta http-equiv='refresh' content='5'>"; ?>
<?php echo "<h1 align='center'>" . "Simeoni @ " . date('H:i:s ; d.m.Y') . "</h1>"; ?>
<?php echo "<p align='center'> <img src='webcam/foto.jpg'> </p>"; ?>

La intencita intertempo do nun estas 5 sekundoj inter la unuopaj fotoj, kvankam mi ne povas tion precize kalkuli.

Se oni volas ekzemple nur 5 fotoj dum minuto, oni aliigu en la "script" la vicon: " if read -r -N 1 -t 3; then " al iom alia formo: " if read -r -N 1 -t 5; then " kaj pli bone tute forigu la fotilan selektilon " -t 1000 " por foti en pli malforta lumo, tiel ke la fotilo povas uzi tempon por fotado kiom ĝi bezonas, jen iel jen tiel. En la PHP-datumo oni aliigu la parton " content='5' " en la HTML-elemento <meta ... > al la iom alia " content='12' " por pli longa intertempo 12 sekundoj. Tamen povas iom okazi ke la fotita foto kaj la paĝo de TTT-legilo ne estas ĉiam tute sinkronaj unu kun la alia. Estas ja du apartaj procezoj kioj estas nur proksimume same rapidaj.

Eblas uzi la selektilon -ifx kun kelkaj specialaj vortoj por la programo raspistill por produkti interesaj kaj amuzaj rezultoj rekte per la fotila programo mem. Por pli kompleksaj rezultoj oni povus uzi ekzemple OpenCV en Python -programo.

Nu, certe la kontrola fotilo ne estas la plej bona aparato por tiaj ludoj, artverkoj kaj ŝercoj, sed jen kelkaj ekzemploj pri uzo de tia selektilo kun la sama testa situacio kion ni vidis je komenco:

Ekzemploj pri uzo de selektilo '-ifx' por programo 'raspistill'

La supraj fotoj estas iom malgradigitaj el la origina 640x480 sed konservas la originan rilaton 4:3 inter la larĝo kaj la alto. Alia norma alternativo por RPi-fotiloj varioj 1 kaj 2 estus 16:9, kiel ekzemple 1920x1080, sed tiam la fotilo eble ne fotas per la plej granda ebla fota angulo.

Eĉ belarto jam estas aŭtomatigita! Oni povas simpligi la foton kaj obtuzi malgrandaj kaj malpli gravaj detaloj. Ekzemple por la selektilo -ifx oilpaint estas la limo inter okcidenta kaj orienta mondo apenaŭ videbla. Kelkaj selektiloj plifortigas detalojn (ekzemple la selektilo -ifx sketch ) kaj kelkaj aliaj ilin obtuzas.

La origina grando de iom pakita JPG-datumo de foto de 640*480 da rastrunuoj por la selektilo -ifx pastel estis nur 218 KB, sed la datumo de foto de sama nombro da rastrunuoj kun selektilo -ifx sketch estis eĉ 356 KB. La origina norma 640x480 foto estis 273 KB. Do eblas signife malgrandigi la JPG-datumon per konvena selektilo, se oni rajtas perdi detaloj. Kaj tioj selektiloj kioj plifortigas detalojn en la foto, ili produktas pli grandaj, malpli facile pakeblaj datumoj.

Apude estas iom malgrandigita norma foto de mia proksima roksala lampo. Sube estas rezultoj de sama objekto fotitaj per selektiloj -ifx solarise kaj -ifx posterise kaj tre artistaj bildoj?

La selektilo -ifx solarise aliigas la plej brilajn kolorojn de foto tiel ke brila lampo aperas preskaŭ nigra, kvankam samtempe la pli malhelaj koloroj restas la originaj.

La plej perobjektivan bildon pri la iom malfacila forte kontraŭluma fota situacio tamen produktas la selektilo -ifx sketch kio estas prezentita sube dekstre. Eĉ la objektoj en ombro estas iom klare videblaj.

Nu, klare ke la grando de foto - kvanto da rastrunuoj en la foto - iom efikas al la rezulto. La selektiloj ja influas al grupoj da proksimaj rastrunuoj. Por malgrandaj fotoj estas la influo de tioj selektiloj relative forta kaj aliigo de fota grando iom aliigas la situacion.

La supoza grando de foto ( sen la ĉi tie uzataj selektiloj -w 640 -h 480 en kio ajn ordo ) por RPi-fotilo vario 2 estus la plej granda ebla 3280x2464 da rastrunuoj. Se ni fotus per tio kolosa grando, uzante ion tre "artistan" selektilon ( ekzemple -ifx oilpaint ) kaj nur poste malgrandigus tion rezulton ekzemple al grando 320x240, povus la fina rezulto esti iom alia. Miadivene estus la impreso de speciala "artista" selektilo tiam multe pli malforta en la fina multe malgrandigita foto.

Nu, sekve mi devas iom diveni kiel la fotilo vere laboras. Mi do povas iom erari en detaloj, sed ni pensu pli pri principoj ol precizaj nombroj. Ni pensu pri entjeroj. Ni rigardu la tutan grandan bildon. Ni estu liberale larĝanimaj ...

Kiam ni fotas rekte en la - miaopinie pli realisma - grando 640x480, enhavas ĉiu unuopa rastrunuo de foto multaj rastrunuoj de sensilo. Oni uzas la tiel nomatan "4 x 4 binning" ( aŭ ĉu eble "4 x 4 scaling"? ).

Kiam la rilato inter la mezuroj larĝeco:alteco restas la sama 4:3, mi opinias ke oni selektas unu rastrunuon de malgranda foto el proksimume 5 * 5 = 25 da rastrunuoj de sensilo, ĉar egalas proksimume 640 = 3280 / 5 kaj same proksimume egalas 480 = 2464 / 5 . Do miadivene oni ne uzas ĉiuj rastrunuoj de sensilo por foti, sed mi esperas ke la fota angulo restas proksimume la sama.

Do en larĝeco la entute 3280 rastrunuoj de sensilo estas reprezentitaj proksimume per la nur 640 rastrunuoj en la foto. En alteco la entute 2464 rastrunuoj de sensilo estas reprezentitaj proksimume per la nur 480 rastrunuoj en la foto. Ĉiu rastrunuo de foto do tiam miaopinie kolektas la lumon el 4 * 4 = 16 rastrunuoj de fotila sensilo, sed kelkaj rastrunuoj de sensilo estas ignoritaj.

Miadivene la "artista" selektilo estas aplikita nur post la fotado per la programo raspistill kaj mi asertas ke la fina rezulto estas iom alia se la grando de foto estas 3280 * 2464 da rastrunuoj aŭ ĉu la foto estas nur 640 * 480 . Mi nome asertas ke la "artista" selektilo laboras per la sama konstanta nombro da rastrunuoj en ambaŭ kazoj kaj ekzemple areo 8 * 8 da rastrunuoj en la pli malgranda foto reprezentas en la multe pli granda foto proksimume areon de 40 * 40 da rastrunuoj.

Kelkaj el tioj selektilaj alternativoj povus esti utilaj por komputila vidkapablo (angla "Computer Vision")? Kelkaj el tioj nome povas trovi bordojn de objektoj en foto kaj fari ilin pli bone videblaj tiel ke estos la objektoj pli facile identigeblaj.

Tamen restas la malfacila problemo ordinara de komputila vidkapablo ; ĉu vere temas pri bordoj kaj randoj inter apartaj memstaraj objektoj, aŭ ĉu estas simple nur limoj inter areoj de aliaj koloroj en unu kaj sama fizika objekto? Objektoj de reala mondo certe estas fakte aŭtentike 3-dimensiaj, sed unu norma foto proponas nur tute platan 2D-prezentadon de ili.

Ekzemple en la fotita "Michelin" -mapo de mondo ( el jaro 2000 ) klare estas multe da "randoj" fakte nur limoj inter alie koloraj areoj en la sama objekto.

Cetere mi povas mencii, ke 'Linux' fakte ignoras finon de nomo por datumo, ekzemple "foto.jpg", kaj uzas la veran tipon de datumo. Norme la programo raspistill produktas JPG -tipaj datumoj kaj certe oni povas nomi ilin per la norma fino ".jpg".

Tamen eblas ankaŭ produkti ekzemple PNG -tipan datumon kaj doni por ĝi la saman nomon "foto.jpg". Eblas nomi datumon kio fakte estas tipo JPG al "foto.png" kaj tamen la operaciumo 'Linux' ĉiam scias la veran tipon de datumo. 'PC/Windows' estas alia afero.

Kredeble indas esti singarda se oni provas transigi el RPi ekzemple fotan datumon kies nomo havas por la pli naiva operaciumo 'Windows' iom erarigan finon. 'PC/Windows' stulte konfidas al la fino de nomo.

'Linux' estas pli inteligenta kaj ekzamenas la enhavon de datumo.

Nia batalo kontinuos!

Kaj certe fine .......... NI VENKOS!

La Ambasadoro en Finnlando
de sendependa nacio
Mueleja Insulo


Menuo
Ĉefa paĝo (finna lingvo)