Egy (k) küszöb esetén [0, 1] intenzitástartományt feltételezve (v 2 v 2 ):

Hasonló dokumentumok
Szürke árnyalat: R=G=B. OPENCV: BGR Mátrix típus: CV_8UC3 Pont típus: img.at<vec3b>(i, j) Tartomány: R, G, B [0, 255]

Szürke árnyalat: R=G=B. OPENCV: BGR Mátrix típus: CV_8UC3 Pont típus: img.at<vec3b>(i, j) Tartomány: R, G, B [0, 255]

Lényege: valamilyen szempont szerint homogén csoportok képzése a pixelekből. Amit már ismerünk:

Az objektum leírására szolgálnak. Mire jók? Sokszor maga a jellemző az érdekes: Tömörítés. Objektumok csoportosítására

Minták automatikus osztályba sorolása a mintát leíró jellemzők alapján. Típusok: felügyelt és felügyelet nélküli tanuló eljárások

Él: a képfüggvény hirtelen változása. Típusai. Felvételeken zajos formában jelennek meg. Lépcsős

Képfeldolgozás haladóknak Lovag Tamás Novák Gábor 2011

Példák jellemzőkre: - minden pixelérték egy jellemző pl. neurális hálózat esetében csak kis képekre, nem invariáns sem a megvilágításra, sem a geom.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Programozás Minta programterv a 1. házi feladathoz 1.

3. Szűrés képtérben. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozás alapjai. 5. előadás

Felvételi tematika INFORMATIKA

BME MOGI Gépészeti informatika 4.

Bevezetés a programozásba I.

1. Alapok. Programozás II

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

1. Jelölje meg az összes igaz állítást a következők közül!

Szoftvertechnolo gia gyakorlat

Informatika terméktervezőknek

INFORMATIKA javítókulcs 2016

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

3. Osztályok II. Programozás II

Programozás I gyakorlat

I. Internetes keresési feladatok (ajánlott idő: 20 perc)

Bevezetés a programozásba. 9. Előadás: Rekordok

7. Régió alapú szegmentálás

Új Magyarország Fejlesztési Terv Tájékoztató A ZMNE-n bevezetett wifi szolgáltatásról KMOP-4.2.1/B

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Java II. I A Java programozási nyelv alapelemei

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

BME MOGI Gépészeti informatika 7.

Fejlett programozási nyelvek C++ Iterátorok

BME MOGI Gépészeti informatika 5.

BME MOGI Gépészeti informatika 13.

Szoftvertervezés és -fejlesztés I.

Képfeldolgozás jól párhuzamosítható

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

2. Pont operációk. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba I.

Occam 1. Készítette: Szabó Éva

Java II. I A Java programozási nyelv alapelemei

Adatszerkezetek és algoritmusok

Pontműveletek. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar február 20.

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Egyszerű példaprogramok gyakorláshoz

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Képfeldolgozás. Képi információk kinyerése Fényképek minőségének javítása

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Képfeldolgozás jól párhuzamosítható

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Struktúra nélküli adatszerkezetek

BME MOGI Gépészeti informatika 6.

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

C# feladatok gyűjteménye

Option Explicit Option Base 1

Új Magyarország Fejlesztési Terv Tájékoztató A ZMNE-n bevezetett wifi szolgáltatásról KMOP-4.2.1/B

Programozási nyelvek JAVA EA+GY 1. gyakolat

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

7. gyakorlat Sorozatok, Fájlkezelés

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Digitális képfeldolgozás feladatgyűjtemény

Generikus osztályok, gyűjtemények és algoritmusok

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Algoritmizálás + kódolás C++ nyelven és Pascalban

AWK programozás, minták, vezérlési szerkezetek

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Lekérdezések I. Egyszerű választó lekérdezések

A színkezelés alapjai a GIMP programban

8. gyakorlat Pointerek, dinamikus memóriakezelés

Microsoft Excel Gyakoriság

Bevezetés a programozásba. 5. Előadás: Tömbök

Egyszerű programozási tételek

Objektumorientált Programozás III.

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

.AA Megoldó Alfréd AA.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Java és web programozás

