You are on page 1of 25

Bo co n mn hc

ho my tnh

p dng cc php bin i


affine ln nh raster

Ging vin hng dn:

ThS. Trnh Quc Sn

Thc hin:

Phm nguyn Trng An 07520004


Quch Hng c 07520092

Mc lc
Contents
I.

Ni dung n......................................................................................................................... 3

II.

Gii thiu cc php bin i Transformation.......................................................................... 3


A.

Conformal linear transformation ....................................................................................... 3


1.

Tnh tin (Translate) ...................................................................................................... 3

2.

i xng (Reflection) .................................................................................................... 4

3.

Quay (Rotate)................................................................................................................. 6

4.

T l (scale) .................................................................................................................... 6

B.

Affine transformation ........................................................................................................ 7


1.

Shear .............................................................................................................................. 7
Cc php bin i cha hc .............................................................................................. 8

C.
1.

Projective Transform ..................................................................................................... 8


Cch bin i nh................................................................................................................ 10

III.

Cc php bin i conformal .......................................................................................... 10

A.
1.

Php tnh tin v php i xng. ................................................................................. 10

2.

Pho quay..................................................................................................................... 10

3.

Php t l ...................................................................................................................... 11

B.

Affine............................................................................................................................... 12
1.

Represent transformation with the use of matrix ..........Error! Bookmark not defined.

2.

Combine transformtation ..............................................Error! Bookmark not defined.

3.

Ci t i vi nh:...................................................................................................... 14

4.

Perspective transformation .......................................................................................... 14


Thit k ci t:................................................................................................................... 16

IV.

Cc phng php ci tin....................................................................................................... 18

V.

Ci tin tc : ................................................................................................................ 18

A.
1.

RasterOp ...................................................................................................................... 18

2.

Cc gc quay c bit. ................................................................................................. 19

3.

Rotate by Shear ............................................................................................................ 19


Ci tin cht lng nh ................................................................................................... 20

B.
1.

Bilinear Interpolation ................................................................................................... 20

2.

Pixel art Scaling ................................................................................................................... 23

VI.

Kt qu t c ................................................................................................................. 24

VII.

Reference: ........................................................................................................................... 25

I.

Ni dung n

Cc php bin i hnh hc thc cht l mt nh x i t mt khng gian


vector X vo khng gian vector X' (X' c th ln hn, nh hn hoc trng vi X).
Trong lnh vc ho, cc php bin i ny l nn tng rt quan trng cho cc
thao tc dng hnh v x l nh. Chng cho php chuyn i tng ln mn hnh,
hoc chuyn i gia cc gc nhn khc nhau. Vic hiu r v ci t c cc
php bin i c bn l yu cu bt buc khi nhp mn ho my tnh.
Vi nhng kin thc c trang b v php bin i Affine cho cc i
tng trn khng gian Euclid 2 chiu. Trong n ny nhm em d nh s m
rng tm hiu v vic p dng cc php bin i ny ln mt i tng c bit l
nh raster. ng thi i su tm hiu cc phng php ci tin khi ci t nhng
php bin i ny gim yu cu tnh ton, tng hiu qu v chnh xc khi x
l trn nh.

II. Gii thiu cc php bin i Transformation


A.

Conformal linear transformation

Ging nh tn gi ca n, conformal linear transformation l h cc php


bin i hnh hc bo ton c gc gia cc ng thng trong i tng ban
u, h qu l bo ton c hnh dng i tng. iu ny cho php cc i
tng trc v sau khi bin i ng dng vi nhau. y l nhng php bin i
c bn nht.
1.

Tnh tin (Translate)

Php tnh tin c tc dng di i tng i mt on tx theo trc x v mt


on ty theo trc y. Nu tx m, nh s nm bn tri so vi i tng ban u, ngc
li nm bn phi. Nu ty m, nh s nm pha di hnh ban u, tuy nhin, trong
x l nh, do gc to l nh tri trn v trc Oy quay xung nn nh s nm
bn trn so vi hnh gc.

x = x + tx
y = y + ty

(Xem hnh)
2.

i xng (Reflection)

Php i xng hay cn gi l php phn chiu, phn x, c chia lm hai


