Munka saját fotókkal

Fotózás

Elrejtés

Életünk szerves részét képezik a fotók, amelyek a fizikai világról készülnek az elektromágneses spektrum látható fény tartománynak mérésével. A fotók kiegészítik az újsághíreket, szakkönyvek anyagát, valamint a televíziózás és videótartalmak áramoltatott megjelenítése mozgóképi információt biztosít. Ezeket szinte mindenki használja napi szinten.

Az 1830-as években megjelent első kamerák, valamint azt követően még sok évtizeden keresztül a fotókészülékek fényérzékeny anyagok szerkezeti változásain alapuló képalkotást valósítottak meg. Az 1990-es évektől kezdődően egyre inkább a digitális érzékelők veszik át ezt a szerepet. A modern okostelefon platformok 2007-es indulásával minden okostelefon tartalmaz egy vagy több digitális kamera modult, így a képkészítés gyakorlatilag mindenki számára elérhető, a képek számítógépre, felhő tárhelyekre menthetők, szociális hálózatokon közzétehetők.

A mai okostelefonok változatos méretű képek készítésére alkalmasak. A fő kamera modul jellemzően 12 megapixel (MP – millió képpont képenként) felbontású képet készít, de kiválasztható lehet ennél kisebb, de jóval nagyobb (48 MP, 64 MP, 200 MP) is.

Digitális kamera vagy okostelefon használatakor a kép az eszközön fájlban tárolódik. Onnan Internet kapcsolat vagy számítógéppel való összekötés segítségével számítógépre menthetők.

Képek tárolása fájlban

Elrejtés

A képeink gyakran fájlból kerülnek beolvasásra, illetve az eredmények fájlba íródnak ki. Mint láttuk a képmátrix tárolása képmátrixban, számértékekkel történik, így a fájlba írás megoldható.

Figyelnünk célszerű viszont a képi adat tárolási mennyiségigényére. Például egy 24 megapixeles (24 millió képpont érzékelésére képes szenzorral rendelkező) kamerával készült kép 3 bájtos RGB képpont-kódolást feltételezve 24 x 3 = 72 megabájtot foglal. 15 darab ilyen képpel már 1 GB felett járunk!

A fájlban történő tároláskor ezért célszerű kihasználni a képi adatban található redundanciákat. Például szöveget ábrázoló képernyőképek esetén jellemzően nagyméretű homogén, vagyis egyforma színnel rendelkező képpont területek találhatók. Futáshossz kódolással ezt tömörebben leírhatjuk. Egy másik megközelítés esetén a mátrixban gyakrabban előforduló számértékek rövidebb (akár 1 bites), a ritkán előfordulók hosszabb (sok bitből álló) kódszót kapjanak. Ilyet állíthatunk elő például a Huffman kódolással. Fotók esetén az úgynevezett transzformációs kódolások a népszerűek (DCT, wavelet). Ezek nagymértékű méretcsökkenést képesek okozni, viszont ekkor a képmátrix eredeti állapota nem, csak egy közelítése állítható vissza. Ezt a megközelítést veszteséges tömörítésnek nevezik.

Veszteségmentes tömörítés

  • Pontosan visszakapjuk a képmátrix elemeinek intenzitás- vagy  színértékeit.
  • Nagyobb fájlméret.
  • Vektoros vonalrajzokról, szövegekről, képernyőképekről készült képek, valamint orvosi képek esetén használatos.
  • Néhány ilyen fájlformátum: PNG, TIFF, BMP, DICOM.

Veszteséges tömörítés

  • Kisebb-nagyobb eltérések előfordulhatnak az eredeti szín/intenzitásértékekhez képest, vagyis nem pontosan ugyanazt a színértéket kapják a kitömörítés után, mint ami eredetileg volt.
  • Sokkal kisebb fájlméret. Állítható veszteségaránnyal dolgozhatunk.
  • Fotók esetén javasolt.
  • De-facto szabvány formátum: JPEG (fájlkiterjesztése jpg). A legtöbb digitális kamera hardver szinten támogatja.
  • Az Apple cég készülékei alapértelmezetten a HEIF formátumot használják, ami jelenleg nem teljeskörűen támogatott.

Nyers (RAW) formátum jellemzői (veszteségmentes, profibb eszközökön)

  • „Előhívatlan”, nyers adat, az érzékelő által mért közvetlen számértékek.
  • Geometriai korrekció nélkül (például a lencsetorzítás hatása látható).
  • Az expozíció bizonyos paraméterei utólagosan állíthatók (színhőmérséklet, világosság, ...).
  • Gyártó-specifikus formátumok (RAW, ARW, CR2, DNG, ...).

RAW feldolgozó programok

  • RawTherapee (multiplatform, ingyenes)
  • Darktable (multiplatform, ingyenes)
  • Lightroom (Windows, Mac, fizetős)
  • Capture One 8 (Windows, fizetős)
  • Kamerához adott gyártói szoftverek

Saját fotók használata Python + OpenCV programjainkban

Elrejtés

Python + OpenCV segítségével saját fotókkal is dolgozhatunk, a képfájl nevének megadásával a cv2.imread() függvénnyel beolvashatjuk. Sok megapixel felbontású kép megfelelő megjelenítésére viszont a cv2.imshow() nem alkalmas, mert minden képpontot egy képernyőpontnak megfeleltetve a kép nagyrésze kilóghat a képernyőtartományból. Ezen túlmenően nagy méretű képekkel a munka jóval lassabb is lehet.