STATISZTIKA. A maradék független a kezelés és blokk hatástól. Maradékok leíró statisztikája. 4. A modell érvényességének ellenőrzése

CÍMJEGYZÉK ÜDVÖZLÜNK A TALK FUSION CÍMJEGYZÉK HASZNÁLATI ÚTMUTATÓJÁBAN

Kurzuseredmények születési és kampányadatokkal

Átírás:

A kép (I) intenzitástartományt folytonos tartományokra osztjuk. Az eredményképen minden egyes tartományhoz egyetlen (egyedi) értéket rendelünk. Egy (k) küszöb esetén [0, 1] intenzitástartományt feltételezve (v 2 v 2 ): I p = ቊ v 1, ha I p < k, különben v 2 Küszöbsorozat (0 < k 1 < k 2 < k n 1 < 1) esetén [0, 1] intenzitástartományt feltételezve (a v i sorozat a tartományokhoz rendelt, különböző értékeket jelöli): v 1, ha k 0 I p < k 1 I p = v 2, ha k 1 I p < k 2 v n, ha k n 1 I p 1

A küszöböléshez hasonlóan folytonos részekre osztjuk a kép (I) intenzitástartományát, azonban nem minden tartományhoz rendelünk új értéket. Pl.: egy sávon belül meghagyjuk az eredeti értékeket. Egy (k) küszöb esetén [0, 1] intenzitástartományt feltételezve: I p = ቊ 0, ha I p < k I(p), különben Sávkivágás 0 < k 1 < k 2 < 1 küszöbértékek esetén [0, 1] intenzitástartományt feltételezve: I p = ቊ I p, ha k 1 I p k 2 0, különben

threshold(inputarray src, OutputArray dest, double kuszob, double maxertek, int eljaras ); Küszöbölés: 1, ha src p kuszob THRESH_BINARY : dest p = ቊ 0, különben 0, ha src p kuszob THRESH_BINARY_INV : dest p = ቊ 1, különben THRESH_OTSU : a küszöbértéket automatikus módon határozza meg küszöb: az az érték, amelynél az előtérhez ill. a háttérhez sorolt pontok intenzitásértékeinek szórása (előtér_szórása + háttér_szórása) minimális. Vágás pl.: maxvalue, ha src p kuszob THRESH_TRUNC : dest p = ቊ src(p), különben THRESH_TOZERO : dest p = ቊ src(p), ha src p kuszob 0, különben

Tartomány kiválasztása (sávkijelölés): inrange(inputarray src, Scalar kuszob1, Scalar kuszob2, OutputArray dest); Küszöbölés mátrix operátorokkal dest = src > kuszob dest = src <= kuszob Kombinálható bitoperátorokkal: dest = (src < 100) (200 < src)

Készíts egy programot, mely különböző küszöbértékek (20, 40, 60,... ) mellett küszöböli a képet: https://arato.inf.unideb.hu/szeghalmy.szilvia/kepfeld/img/sejtek.png Az eredmények összevetésénél előnyös, ha külön-külön ablakokban jelenítjük meg az eredményt. Az ablakok elrendezéséről a következő módon gondoskodhatsz: Ciklus: Hozz létre egy ablakot az alábbi utasítással. Az ablaknévben szerepeljen a küszöbérték. namedwindow(ablaknev, WINDOW_NORMAL); Küszöböld a képet és jelenítsd meg az ablakban. Méretezd át az ablakot (ne a képet) egy előre rögzített méretre (pl: 300x300). resizewindow Mozgasd el úgy az ablakot, hogy ne kerüljön rá az előző ablakokra. movewindow Várakoztatás billentyűzet leütésre.