loi l i xng im v i xng trc.
i xng tm tham s cho php bin i ny l mt im gi l tm i
xng C(xc, yc). Mt im sau khi qua php i xng ny s to vi nh ca n mt
ng thng nhn tm i xng lm trung im.
x = 2xc x
y = 2yc y

(Xem hnh)
i xng trc tham s cho php bin i ny l mt ng thng, c gi
l trc i xng. Mt im sau khi qua php i xng ny to vi nh ca n mt
ng thng nhn trc i xng lm trung trc. Lu , php i xng trc c th
c dung nh ngha i xng tm. Bng cch ly 2 ln i xng qua 2 trc
vung gc nhau, ta s thu c nh ca php i xng tm vi tm i xng l
giao im 2 trc .

(Xem hnh)

3.

Quay (Rotate)

Php quay: Tham s nhn vo cho php quay l gc quay v tm quay R(O,
). im A sau khi qua php bin i ny to thnh nh A sao cho gc AOA =
Cng thc cho php quay quanh tm O l:
x = x cos( ) y sin( )
y = x sin( ) + y cos( )

(Xem hnh)
4.

T l (scale)

Php t l: Nhn vo tham s l hai h s t l (Scalar) S(s x, s y ). i tng A


qua php bin i ny thnh i tng A ng dng vi i tng ban u. Nu
h s t l >1, kch thc i tng A s ln hn kch thc i tng A v ngc
li.
x = x s x
y = y s y

(Xem hnh)

B.

Affine transformation

H php bin i affine bin ng thng thnh ng thng, bin hai


ng song song thnh hai ng song song, nhng khng bo ton gc gia cc
ng thng v c bit l cc php bin i trong h cc php bin i affine c
th c kt hp vi nhau m vn m bo c cc tnh cht trn. Cc php bin
i conformal cng l mt dng bin i affine, ngoi ra, ta cn c php shear:
1.

Shear

Php shear (nghing) nhn vo hai tham s chnh l trc nghing v mc


nghing. Nhng im nm trn trc nghing s b gi nguyn, trong khi nhng
im nm bn ngoi s b di i theo phng song song vi trc nghing mt
khong tuyn tnh vi khong cch t im n trc nghing. Trng hp trc
nghing trng vi trc ta , php nghing c th c biu din bng cng thc:
x = x + y*shx
y = x*shy + y

(Xem hnh)

C.

Cc php bin i cha hc


1.

Projective Transform

Projective Transform khng phi l mt php bin i tuyn tnh, do n


khng bo ton tnh song song ca hai ng thng. Tuy nhin chng ta c th biu
din php bin i ny bng cch s dng ma trn ng nht tng t nh vi cc
php bin i affine (s ni phn sau)
Cng thc:
x' = (a*x + b*y + c) / (g*x + h*y + 1)
y' = (d*x + e*y + f) / (g*x + h*y + 1)

III. Cch bin i nh


Mt file nh c lu tr trong my nh l mng cc pixel. Mi pixel ny c
th thay i v mu sc nhng khng th b chia nh, v khng th b bin dng. V
th khi thc hin cc php bin i ln nh raster, ta phi c bin php thch hp
ch nh mu ca cc pixel nhm th hin c nh sau khi bin i.d

A.

Cc php bin i conformal


1.

Php tnh tin v php i xng.

y l hai php bin i tng i n gin, c th c ci t in-place.


Ngha l chng ta c th to ra nh sau khi bin i bng cch thay i trc tip ln
nh ban u m khng cn phi to mt nh mi. V hai php bin i ny khng
lm thay i cht lng ca nh.
thc hin cc thao tc bin i ny chng ta ch cn sao chp ton b
pixel trong hnh ban u sang v tr thch hp trong hnh kt qu. Vi php tnh
tin, thao tc l:
1. Vi mi pixel (x, y) trong hnh ban u:
2.

x = x + Tx, y = y +Ty

3.

Nu Pixel (x, y) nm trong hnh kt qu:

4.

Gn mu pixel (x, y) bng mu ca pixel (x, y)

Php i xng:
1. Vi mi pixel (x, y) trong hnh ban u:
2.

x = -x + Tx, y = -y +Ty

3.

Nu Pixel (x, y) nm trong hnh kt qu:

4.

2.

Gn mu pixel (x, y) bng mu ca pixel (x, y)

