Skip navigation

Képfeldolgozás Python + OpenCV környezetben

Témakörök

A jegyzet a Digitális képfeldolgozás tantárgy gyakorlatához és a Képfeldolgozó programcsomagok üzemmérnök informatikusoknak tantárgy kapcsolódó részéhez ad leírást. Számos képfeldolgozó keretrendszer érhető el, mi ezek közül az OpenCV függvénykönyvtárat használjuk fel. Az OpenCV alapvetően C++ függvénykönyvtár, de rendelkezik Python és Java nyelvi kötésekkel is. Viszonylagos egyszerű felhasználási módja miatt a Python nyelvet választjuk. Az alábbi fő témaköröket érintjük a félév során.

Általános áttekintés:

  • Tudományos Python: alapnyelv + számítási csomagok jellemzői, telepítésük és használati módjuk.
  • OpenCV használat Python nyelvből.
  • Digitális képalkotás és képreprezentáció.

Alacsony szintű képfeldolgozás:

  • Képpontok reprezentációja és elérése.
  • Pont-operációk: inverzió, gamma korrekció, fényesség/kontraszt, küszöbölés és vágás.
  • Hisztogram, hisztogram műveletek.
  • Zajterhelés, szűrés, konvolúció a képtérben.
  • Éldetektálás első- és másodrendű parciális derivált közelítésekkel.
  • Morfológiai műveletek.
  • Frekvenciatér és alapműveletei (Fourier transzformáció).
  • Képek geometriai transzformációi, interpolációs módszerek.

Magasabb szintű műveletek:

  • Szegmentálás: adaptív küszöbölés, régiónövelés, GrabCut.
  • Alakzatok detekciója: egyenesek, körök, kontúrok és összefüggő komponensek. Alakjellemzők számítása.

Technikai jellegű témakörök:

  • Videófolyam feldolgozása.
  • OpenCV képmegjelenítés, eseménykezelés, paraméterállítás.
  • MatPlotLib használat.

Az anyaghoz kapcsolódó példatár letölthető az alábbi megosztott mappából:

Jegyzet utolsó módosítása: 2024. április 8. 11:39.

Videó bemutatók

A jegyzethez videó bemutatók is tartoznak. Ezek az alábbi linken keresztül érhetők el:

Telepítés, beüzemelés

  • KfGyak_00_a_Jegyzet_Python_PyCharm_rovid.mp4: Jegyzet megnyitása, példatár letöltése. Előkészített Python környezet üzembe helyezése. Új PyCharm projekt létrehozása. Példatár beüzemelése, programok futtatása. (10:05 perc)
  • KfGyak_00_b_Jegyzet_Python_PyCharm_reszletes.mp4: Ez előző videó témaköreinek részletesebb magyarázata: Jegyzet használata. Előkészített Python környezet letöltése. PyCharm telepítése és új projekt létrehozása. Példatár beüzemelése, programok futtatása, nyomkövetés. (27:43 perc)

Első Python + OpenCV példaprogramok, PyCharm programfejlesztés, színes és szürkeárnyalatos reprezentáció

  • KfGyak_01_01_elso_teszt_py.mp4: Új Python forráskód létrehozása. Első Python + OpenCV példaprogram megírása. OpenCV függvények használata, PyCharm fejlesztési funkciók bemutatása. (35:51 perc)
  • KfGyak_01_02_bgr_gray_cvtColor.mp4: Színes és szürkeárnyalatos képreprezentáció, átalakítás a színterek között. (16:20 perc)

Digitális képreprezentáció

  • KfGyak_02_01_a_Kepmatrix_Egerkezeles_Billentyuzet.mp4: Numpy képmátrix indexelése, attribútumainak használata, értékadás és másolat készítés. OpenCV egér- és billentyűzetkezelés. (21:23 perc)
  • KfGyak_02_01_b_Szalkereszt.mp4: Szálkereszt rajzolás feladat megoldása. (7:50 perc)
  • KfGyak_02_02_Numpy_matrix_szeleteles.mp4: Részmátrixok definiálása és használata Numpy-ban. (13:22 perc)
  • KfGyak_02_03_Vaszon_rajzolas.mp4: OpenCV rajzoló függvényeinek használati módja. (5:39 perc)
  • KfGyak_02_04_Rajzolo_feladat_kiiras.mp4: Egyszerű rajzolóprogram feladat specifikációjának ismertetése, ötlet a megvalósításhoz. (4:00 perc)
  • KfGyak_02_05_Rajzolo_bovites.mp4: Az eygszerű rajzoló program kibővítése a könnyebb használathoz. (1:54 perc)

Képmátrix típusok és műveletek

  • KfGyak_03_01_Tipus_konverzio.mp4: Lebegőpontos Numpy tömb átalakítási lehetőségei np.uint8 típusra. Csonkolás, np.clip(), lineáris átalakítás, cv2.normalize(). (12:20 perc)
  • KfGyak_03_02_Kepmatrix_konverzio_imshow_imwrite.mp4: Szürkeárnyalatos kép átalakítása más képtípusokba, és ennek hatása a kép megjelenítésére (cv2.imshow()) és a képmátrix fájlba mentésére (cv2.imwrite()). (8:22 perc)
  • KfGyak_03_03_addWeighted.mp4: MR, PET és CT orvosi 2D képszeletek elegyítése többféle összeadási módszerrel: Numpy és OpenCV aritmetika, súlyozott összeg, cv2.addweighted(), OpenCV trackbar segítségével interaktívan állítható súlyokkal. (16:58 perc)
  • KfGyak_03_04_Auto_maszkolas_feladatok.mp4: Autó maszkolási feladatok megoldása. Vörös helyett ciánkék körvonal többféle módon, körvonal rajzolás szürkeárnyalatos képre. (7:39 perc)