Bizonyos problémáknál jól meghatározható, hogy az előtér a kép hány százalékát teszi ki. (pl. tesztek, űrlapok feldolgozása) Emeljük folyamatosan a küszöböt és figyeljük az arányt? => több százszor is bejárhatjuk a képet Helyette: járjuk be egyszer és készítsünk egy hisztogramot A kumulált hisztogram i. eleme megadja, hogy hány pont volt a képen, ami az i értékű vagy annál sötétebb. Töltsd le a következő képet és olvasd be szürkeskálában: https://arato.inf.unideb.hu/szeghalmy.szilvia/kepfeld/img/scanned3.png Hozz létre egy hisztogramot a világosságértékek alapján Ha az előző leírás alapján nem megy, ugorja a következő diára. Kezd el a tömb elejétől összegezni a tömböt: for(int i = 0; i<histo.rows; ++i) Amint az összeg és az összes képpont hányadosa nagyobb, mint 0.1, küszöbölj i-vel és lépj ki a ciklusból.

calchisto( InputArrayOfArrays kepek, ); const vector<int> csatornak, InputArray maszk, const vector<int> hiszto_meretek, const vector<float> hiszto_tartomanyok,//alsóhatár,felső határ,... bool akkumlalt Magyar fordítás: kepek: vector<mat> struktúrába "csomagolt" képek (sokszor csak 1) csatornak: melyik kép, mely csatornája legyen használva (a számozás folytonos, tehát ha az 1. kép 3 csatornás, akkor a második kép 0. csatornája a 3-as, 1. csatornája a 4-es stb.) maszk: egy fekete/fehér (CV_8UC1) kép, ahol fehér, azt veszi figyelembe a többi képen a hisztoszámítás során. (ha ki akarod hagyni: noarray() ) hiszto_meretek: pl. szürkeskálánál 256 különböző érték van, de előfordulhat, hogy nem akarunk ennyi szürkeségi szintet. hiszto_tartomanyok: pl. 8UC3-s RGB kép R, G, és B csatornájánál is [0, 255], de pl. 8UC3-s HSV kép H csatornája csak [0, 179]. Ne feledd összehangolni a hiszto_merettel! akkumlalt: ha true-ra állítod, akkor a képek között nem nullázza le a hisztogram tömböt.

vector<mat> kepek; kepek.push_back(img); // egy képet használunk vector<int> csatornak; csatornak.push_back(0); //a képnek a 0. csatornáját használjuk vector<int> hiszto_meretek; hiszto_meretek.push_back(256); //szürkeárnyalatok száma vector<float> hiszto_tartomanyok; hiszto_tartomanyok.push_back(0.0f); //hol kezdődik a tartomány hiszto_tartomanyok.push_back(255.f); //meddig tart //accumlate: marad false (nullázza a hisztogrammot) calchist(kepek, csatornak, noarray(), histo, hiszto_meretek, hiszto_tartomanyok, false);

Lokális környezetre értelmezett adaptivethreshold( InputArray src, OutputArray dest, double maxval, int adaptivmethod, int thresholdmethod, int block_size, double C); thresholdmethod: THRESH_BINARY THRESH_BINARY_INV adaptivemethod : ADAPTIVE_THRESH_MEAN_C (küszöb = a blokk alatti pontok intenzitásának átlaga C) ADAPTIVE_THRESH_GAUSSIAN_C (küszöb = a blokk alatti pontok súlyozott átlaga - C)

A feladatod egy GI-s hallgató által fényképezett régi adatszerkezet zh küszöbölése. https://arato.inf.unideb.hu/szeghalmy.szilvia/kepfeld/img/zh.jpg Az eredményképen a szöveg fekete háttér előtt, fehérrel jelenjen meg. Az ablak méretét és az átlagértékből való levonást a felhasználó választhassa meg. Trackbar létrehozása (ha cikluson belül használod, akkor nem szükséges eseménykezelőt írni): int sugar = 20;... createtrackbar("kuszob:", "zh", &sugar, 255);

Eseménykezelő: void onchange_adthreshold(int pos, void* userdata){ } Mat src = *(cv::mat*)userdata; Mat dest; //kuszobold a képet //jelenítsd meg az eredményt (dest) Trackbar hozzáadása a "zh" ablakhoz, összerendelés az eseménykezelővel: Mat img = imread(<kép_elérési_út>, IMREAD_GRAYSCALE);... int sugar = 20; createtrackbar("sugar:", "zh", &sugar, 20, onchange_adthreshold, &img);... waitkey(0);