Pho quay

Vn vi php xoay nh khng n gin nh vi php tnh tin hay i


xng. Mt pixel ti v tr(x,y) sau khi qua php xoay s chuyn thnh mt pixel ti
v (x',y') vi x', y' l cc s thc. Chng ta khng th gii quyt n gin bng

cch lm trn hai s x v y. V ti mt im (x, y) no ta s gp trng hp


nh ca im (x, y) v nh ca im (x + 1, y) l hai im khng lin k nhau. Gc
quay cng ln th xc sut ny cng ln (xem hnh di)

(nh b li khi xoay 1 gc 45 )


gii quyt trng hp ny ta phi thc hin mt thao tc ngc nh sau:
1.Vi mi pixel (x, y) trong hnh kt qu
2.

Ta xoay pixel mt gc .

3.

Lm trn kt qu php xoay ta thu c (x, y)

4.

Ta gn mu ca pixel (x, y) bng mu ca pixel (x, y)

3.

Php t l

Cng ging nh vi php quay, php t l khng th c thc hin bng


thao tc copy tng pixel trong hnh gc sang hnh kt qu. Do ty thuc vo h s
t l, nh kt qu c th cha nhiu pixel hn nh gc, v vy ta phi thc hin thao

tc ly mu (sampling)
1.Vi mi pixel (x, y) trong hnh kt qu
2.

x = x / Sx , y = y / Sy

3.

Lm trn x v y

4.

Gn mu ca Pixel (x, y) bng mu ca Pixel (x, y)

B.

Affine
1.

Biu di bng ma trn

Nhng thao tc bin i affine u l nhng php bin i tuyn tnh. Cc


cng thc biu din l nhng hm tuyn tnh theo x v y v th chng c th c
biu din bng ma trn 2 dng, 2 ct.
Lc cng thc cho cc php bin i l:
Rotate:

Scale:

Shear:

Tuy nhin, c mt vn nh l cch biu din bng ma trn 2x2 gp kh


khn trong vic biu din php tnh tin. Do v phi ca h phng trnh tuyn tnh
c dnh cho x v y nn ta khng biu din c h s t do trong php tnh
tin. khc phc trng hp ny ta s dng h ta ng nht (u, v, w) biu
din mt im. iu ny cho php ta s dng ma trn 3x3 cho vic biu din php
bin i.
Ta tht ca pixel s c quy ra t h ta ng nht bng cng thc
x=u/w

y=v/w
Khi cng thc cho cc php biu din c th l:
Tnh tin:

i xng tm:

Php xoay:

Php nghing (shear)

Php t l:

Vic s dng ma trn 3x3 trong khi cc php bin i affine ch chu nh
hng ca ti a 6 h s c th xem l s lng ph v mt no . Tuy nhin ta
c mt li ch khc l c th kt hp nhiu php bin i vo mt ma trn duy
nht nh vo php nhn ma rn
2.

Kt hp

Gi s ta cn thc hin ba php bin i tuyn tnh lin tip A, B, C ln im


P(x, y). Nu thc hin theo tun t ta s tm nh P' theo cng thc:
Q =A* P
R=B*Q

P' = C * R
Vit gn cng thc trn ta c:
P' = C * (B * (A * P)) = (C * B * A) * P
T cng thc trn, ta thy nu t T = C * B * A ta s c T l php bin i
kt hp tun t ca ba php bin i A, B, C.
S kt hp ny c th c m rng ra cho n php bin i lin tip (min
tt cc php bin i u l tuyn tnh).
Cc thao tc bin i bin i nh i hi ta phi thc hin php nhn ma
trn cho tng pixel, v th vic kt hp nhiu php bin i vo mt ma trn duy
nht cho php gim s php tnh phc tp ny xung v tng tc thc thi ln
nhiu ln.
3.

Ci t i vi nh:

Do php bin i affine bao gm hai php bin i l scale v rotate nn ta


cng gp phi vn tng t l khng th ci t cc php bin i affine
bng cch sao chp pixel n thun. Thay vo ta phi thc hin ly mu t mi
pixel trong nh kt qu n nh ban u:
Vi mi pixel (x, y) trong nh kt qu:
1.

Tm ma trn nghch o ca ma trn bin i

2.

