Skip navigation

Munka saját fotókkal

Fotózá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

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

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 = 'IMG_20220505_200751.jpg'
FILE_OUTPUT = 'palcika_01.jpg'
MAX_WIDTH = 640
MAX_HEIGHT = 480

HEIF/HEIC formátum

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/.