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