Nhn ma trn o vi to ng nht (x, y, 1) ta thu c (u, v, w)

3.

Tm to pixel (x', y') trong hnh gc tng ng vi (u, v, w)

4.

Gn mu ca pixel (x, y) bng mu ca pixel (x', y')

4.

Perspective transformation

Perspective transform cho php to hiu ng khi nhn mt i tng thc t


khong cch xa. y khng phi l mt php bin i tuyn tnh nh cc php
bin i affine v trong cng thc ca chng c yu cu php chia gia x v y. Tuy
nhin php bin i ny cng c th c biu din bng ma trn 3x3 v h to
ng nht:

Php chia trong cng thc khin php bin i perspective phc tp hn
trong tnh ton mt i tnh cht tuyn tnh v khng th kt hp vi cc php bin
i khc

IV. Thit k ci t:
Chng trnh c xy dng trn ngn ng Python, cng s h tr ca th
vin x l hnh nh ( Python Image Library - PIL ).S h tr ny gip cho ngi
lp trnh c th thun tin hn trong vic thao tc trn cc cng vic c lin quan
n x l hnh nh v ha. c thit k ti u cho vic truy xut v lu tr nh
cng kh nng x l mnh m ca b th vin l mt l do c nhiu nh lp
trnh s dng n.. y chc chn l mt cng c khng th thiu cho nhng ai
quan tm n lnh vc lp trnh nn nhng chng trnh c tng tc vi nh.s.
Cu trc ca chng trnh c thit k theo s sau:

Application

mainGUI

Matrix

Convert

Math

PIL

Image

Python

Theo s trn, ta c th thy c cu trc xy dng nn chng trnh


bao gm:

Class Matrix: y l mt class dng tnh ton cc bin i ca cc php


Transform trong chng trnh da trn nn tng ma trn, c s h tr t th vin
Math sn c ca Python, vic xy dng nn mt lp Matrix nh th ny gip thun
li trong vic tnh ton cc php tnh phc tp.
Class Convert v Image: mc ch ca vic xy dng nn class ny l gip
ngi lp trnh thun tin trong vit chuyn i qua li gia cc ng dng nh cn
thit, cng nh cc thao tc nh trn pixel i vi Python.
S kt hp gia cc class ny gip cho ngi lp trnh c thun tin hn
trong vic thc hin m phng cc php bin i da trn cc php ton ma trn.
T class mainGUI c to dng nn m phng cc php bin i ny.

V. Cc phng php ci tin


A.

Ci tin tc :
1.

RasterOp

Ci tin tc thc thi:


Raster operation l thut ng ch thao tc copy pixel qua li gia hai nh.
Thao tc ny c s dng ph bin trong vic sao chp nh gia hai vng nh, v
d nh t b nh chnh sang b nh ha.
y l thao tc rt quan trng trong ha, ci t tt thao tc ny c th
cho php cc h thng ha hot ng vi thi gian thc. ti u v tc ,
thao tc ny thng c ci t bng cch tn dng cc tp lnh c sn trong b
x l. Theo cun New Hacker's Dictionary (1991, MIT Press) ca tc gi Eric
Raymond, siu my tnh PDP-101 h tr mt tp lnh BLT (BLock Transfer)
cho php di chuyn mt khi d liu trong b nh. Gi s nh ca ta c biu
din bng mt mng d liu, bao gm nhiu hng pixel nm ni tip nhau. Nu ta
mun copy mt phn ca nh gc trn my ny, thao tc rasterOp s bao gm vic
copy tng dy con trong mng. n nhng nm 1970, ti hng Xerox Parc, Dan
Ingalls pht trin thao tc rasterOp c th copy trc tip mt mng con ca mng
hai chiu. Thao tc ny c s dng trong vic hin th fonts bitmap trn my
Alto, v c gi l Bitblt (Bit Block Transfer)
Ngy nay hu ht h thng my tnh u cung cp cng c h tr thao tc
rasterOp. Mt s thao tc rasterOp c th c ci t in-place, khi m vng nh
ca nh ngun v nh gc chng ln nhau. Trong trng hp , cc pixel cn
c copy theo mt th t c bit pixel u tin khng b ghi chng ln pixel
1

The PDP-10 l my ch sn xut bi hng Digital Equipment Corporation (DEC) cui