A példatár példaprogramjainak saját fotókon való teszteléséhez célszerű az eredeti fotóinkat kisebbre méretezni. Ehhez a 08_photo_resizer.py példaprogramot használhatjuk fel. A forráskód működését egyelőre nem kell pontosan érteni, az a geometriai transzformációk tárgyalása után lesz világos. A forráskód elején meg kell adnunk a beolvasandó és a kiírásra kerülő átméretezett képfájlok neveit, valamint az új kép maximális szélességét és magasságát. Ezután a program a bemeneti fotó szélesség-magasság arányát megtartva átméretezi úgy, hogy a szélesség és a magasság ne legyen nagyobb a megadott értéknél. (Az arányos átméretezés miatt a megadott maximumnál kisebb szélességet vagy magasságot kaphatunk.) Az elmentett képfájlból beolvasva a már megfelelő méretű és elnevezésű képpel dolgozhatunk a programjainkban.

FILE_INPUT = 'DSC02620.jpg'
FILE_OUTPUT = 'DSC02620_rs.jpg'
MAX_WIDTH = 800
MAX_HEIGHT = 600

HEIF/HEIC formátum

Elrejtés

Az Apple cég az utóbbi években a készülélkein (iPhone, iPad szériák) a JPEG formátum helyett a saját fejlesztésű HEIF/HEIC formátumot használja a fotók tárolására, amit a kameraszoftver készít. Jelenleg ez a formátum nem támogatott az OpenCV függvénykönyvtárban. Ha ilyen készülékkel készült saját fotót szeretnénk használni, JPEG formátumú képre lesz szükségünk. Ezt többféle módon elérjetjük.

  • Az iPhone készülék beállításokban kiválaszthatjuk, hogy JPEG formátumban tárolódjanak a fotók. Lépések: Settings / Camera / Formats / Most Compatible (Beállítások / Kamera / Formátumok / Leginkább kompatibilis).
  • A már elkészült HEIC formátumú fotókat JPEG formátumra konvertáljuk. Ez megtehető a készüléken, a számítógépre szinkronizáláskor, számítógépen vagy weben konverter használatával. Számítógépen erre a célra alkalmas lehet a GIMP szoftver. Egy lehetséges online konverter: https://heictojpg.com/.

További, alaposabb leírás található angol nyelven ezen az oldalon: https://skylum.com/how-to/3-effective-ways-how-to-convert-heic-to-jpg-on-iphone, valamint magyarul itt: https://ithon.hu/jpeg-heif-heic-es-proraw-mi-a-kulonbseg/.

Saját tesztkép gyűjtemény összeállítása

Elrejtés

Állítson össze egy tesztkép gyűjteményt az alábbiak szerint, amit a példatár használata során használni tud majd!

Készítsen egy képernyőképet, valamint fotókat saját kamerával vagy okostelefonnal, az alábbi témakörökből legalább 1-1 darabot!

  • Képernyőkép számítógép képernyő részletről
    • Vektorgrafikus elemekből mintavételezett raszterkép (vonalak, szöveges részek; pl. alkalmazás beállítások képernyő, Excel táblázat, stb.)
    • A képernyőkép mentés mérete ne legyen nagyobb 1000 képpont szélességnél és 800 képpont magasságnál! (Vagyis például ne teljes full HD felbontású legyen.)
    • Megoldás lehetséges menete: Alt + Print Scrn; beillesztés (Ctrl + V) egy képmegjelenítő programba (pl. Paint, IrfanView), PNG fájlba mentés.
  • Portré (saját, vagy fotó más ember/emberek arcképével)
    • Győződjenek meg róla, hogy a képen szereplő személyek hozzájárulnak a kép használatához. (Internetes kép esetén ez nem szükséges.)
  • Épületen belül készült fotó, szokásos bútorzattal (szoba, konyha, tanterem, folyosó, ...)
  • Tájkép/utcakép világosban
  • Tájkép/utcakép gyengébb fényviszonyok között (este/éjszaka)
  • Fotó könyvből (fehér háttér, fekete betűk)
  • Közüzemi óraállás (áram, gáz, víz, …) vagy gépjármű műszerfal (mutatós vagy számjegyes kijelző)
  • Fotó színes lapról: plakát, reklám szórólap, színes újság, bolti nyitva tartás, ... (színes háttér, betűk, fotó részletek különböző elrendezésben)
  • Fotó társasjáték tábláról, kártyalapról, dobókockáról, ...
  • Autó látható rendszámtáblával

A fotókat vigye át számítógépre és alakítsa megfelelő formára.

  • A példatár 08_photo_resizer.py példaprogramjával alakítsa megfelelő méretűre (legfeljebb 1000 képpont szélesség, 800 képpont magasság; képarány megtartással).
  • Fájlba mentéskor adjon a témát leíró fájlnevet (Pl. utcakep_vilagos.jpg).
  • A képernyőkép méretét nem kell módosítani, de figyeljen arra, hogy megfelelő méretű legyen (lásd lentebb a részletesebb leírásban)!
  • A képernyőkép PNG, a fotók JPG formátumban legyenek tárolva!