Rotace obrazku se zvetsenim rozliseni
Miroslav Maiksnar
ml na mixi.cz
Neděle Březen 13 00:20:42 CET 2005
On Saturday 12 March 2005 21:38, Jan Kasprzak wrote:
> Miroslav Maiksnar wrote:
> : On Friday 11 March 2005 21:27, Jan Kasprzak wrote:
> : > Rotaci obrazku lze udelat bezztratove (to jest ze existuje
> : > 1:1 mapovani puvodnich pixelu na zrotovane). Zadna ztrata detailu.
> :
> : Tak to mi neni uplne jasne. Znamena to, ze kdyz otocim obrazek o 45
> : stupnu doprava a pote doleva, tak dostanu identicky obraz? Dodnes jsem si
> : myslel, ze neco takoveho neni mozne a nejak si to neumim predstavit,
> : nemate nejake odkazy kde se o tom algoritmu da docist? Vygooglit se mi
> : nic nepodarilo...
>
> Jak rikam. Je to mozne. Algoritmus funguje jako tri zkoseni
> - nejprve ve smeru osy X o polovinu pozadovane velikosti, pak ve smeru
> osy Y podle pozadovane velikosti, a pak opet ve smeru osy X. Detaily
> si nepamatuju, ale kdysi jsem to programoval jako zapoctak do grafiky.
> Predpokladam ze kazdy student informatiky by to byl schopen dohledat
> a/nebo naimplementovat.
Hmmm. Na jednu stranu vam (jako byvaly student informatiky a fanda pocitacove
grafiky dosove ery ;) musim dat za pravdu, ze timto zpusobem lze udelat
rotaci tak, aby z binarniho pohledu byla bezeztratova (tj. inverzni operaci
dosahnout puvodniho obrazu), ale _pouze_ v pripade, ze budu posouvat radky o
cele pixely a tam kde potrebuji posunout radek o nejaky zlomek pixelu (tj.
kdykoliv nebudu rotovat o 90 stupnu), tak musim zaokrouhlovat. To ale
samozrejme vede k vyrazne ztrate kvality obrazu, coz opravdu nepotrebuji.
Ve chvili kdy nebudu zaokrouhlovat, tak diky nekolikanasobne interpolaci dojde
ke ztrate informace. Takze jsme tam kde jsme byli.
>
> Nasel jsem citaci: Alan Paeth "A Fast Algorithm for General Raster
> Rotation," Graphics Interface '86, pp. 77-81, May 1986. Taky jsem nasel
> nejaky textovy popis i s ascii-artem s nazornou ukazkou toho jak
> to funguje:
>
> http://www.gamespp.com/graphicsprogramming/rotatingBitmaps.html
Ano, je to opravdu nazorne. Ale asi ne dostatecne, proto doporucuji
naprogramovat a aplikovat na nejakou "hodne aliasovaci" bitmapu a uvidite
nazorny vysledek ;o)
>
> : Navic zbezny test rotace o 45 stupnu a zpet v gimpu (verze 2.2.3)
> : prokazal, ze se nejedna o bezeztratovy algoritmus.
>
> OK. Tak pouzijte pnmrotate (i kdyz to asi taky neumi 16-bitovou
> hloubku, nevim) nebo imagemagick.
Ja ten obrazek umim orotovat, ted mi jde opravdu jenom o tu minimalizaci
ztraty obrazove informace (tj. rotace spojena se zvetsenim rozliseni).
Mixi
Další informace o konferenci Linux