Pont-operációk

  • KfGyak_04_01_Pont_operaciok_I.mp4: Invertálás, gamma-korrekció, tónusgörbék, világosság és kontraszt bemutatása. (37:54 perc)
  • KfGyak_04_02_Szurkearnyalatos_kuszoboles_vagas.mp4: Globális vágás és küszöbölés, valamint az interaktív példaprogram használatának bemutatása példákon keresztül. (28:44 perc)
  • KfGyak_04_03_Szines_kuszoboles.mp4: Színcsatornákra vonatkozó küszöbölési kritériumok kombinálása, kék színű terület szegmentálási példán keresztül bemutatva. (17:32 perc)

Hisztogram

  • KfGyak_05_01_Hisztogram_elemzes.mp4: Hisztogram fogalma, meghatározása és megjelenítése módja, a hisztogram elemzése. (23:28 perc)
  • KfGyak_05_02_histeq_bgr.mp4: Színes RGB kép hisztogram kiegyenlítése az YUV színtér használatával. (9:33 perc)
  • KfGyak_05_03_Hisztogram_muveletek.mp4: Képi megjelenítés javítása hisztogram műveletekkel. (15:15 perc)

Zajterhelés és zajszűrés képtérben

  • KfGyak_06_01_Mesterseges_zajterheles.mp4: Additív és só-bors zaj képhez adása szürkeárnyalatos és színes képek esetén. (24:38 perc)
  • KfGyak_06_02_Additiv_zaj_szurese.mp4: Additív zajterhelés példaprogram kiegészítése átlagoló szűréssel. Meghatározásra kerül az eltérés L1 norma értéke is. (15:45 perc)
  • KfGyak_06_03_Morfologiai_szures.mp4: Morfológiai szűrés megvalósítása min-max szűrőkkel. Kék színű terület szegmentálási eredményén javítás megoldása. (16:27 perc)

Éldetektálás

  • KfGyak_07_01_Elkereses_fogalmi_hattere.mp4: Alacsonyszintű élkeresés alapelve. (15:17 perc)
  • KfGyak_07_02_Gradiens_operatorok_magnitudo_kuszoboles.mp4: Gradiensvektor X és Y irányú parciális derivált közelítésekkel. Éldetekció a gradiensvektor magnitúdójának küszöbölésével. (9:33 perc)
  • KfGyak_07_03_Laplace_elojelvaltas.mp4: Éldetekció másodrendű derivált közelítés előjelváltás vizsgálatával. (8:42 perc)
  • KfGyak_07_04_Canny_eldetektor.mp4: Canny éldetektor működése és használata. (6:49 perc)

Szegmentálás

  • KfGyak_10_01_Adaptiv_kuszoboles_Niblack.mp4: Globális és adaptív küszöbölés összehasonlítása. Niblack módszer és változatai. (10:51 perc)
  • KfGyak_10_03_HSV_szinhasonlosag.mp4: Színhasonlóságon alapuló szegmentálás a HSV színtérben, a színtér rövid ismertetésével. (27:31 perc)
  • KfGyak_10_04_Regionoveles.mp4: Régiónöveléses szegmentálás bemutatása. (25:43 perc)
  • KfGyak_10_06_GrabCut.mp4: GrabCut szegmentáló módszer OpenCV implementációjának használata. (14:32 perc)

Geometriai transzformációk, interpolációk

  • KfGyak_08_01_Geometriai_transzformaciok.mp4: Geometriai transzformációk áttekintése, példaprogramok bemutatása. (23:55 perc)
  • KfGyak_08_02_Geometriai_transzformacio_feladatmegoldas.mp4: Forgatás nagyobb méretű képmátrixba feladat megoldása. (8:19 perc)

Geometriai leírás kinyerése

  • KfGyak_11_01_a_Hough_line_visualize_rho_theta.mp4: Rho és theta egyenes paraméterezés magyarázata Hough transzformációhoz. (6:34 perc)
  • KfGyak_11_01_b_Hough_line_algo_visualize.mp4: Hough transzformáció működésének vizualizálása. (21:20 perc)

Alakzat reprezentáció, alakjellemzők

  • KfGyak_11_03_a_Konturok_keresese_hierarchiaja.mp4: Az OpenCV findContours() függvényének részletes ismertetése, beleértve a topológiai hierarchia értelmezését is. (22:57 perc)
  • KfGyak_11_03_b_Kontur_alakjellemzo_szures.mp4: Kontúr reprezentációból alakjellemzők számítása és szűrés ezen jellemzők szerint. [17:31 perc]
  • KfGyak_11_04_Osszefuggo_komponensek_cimkezese.mp4: Összefüggő komponens címkézés és komponens statisztikák számítása. [9:18 perc]

Megjegyzés

Véleményeket, hibajelzéseket, módosítási javaslatokat a tanacs@inf.u-szeged.hu címen várok!

Szerző: Tanács Attila, Szegedi Tudományegyetem, 2018-2024.