<< | #261 ; Ni kontinue malbonetraktu Kalevala -artaĵojn |
>> |
Jes, kompato estas nur malsano (nova finna proverbo) kaj tion ni do kiel eble plej bone evitu. Malnova arto certe estas bona, sed oni ja povas ĝin prilabori kaj samtempe lerni novaj artifikoj.
Nova Python -programo por nia forta Raspberry Pi -mikrokomputilo. Ni unue legu du koloraj fotoj, grando la sama 400x400 por ambaŭ ĉi tiuj fotoj. Mi iom prilaboris la fotojn tiel ke oni eble povus ilin unuigi kaj ricevi interesan rezulton. Superfluaj partoj estas vere tute nigraj en ambaŭ fotoj, do ĉiuj 3 koloroj de tiuj punktoj estas nur nuloj (0).
from matplotlib import pyplot as plt import numpy as np import cv2 # OpenCV img1 = cv2.imread('/home/pi/Kuvat/vaepae.jpg') img2 = cv2.imread('/home/pi/Kuvat/aemmae.jpg') rows,cols,clr = img1.shape print ( rows, cols ) # 400 400 rows,cols,clr = img2.shape print ( rows, cols ) # 400 400 # BGR -> RGB por ke koloroj estu originaj por matplotlib b,g,r = cv2.split(img1) img1 = cv2.merge((r,g,b)) b,g,r = cv2.split(img2) img2 = cv2.merge((r,g,b)) # Du iom aliaj metodoj por unuigi la du fotojn al nova foto img3 = img1 + img2 plt.imshow(img3) plt.show() img3 = cv2.add(img1, img2) plt.imshow(img3) plt.show()
Unue mi nur simple sumigis la du originaj fotoj img3 = img1 + img2
(maldekstra ekzemplo) kaj la koloroj en la plej helaj punktoj havos koloroj tute aliaj. La duan foton mi produktis alie, per funkcio de OpenCV : img3 = cv2.add(img1, img2)
(dekstra ekzemplo).
La plej grandaj valuoj por la tri koloroj (RGB) de punkto estas ja 255. Se ni kalkulas ekzemple 100 + 157
estas la rezulto ja norme 257, sed koloro de punkto ne povas havi tiel grandan valuon en la foto kaj tial norma sumo kalkulas (100 + 157) mod 256 = 257 mod 256 = 1
, do tute alia rezulto por valuo por tio koloro. Sekve la hela kolora punkto aperas tute alia.
Ni rigardu ekzemple la iom helan femuron de kuŝanta filo. Kredeble la haŭto de femuro estas jam iom hela en la dua foto. Do estas tie multe da ĉiuj koloroj RGB ; Red ruĝa, Green verda, Blue blua. Evidente en la koloro de homa haŭto estas speciale multe da ruĝa koloro. En la unua foto tamen ankaŭ estas iom da ruĝa koloro en la sama loko.
Se ni simple sumas la kolorojn, kiel en la maldekstra ekzemplo, estus en la suma punkto jam tro multe da ruĝa koloro en la piedo de mortinto. Tial la valuoj de ruĝa koloro en kelkaj punktoj "superfluas" same kiel supre en la ekzemplo (100 + 157) mod 256 = 257 mod 256 = 1
. Punkto kun tro multe da ruĝa fariĝas punkto kun nur iom da ruĝa. La bluaj koloroj de tiuj punktoj tamen restas sub la valuo 256 kaj tial ili ne "superfluas". Sekve la piedo de filo aperas blua en tiuj lokoj.
La eterna kantisto duondio Väinämöinen aperas iom verda en la foto de simpla sumo. Mi pensas ke estis iom multe da verda kaj ruĝa koloro en tiuj lokoj en la unua foto. La ruĝa koloro tamen "superfluis" en la simpla sumo kaj tial la verda venkis en la rezulto en tiuj lokoj.
La prudenta funkcio de OpenCV cv2.add(img1, img2)
tamen ne lasas la suman rezulton por "superflui" la limon, la plej grandan permesitan valuon 255. Tial la koloroj en la dekstra ekzemplo aperas normaj.
Ni ankaŭ notu ke la iom malhela Cigno de Tuonela tute ne aliiĝas kiam ni sumas la tute nigran koloron. Nigra havas neniom da lumo, neniom da koloroj, kaj tial la cigno en lando de mortintoj aperas la sama en la sumaj bildoj.
Eblas ankaŭ miksi la du fotoj en dezirata proporcio tiel ke oni selektas kiom da ĉiu foto oni volas. Jen ni selektos 0,7 da Väinämöinen kaj 0,8 da maljuna patrino. Se ni selektus ekzemple nur 0,4 kaj 0,6 da ili (sume 1,0), estus la rezulto iom malhela. Do la sumo de nombroj ne bezonas esti 1,0.
img4 = cv2.addWeighted(img1, 0.7, img2, 0.8, 0) plt.imshow(img4) plt.show()
Fine ni volas tute anstataŭigi parton de foto de granda kantisto (la unua foto img1
) per la funebranta patrino (la dua foto img2
) ĉe la rivero de lando de mortintoj (finne Tuonela). Do nenia nova bildo kiel rezulto, sed la origina foto img1
estos parte alia.
roi = img2[200:400, 0:400] # vicoj 200-400, ĉiuj kolonoj img1[200:400, 0:400] = roi plt.imshow(img1) plt.show()
Nu, la rezultaj bildoj eble ne estas tre belaj, sed espereble ili tamen donas iom da rekta instrumetodo pri la afero. Estus ja tre preferinde ke la originaj fotoj ne havus tiaj superfluaj nigraj rektanguloj kun akra rando. Pli bone oni unue malheligu la originan foton tiel ke la plej malhelaj normaj partoj de foto estas tute nigraj.
La mense stabila kaj tre maljuna Väinämöinen (li nome estis jam 700 jaroj kiam li venis el la utero de lia patrino) nun aperas kvazaŭ same kiel la fama orienta "Spirito de botelo". Mi tamen ne kredas ke la maljuna patrino bezonis la faman duondion por solvi sian problemon, la morta filo. Kaj tian mirindan botelon ŝi apenaŭ havis kune en Tuonela.
Por kiel eble plej belaj rezultoj oni certe prefere laboru mane. Sed ni forte laboros kaj ni iom post iom pli bone lernos.
Kaj certe fine ..........
NI VENKOS!
La Ambasadoro en Pori de sendependa nacio Mueleja Insulo |