
Algoritmus pro získání jedné kvalitnější fotky z několika méně kvalitních
Ahoj, dostal jsem od kamaráda výzvu, skript, který by z několika méně kvalitních obrázků udělal jeden kvalitnější, říkal, že to kdysi udělal v Delphi, ale nechce mi říct, jak to dělal, že ať se o to pokusím sám. Pokud by někdo věděl nějakou stránku, kde by byl nějaký stručný popis nebo to sem stručně napsal, tak bych byl rád. Nic mě totiž nenapadá . Díky za odpovědi.
Co to je za kravinu? Jake nekolik obrazkov? Co znamena ta "nekvalita"?
Upřesnil mi to tak, že si nafotil několik obrázků s hvězdami, ty pak hodil do toho programu a vyplivlo mu to ostřejší snímek.
Lol. Na vysetreni uz bol? :)
P.S. to mozes tak akurat skusit posuvat a natacat a poziciu s najmenej rozdielmi potom spriemerovat. Ale ze by z toho bola "vyssia kvalita", to je silne pochybne.
P.S.2. pokial foti so stativom tak to staci spriemerovat kazdy pixel apod, netreba posuvat. Ale je to IMHO kravina.
Z viac obrazkov si viem predstavit len urobit panoramu.
"Zlepsovanie kvality" si viem predstavit z jedneho obrazku napr. google:
- interpolation
- Digital Image Interpolation
- image upsampling
ak je ta "nekvalita" nizke rozlisenie. Ak je nekvalita nieco ine (rusenie, artefakty) tak je nutne presne definovat ze jaku nekvalitu chces odstranovat.
OK, ten upsampling pro mě asi bude nejlepší:
![[http://www.cs.huji.ac.il/~raananf/projects/upsampl ing/eye.jpg]](http://www.cs.huji.ac.il/~raananf/projects/upsampling/eye.jpg)
Teď ale jak to zalgoritmizovat. Napadlo mě to udělat třeba tak, že bych z jednoho pixelu udělal čtyři (jakoby 2x zvětšil ten obrázek) a barvy těch "subpixelů" dopočítal podle sousedů (průměr barvy subpixelu a souseda?), tím by se ten obrázek jakoby "zjemnil" nebo je moje úvaha jako obvykle zase totálně blbá?
Tie algoritmy su komplikovane a preto som ti napisal ze co mas hladat na google. Interpolacia obrazku je jedna zo zlozitejsich veci, neni to na 2 hodky.
P.S. s tymi susedmi mozes zacat ale neni to interpolacia. Nejake zjemnenie to ale bude samozrejme (P.S. kazdy subpixel (roh povodneho pixelu) ma vpodstate 3 susedov, 2 po bokoch a jeden sikmo (ten by som dal do priemeru s mensou vahou).
http://www.cambridgeincolour.com/tutorials/image-i nterpolation.htm
Už to začínám trochu chápat, nejdřív bych si asi naprogramoval "nejbližšího souseda", to bude nejjednodušší, potom bilineární, ta ještě může být jakžtakž v pohdodě a nakonec bikubickou
No, a to su este z tych jednoduchsich. Tak prijemne studovanie ;)
A až tohle všechno budu chápat tak Mitchell, Gaussian, Bell, BSpline a tyhle typy, co jsou v XNView
.
Podívej se na AviSynth fórum - tam se interpoluje furt. Jsou tam i filtry a budou tam zdrojáky.
Díky za tip
.
tvé pozornosti ještě doporučím metodu superpozice několika snímků (pěkně ji popsal L. Souček v knize Runa Rider, dokonce i tam šlo o snímky oblohy, resp. snímky Marsu, jehož originální snímky, díky chvění vzduchu nebyly použitelné). Jedná se o to, že "sesvítíš" (elektronicky tomu odpovídá použití odpovídajícího procenta průhlednosti) několik snímků do jednoho - a tak se výsledek "zprůměruje."
Díky, určitě se podívám
.
Ano to by mohol chciet keby mu slo o odstranenie "ruseni". Pytal som sa to hned na zaciatku, ale evidentne programator nevie co vlastne zakaznik chce (co je vpodstate normalna situacia z praxe :), ale bude lepsie ked si s nim vyjasni ze ci chce odstranovat ruchy alebo zvysovat rozlisenie interpolaciou alebo co)
v poslední době se do většiny softů na zpracování fotek implementuje graficka knihovna Intel® Integrated Performance Primitives
Mozna by bylo jednodussi ji vvyuzit take...
jj, ale mě nejde o to napsat program, ve kterém bude:
ale pochopit to, jak to celé funguje
, ani luštit v kodu, co to tam dělají pro mě není, pro mě je lepší normální lidský popis nebo matematické vzorečky.
PS: sry za prasečí céčko, zatím to není můj šálek kávy
.
Tak jsem se pokusil o "Nearest Neighbour" a výsledky nejsou nijak valné...
![[http://pc.poradna.net/file/view/1796-image-png]](/file/view/1796-image-png)
Nahoře je původní "obrázek", dole projetý skriptem (zvětšeno rozlišení a dopočítáno podle sousedů)
Nebo se touhle metodou lepšího výsledku bez znetvoření barev dosáhnout nedá? Dopočítával jsem to takhle:
4 díly původní barvy + 1 díl průměru okolních pixelů.
Zkus to udělat takto (snad se mi to podaří vysvětlit):
Ať skript zjistí co je objekt a co je "okolí".
Dejme tomu že to je světlý objekt co je na obrázku a okolí černé. A´t to pracuje na černoý a světlou nechá napokoji- zesvětlit pouze zleva dole třetí řádek. Myslím že výsledek bude lepší.
Jen o tomhle řádku, by se dala napsat celá kniha...
Detekce hran, apod...
Mas tam nejaku chybu, takto byt vysledok nemoze. napr. lavy spodny musi ostat cierny. Si to odkrokuj.
Velice krásná a podrobná série článků o interpolaci je tady: http://ronbigelow.com/articles/interpolation/inter polation.htm - nejsou tam sice matematické vzorečky, ale je z toho vidět, jak to funguje a srovnání různých metod.
Moc pěkný, thx
.
Na něco jsem si vzpoměl, četl jsem někde článek o zvětšování fotografií na principu toho, že se pořídí sekvence spousty fotografií ze stativu s ruční spouští nebo pomalejší sekvencí, aby mezi jednotlivými fotkami byly nepatrné rozdíly (nepatrný pohyb stativu, pohyb listí na stromech větrem). Zvětšení fotografií a interpolace pak byly provedeny právě na základě rozdílů mezi jednotlivými fotografiemi, kdy se dosahovalo lepších výsledků než při normálním zvětšení. Takže ten dotaz zase až taková blbost být nemusí.
Bohužel, bohužel - tehdy jsem tomu moc pozornosti nevěnoval, a dnes to už nedokážu vyhledat. Může to být tak rok až dva dozadu nevím jestli anglicky nebo česky. Není to sice přímo vylepšení fotografií z méně kvalitních na lepší, ale co se týče interpolace, takový algoritmus z několika snímků něco "vylepšit" možný je.