Rotace obrazku se zvetsenim rozliseni
Miroslav Maiksnar
ml na mixi.cz
Pondělí Březen 14 01:47:22 CET 2005
On Sunday 13 March 2005 13:16, Jan Kasprzak wrote:
> Miroslav Maiksnar wrote:
> : 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.
>
> Nemusite zaokrouhlovat (ve smyslu posunovat radek o zlomek pixelu.
> Zkoseni o 2 pixely muze vypadat treba takto:
>
> 12345 12345
> 67890 67890
> abcde ===> abcde
> fghij fghij
> klmno klmno
> pqrst pqrst
To je prave to zaokrouhlovani o kterem mluvim. Zatimco by kazdy druhy radek
mel byt posunuty o pul pixelu, Vy to zaokrouhlite na cele pixely...
>
> Cili posunujete radky vzdy o cely pocet pixelu tak, jako byste
> kreslil sikmou usecku Bresenhamovym algoritmem.
Ano, ale pokud chci tu sikmou caru vykreslit tak aby k necemu vypadala, musim
pouzit antialiasing. A me celou dobu jde o to, aby ta vysledna fotka k necemu
vypadala. Zkuste to prosim pochopit.
>
> : Ano, je to opravdu nazorne. Ale asi ne dostatecne, proto doporucuji
> : naprogramovat a aplikovat na nejakou "hodne aliasovaci" bitmapu a uvidite
> : nazorny vysledek ;o)
>
> Jak rikam, programoval jsem. Je to skutecne jednojednoznacne
> zobrazeni jednotlivych pixelu. Co je "hodne aliasovaci" bitmapa?
Treba 1px vzdalene vodorovne usecky. Nazorne vam predvedu, co za paskvil z
nich pri rotaci o 45 stupnu vznikne:
000000
111111
000000
111111
000000
111111
000000
111111
000000
111111
000000
111111
00
01100
1001100
00110011
1100110
11001
11
00
01100
1001100
00110011
1100110
11001
11
Kdyz stejnou operaci provedu poradnym algoritmem, tak uz tam vidim
antialiasovane cary, ale bohuzel diky tomu, ze pixel na uhlopricku je vetsi
nez na vysku, tak ty cary splyvaji dohromady. Proto chci behem te rotace
zvetsit rozliseni aby byly ty cary jasne oddelene. Kdyz ovsem nejprve zvetsim
obrazek a pak ho orotuji, tak budou cary 2x po sobe prevzorkovane diky cemuz
budou vice rozmazane nez kdyz se zvetseni provede v ramci rotace.
Uz me nenapada jak jasneji vysvetlit co chci.
>
> : Ja ten obrazek umim orotovat, ted mi jde opravdu jenom o tu minimalizaci
> : ztraty obrazove informace (tj. rotace spojena se zvetsenim rozliseni).
>
> Jo. Jak jsem rekl, pri rotovani vhodnym algoritmem zadna ztrata
> informace nevznika. Cili doporucuju (zejmena pokud budete zvetsovat
> vyrazne) nejprve zvetsit a pak rotovat.
Zkusim to vysvetlit jeste jednou trochu jinak. Pri tomto zpusobu rotace dojde
ke ztrate kvality obrazu vlivem aliasingu, coz pro zpracovani fotografii pro
tisk opravdu nechci (nechce to nikdo a proto to za tim ucelem ani nikdo
nepouziva). Je mi uplne ukradene zachovani binarni informace, ta fotka diky
tomu nebude vypadat lip, ale naopak hur.
Mixi
Další informace o konferenci Linux