thp nin 1960s; PDP l vit tt ca "Programmed Data Processor model 10" y l my tnh gp
phn a time-sharing tr nn ph bin

cha c copy
Vi thao tc rasterOp ta c th ci t tt c thao tc bin i affine (ngoi
tr php t l). R rng nht l vi php tnh tin, vn l di chuyn ton b pixel
trong hnh gc sang v tr thch hp trong hnh nn. Vi php i xng trc ta cn
di tng hng pixel n v tr i xng ca chng. Vi php shear l thao tc di
tng hng pixel i mt khong cch tng ng. V php quay c th c ci t
bng cch s dng ba php shear (xem phn rotate by shear)
Do c h tr sn t phn cng, cc thao tc rasterOp c th gip ci tin
ng k tc thc thi ca nhng php bin i
2.

Cc gc quay c bit.

Cc gc quay m ti gi tr sin() v cos() nm trong tp hp {-1, 0,


1} l cc gc c bit m khi quay ta khng cn tin hnh php lm trn s. Cc
php quay ny c th c thc hin bng thao tc rasterOp tng tc thc thi
cng nh chnh xc
3.

Rotate by Shear

Ba php shear lin tip c th c iu chnh xoay nh raster i mt gc


bt k.
Do php shear c th c ci t bng thao tc rasterOp nh cp
trn, vic dng php shear xoay nh c th ci thin ng k tc thc hin
php xoay.
Nu nh php xoay c gc quay nh, ta c th ch cn thc hin 2 php
shear cgn m bo gn ng kt qu xoay. Khi thc hin 2 php shear, t s gia
chiu di v chiu rng hnh s b lch so vi kt qu chun mt lng

. Nu <

0.05 radiant sai s ny l hon ton chp nhn c.


im c bic th v l do c ci t bng rasterOp, Rotate by shear m
bo mt nh x 1 1 gia t nh ngun sang nh kt qu, v th nu hnh nh b sai
lch do thc hin lin tip qu nhiu php bin i ny, ta c th thu li hnh ban
u bng cch thc hin li php bin i vi = -

Vi gc quay nm trong khong [-45o, 45o] th t 3 php quay ln lt s


l:
Shy = /2
Shx = arctg(sin())
Shy = /2
Nu gc quay nm ngoi khong [-45o, 45o] Ta c th bin i gc quay
bng cc tin hnh quay vi mt hng ngc li theo mt gc vung.

B.

Ci tin cht lng nh


1.

Bilinear Interpolation

Mt tc ng ngoi mun ca cc php bin i affine l to ra rng ca


trn nh. Nh ta bit do c biu din bng cc pixel vi ta l s nguyn,
mi ng thng khng song song vi cc cnh mn hnh khi hin th u to cm
gic rng ca

(nh b rng ca sau khi shear)


Qua php bin i affine cc rng ca ny c th tng thm. Php shear v
rotate c th bin nhng ng thng song song vi cnh mn hnh thnh cc
ng xin, v php scale s phng to cc rng ca c sn trong nh. gii quyt

vn ny chng ta s dng k thut ni suy (Interpolation) thay cho vic ly mu


khi xc nh mu ca cc pixel trong nh kt qu.

(nh c s dng interpolation)


Gi s ta c th chia mi pixel ra thnh N*N thnh phn n nguyn nh,
vi to ca pixel chnh l to ca thnh phn n nguyn u tin. Nh vy
sau khi tm c to (x', y') ca pixel ban u, rt nhiu kh nng pixel (x', y')
ny s nm ln 4 pixel tht trong nh gc (xem hnh)

(hnh m t cc pixel trong bilinear)


Chng ta c x v y l khong cch t pixel (x', y') n to tht ca pixel (i, j)
tng ng trong phng php sampling. Gi fi,j l mu (i, j) Chng ta s tm cch
xc nh mu cho pixel (x', y') ny da vo 4 pixel fi,j, fi,j+1, fi+1,j, fi+1,j+1 theo cng
thc:

S N c th c chn ty , N ln s lm tng cht lng hnh nhng


