Sziasztok!
4 különféle keret áll rendlkezésre, melyek előfordulását kell megvizsgálnom számos képállományon. A beazonosított területeket el kell mentenem különböző fájlokban.
A dolog pikantériája, hogy egyes képállományokban a vizsgálandó letétel illeszkedése szemmel láthatóan kb. 80%-osan stimmelnek.
Gondoltam, feladat elvégzéséhez az imagemagick program a legalkalmasabb.
Ti hogyan oldanátok meg, merre indulnátok el?
- 1639 megtekintés
Hozzászólások
OpenCV + egy erős kávé.
- A hozzászóláshoz be kell jelentkezni
Kicsit konkrétabban, ha lehetne....
-- A "keret" a kép kerete, tehát a szélén fut körbe vagy egy kis téglalap, ami akárhol lehet a képen és meg kell találni?
-- Ha nem a kép széléről van szó, hanem itt-ott felbukkanó téplalapokról, akkor ezek el is lehetnek forgatva? Vagy legalább azt tudjuk, hogy pixelhatárral illesztve vannak?
-- "kb 80%-osan stimmlenek": a képponotk 80%-a egzatul stimmel, vagy az RGB-értékek max 20%-nyit térnek el?
Amíg ezeket nem tudja az ember, enm lehet válaszolni.
- A hozzászóláshoz be kell jelentkezni
igazad van, pontosítok:
-Vannak kerettel rendelkező minták, melyek egyike illeszkedik a keret vonatkozásában legalább 80%-osan egy nagyobb kép tartalmára. A nagyobb képen ilyen keretben lévő tartalmat kell elmenteni.
- Nincs csak egy előfordulás egy nagyobb képben. Nincs elforgatás, ám a nagy képben lévő keretes ábra helye eltérő.
- A szemrevételezés alapján a kb. 80%-os a keret-hasonlóság mind pixelben, mind színben értendő.
- A hozzászóláshoz be kell jelentkezni
A "keretek" hogy vannak megadva?
Adott egy kisebb kép, mely tartalmazza őket? Ha igen, akkor mi van a belsejükkel? Az hogy an van meghatározva, hogy belül mi nem számít keretnek?
Vagy leírható így, hogy "300x200-as fekete keret 5-ös vonalvastagsággal"?
- A hozzászóláshoz be kell jelentkezni
A kis, keretes képminták belsejei üresek. Több méretű kis kép létezik, de mindegyik deffiniálható ekzakt méretekkel és a falvastagság is megadható.
- A hozzászóláshoz be kell jelentkezni
"üres"=???
???=
a) fehér (R,G,B=255) és a kereten sehol máshol nem lép ez fel
b) alkalmas képformátumban, pl. PNG-ben átlátszó?
c) a kép mellé mellékelve van egy "K" kis szám, hogy a kép szélső "K" sora tekintendő keretnek?
- A hozzászóláshoz be kell jelentkezni
b, üres. (az egyszerűség és a pontosabb ileszthetőség kedvéért)
c, ezt nem igazán értem.
Lehet, hogy példány keresztül pontosítok: nagyából azt kellene elképzelni, hogy egy deszktopon van valahol egy darab ismert méretü ablak, de kb. 50%-os transparenttel és a háttérkép a keretnek ''bezavar'', ám magának az ablaktartalomnak nem. És rendelkezésre áll a képernyőkép. Itt már el is lehet hagyni az eredeti keret illesztését,mert fentebb felnyitottad a szemem azzal, hogy egyszerűen a minták méretével is lehet kombinálni.
- A hozzászóláshoz be kell jelentkezni
Ezt a feladatot tipikusan az emberi szemhez tervezték! ;)
De ha ez nem játszik akkor, amit én esetleg próbálnék:
1. a keretek elhelyezésének körülbelüli megtippelése a nagy képen (élkereséssel) -> de ha a kereteken kívül is sok kontrasztos és tökéletesen vízszintes v. függőleges vonal van a képen akkor ez nem válik be...
2. a nagy képen a tippelt keretek környékén (X pixel sugarú körben) futtatott brute-force a keretek egyezésének mérésére (Egyszerű négyzetes hibával pl. Természetesen nem kell minden pontra kiszámítani a hibát elég egy megfelelő méretű random minta)
(3. A legjobb tippeket kirajzolni egy embernek, hogy szemmel ellenőrizze ;)
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
<troll hozzáállás="rosszindulatú">
Ez valami captcha-fejtéshez kell?
</troll>
Ugyan nem értek az Imagemagickhez, de az a gyanúm, hogy egy ilyen problémát nehéz lesz egy általános célú, parancssorból paraméterezhető programmal megoldani, legalábbis úgy, hogy az az elvárt hatékonysággal működjön.
Szerintem nem úszod meg, hogy leprogramozz egy cél-algoritmust akár C-ben/kedvenc programnyelvedben, akár valamelyik képfeldolgozó keretrendszerben.
Utóbbiakhoz nem értek, előbbiben be lehetne tölteni a forrásképeket és a kereteket 2D tömbökbe és valamiféle 2D korrelációs függvényeket számolgatni rájuk.
- A hozzászóláshoz be kell jelentkezni
Valószínű tényleg saját kód kell, hogy épeszű időben lefusson.
A korrelációval csak az a baj, hogy az nem számít, hogy mi van a kereten belül és kívül. A keretet meghatározó függvény és a képfüggvény tartója tehát nem azonos. Persze, kiterjeszthető a korreláció fogalma erre is, de én nem tudom, hogy ebben az esetben hogyan lehet a gyor korreláció számoló FFT-s dolgokat alkalmazni.
- A hozzászóláshoz be kell jelentkezni
Perverz ötlet: a keretet, mint kernelt felhasználva dekonvolúciót végrehajtani, aztán az eredményen kiugró csúcsokat keresni.
Persze bármilyen konkrét implementációnál fellépnének olyan dolgok, hogy - ha nem teljesen azonosak az előre megadott keretek és a célképeken lévő előfordulásaik, akár eltérő fényesség, színek vagy jpg artifactok miatt - bármilyen feldolgozás előtt még valahogy normalizálni is kell a célképeket.
Igazából örülök, hogy nem nekem kell ezt a problémát megoldani :)
- A hozzászóláshoz be kell jelentkezni
Hazaértem, és pontosítani tudok még jobban:
- a nagy képen véletlenszerű helyen helyezkedik el egy - pl. - 201x253-as RGB #000500 (majdnem fekete) keret, melynek a vastagsága 2 pixel. Egy és csakis egy ilyen keret létezik a képen. A keretben foglalt képet kell elmentenem. (Rosszul emlékeztem, nem a keret átlátszó, hanem a tartalma. De az már mellékes.)
- A hozzászóláshoz be kell jelentkezni
Ha fix a keret mérete és alakja, akkor menj végig vele minden képponton és keress RGB-ben hasonlóságot. Érdemes kivonni és akkor a legkisebb nyer. Mint egy csúszóablak.
Ha nem fix a keret, akkor már gáz van. Olyan algoritmus kell, ami megtalálja a képen a keret-szerű területeket. Definiálnod kell, hogy mi az a keret. Pl 2-10 pixel széles, négyszög formájú, stb. Ha ez megvan, akkor indulhat a sorvizsgálat. Nem akarom megoldani helyetted, gondolkodj te is egy kicsit.
- A hozzászóláshoz be kell jelentkezni
és ha az átlátszó részeket keresed meg?
- A hozzászóláshoz be kell jelentkezni
Ha mar kepfeldolgozas, esetleg ha feltennel 4-5 minta kepet valahova, akkor nem kerdezne ra mindenki apro reszletekre.
Csak egy otlet.
Imagick jo lehet elofeldolgozashoz (meg a vegen a kivagasra), de kizart, hogy legyen beepitett rutinja erre.
--
What's the difference between the Israeli navy and Somali pirates?
If you negotiate with Somali pirates,you can prevent them from murdering their victims. - sickipedia
- A hozzászóláshoz be kell jelentkezni
nem használtam még ezt a progit, de gugli "imagemagick correlation" első találatai közt az első honlap beli:
http://www.imagemagick.org/Usage/compare/
(nem néztem most jobban de talán a tényleges első találat még jobb, szinte kész van)
(leggagyibb esetben egy (bash) scripttel, mipmappel kiegészítve is meg lehet írni)
- A hozzászóláshoz be kell jelentkezni
A compare-t próbálgattam korábban, de túl lassú, és sajnos nem azt az eredményt hozza, amit szeretnék.
- A hozzászóláshoz be kell jelentkezni
hát ha lassú ÉS nem azt hozza amit szeretnél, akkor ... finoman fogalmazva hmm nem tudok segíteni :)
lassú mert brute force*, de akkor azt kell hozni, vagy egy spéci esetre gyorsan működő de épp nem a te eseted, dea mit te mondasz, hogy "és", az azt jelenti messze vagy a .. kivitelezéstől
de hogy írjak is valamit: ha tényleg olyan 2px-es ahogy feljebb írtad akkor élkeresés aztán az összes sorban összeadod ami maradt, ugyanígy az oszlopokban, majd a két-két maximum adja a helyét, ezen lehet finomítani hogy olyan maximumot keresel ami adott távolságra van, esetleg további finomításokkal** (pl azért mégiscsak egyenest keresel) ez biztos gyorsan működik.. mármint a lefutás, a kivitelezés, hát ... ;)
(*:ezen micel 2px, lehet gyorsítani hogy felezel, de egyébként is először tizrnhatodolni, nyolcadolni..)
**: pl élkeresés nélkül _is_ hisz fekete (ekkor persze (lokális) minimumra keresel)
- A hozzászóláshoz be kell jelentkezni
Hat betufelismerest multkor egy BME-s srac histogram-alapon implementalt, es marha pontos lett, ugyhogy lehet ezt kell jatszani.
- A hozzászóláshoz be kell jelentkezni
és tényleg
itt ráadásul csak egyetlen karaktert (a téglalapot) kell felismernie, szóval ez tuti megoldás
miután felismerte, már csak azt kell megmondania hol is ismerte el.. :)
- A hozzászóláshoz be kell jelentkezni