Feladat: I.211 Korcsoport: - Nehézségi fok: -
Füzet: 2009/április, 230 - 232. oldal  PDF  |  MathML 
Témakör(ök): Feladat

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

A képen látható objektumok szerkezetének egyszerűsítésére a vázkijelölés módszerét alkalmazhatjuk. Ennek alapötlete, hogy az objektumot annak egy pixel vastag ,,középvonalával'' helyettesítjük. Így az objektumok kevesebb információval leírhatók és a kapott vázak az objektumok összehasonlítására alkalmazhatók például a karakterfelismerésben.

 
 

Olvassunk be egy fekete-fehér képet, majd a fekete alakzatok vázát vékonyítási módszerrel határozzuk meg és jelenítsük meg. A vékonyítási módszertől azt várjuk el, hogy végpontot ne töröljön, őrizze meg az alakzatok összefüggőségét és egy pixel vastag vázat határozzon meg.
Algoritmus: Rendeljünk a fekete színhez 1 és a fehér színhez 0 értéket. A vékonyítás során az alakzat kontúrpontjain történhet változás, azaz az olyan 1 értékű pontokon, amelyeknek 8-környezetében van legalább egy 0 érték. A szomszéd pontokat a következőképpen jelöljük:
 
 

Első lépés: Az s0 pontot töröljük, ha a következő négy feltétel mindegyike teljesül:
 
 

A Szomszédszám (s0) az s0 pont 1 értékű szomszédjainak száma. Az Átmenet (s0) pedig a 01 átmenetek száma az s1,  s2,  ...,  s7,  s8,  s1 sorozatban.
Például:
 
 

Második lépés: Az i. és ii. feltétel ugyanaz, de az iii. és az iv. helyett az
 
 
feltételek teljesülése esetén töröljük a pontokat.
Az első lépésben az alakzat összes szélső pontját megvizsgáljuk és törlésre kijelöljük a négy feltételnek eleget tevő pontokat. A törlést a teljes átvizsgálás után hajtjuk végre. Ezután a második lépésben a feltételek második változatával jelöljük meg a törlendő pontokat. Majd ebben az esetben is a teljes kép elemzése után hajtjuk végre a törlést.
A váz meghatározásához a két lépést addig folytatjuk, amíg már nem tapasztalunk változást.
 
 

Készítsünk programot, amely a bemeneti adatállományban megadott fekete-fehér BMP kép vázát meghatározza és az eredeti képpel együtt a képernyőn megjeleníti. A program parancssori argumentuma legyen a képállomány neve. Más, eltérő képtípust is használhatunk, például RAW állományt, de akkor a program parancssori argumentuma a kép függőleges, vízszintes mérete és a képállomány neve legyen.
Beküldendő a program forráskódja (i211.pas, i211.cpp, ...), valamint a program rövid dokumentációja (i211.txt, i211.pdf, ...). A dokumentáció tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztőkörnyezetben fordítható és hogyan paraméterezhető.