khng ng k. Thng thng N s c chn l bi s ca 2 c th tn dng
cc php ton trn bit thay cho php chia vn yu cu tnh ton cao hn.
Phng php bilinear Interpolation ci thin r rt cht lng nh sau khi
bin i. Ngoi ra chng ta c th s dng mt s bin php ni suy khc nh
Bicubic Interpolation. Tuy nhin mt nhc im ca cc phng php ni suy
l chng kh rng ca bng cch lm m i cc ng bin trong nh mt ngi

khng th nhn bit c cc rng ca ti khu vc . iu ny lm gim tng


phn gia cc vng v trong mt s trng hp, lm nh b nho i.
Nu yu cu l phi scale nhng hnh nh n gin, nh gm nhiu mng mu lin tc,
c t gradient hay su mu thp, ta c th p dng mt hng tip cn khc l Pixel art Scaling
2.

Pixel art Scaling

Pixel art Scaling l thao tc phng ln nhng hnh nh n gin vi phn gii thp v
cha nhiu khi mu c. Cc thut ton ny thng khng p dng c cho nh chp v
chng cha qu nhiu vng c vi sc mu c gradient v bng.
Cc phng php ni suy mu to ra nhng vng m ti v tr ng bin ca cc i
tng trong nh. i vi nh c phn gii nh, nhng vng m ny c th ph lp b mt ca
cc i tng trong nh lm ton b nh b nho i. Phng php ly mu tuy khng lm nho
nh nhng li to ra rng ca iu ny lm ny sinh nhu cu cho mt thut ton khc tt hn.
Ngy nay nhng thut ton pixel art Scaling thng c dng phng ln hnh nh
ca nhng tr chi in t c n mt phn gii c th chp nhn c trn cc my tnh hin
i. Hu ht nhng thut ton ny b gii hn mt t l phng nht nh, b li chng rt hiu
qu v mt phc tp tnh ton, m bo c th chy real-time phc v cho game.
Nhn chung Cc thut ton ny khng tin hnh ly trung bnh mu nh phng php
ni suy, nhng cng khng gn thng mu ca pixel gc cho pixel sau khi phng to nh phng
php ly mu. Sau khi tm c pixel gc tng t nh trong phng php ly mu, chng s
xt 8 pixel ln cn ca pixel gc v ty trng hp c th m gn mu ca pixel sau bin i
bng vi mu ca 1 trong s 9 pixel ny. Mt s thut ton ni ting nht trong phng php ny
l hqx2 v scale2x / scale3x3

Hqx: hq l vit tt ca high quality, x l k hiu ca vic phng ln. Thut ton do Maxim Stepin pht

trin, c 3 phin bn cho 3 t l phng 2x, 3x v 4x dng trong cc chng trnh gi lp my chi game: Nestopia,
bsnes, ZSNES

c pht trin cho d n AdvanceMAME (http://advancemame.sourceforge.net/) vo nm 2001, scale2x

l mt thun ton pixel art scaling m ngun m pht hnh di giy php GPL. Thut ton c bn m rng cho t l
phng to 3x ngoi ra cn c scale4x vn l thut ton scale2x c chy 2 ln lin tip.

VI. Kt qu t c
Nh vy, v c bn, sau qu trnh tm hiu, nhm c bn nm vng cc k
thut cn thit p dng cc php bin i affine ln nh. C th p dng c tt
c cc php bin i, ng thi xy dng c giao din trc quan cho php ngi
dng nhp cc thng s cho php bin i m chng trnh demo s thc hin.
Ci t c thut ton bilinear Interpolation ci thin cht lng nh sau
khi bin i kh tt.
Tuy nhin vn cn im c th ci thin c trong chng trnh nh vic
thot khoi s l thuc vo th vin c sn trong vic m, to v lu file nh.
Nu c th t thao tc trc tip ln file nh trn a cng, chng ta c th s
dng cc li gi hm h thng truy cp vo tp lnh h tr ho ca CPU,
hoc tt hn na l dng GPU tng hiu nng ca chng trnh.
Cn nhiu thut ton ci thin cht lng nh khc m nhm tm hiu qua
nhng khng kp c thi gian i su nh sharpen, bicubic interpolation, v.v...

VII. Reference:
1 Leptonica website
2 - Alan Paeth, A Fast Algorithm for General Raster Rotation, graphic
Gems, p179, Academic Press, 1990

You might also like