Tải bản đầy đủ (.pdf) (100 trang)

Bài giảng môn học đồ họa máy tính (đh hàng hải VN)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.04 MB, 100 trang )

Tr

ng H Hàng H i Vi t Nam
Khoa Công ngh thông tin
= = =&*&= = =

Bài gi ng môn h c

H A MÁY TÍNH


L i nói

u

Nh m ph c v cho cơng tác gi ng d y, h c t p môn h c
th y và trị khoa Cơng ngh thơng tin - tr

ng

h a máy tính c a

H HÀNG H I VI T NAM, b

môn H thông thông tin ti n hành t ng h p, biên so n s b t p bài gi ng mơn
h c

h a máy tính. T p bài gi ng này

trình K thu t


c biên so n ch y u d a trên Giáo

h a máy tính c a khoa CNTT -

h a máy tính (dùng cho h

ào t o t

HBK Hà N i và Giáo trình

xa) c a

HQG TP H Chí Minh.

Ngồi ra chúng tơi có tham kh o cu n Computer Graphics c a Donald Hearn &
M. Pauline Baker, nhà xu t b n Prentice-Hall, New Jersey, 1986 cùng m t s tài
li u khác (xem ph n tài li u tham kh o).
h c t t mơn h c này, ngồi nh ng ki n th c c s v l p trình, sinh viên
c n ph i

c trang b nh ng ki n th c c b n v

i s , gi i tích, hình h c gi i

tích, hình h c h a hình, ki n trúc máy tính và thi t b ngo i vi,... Th c s
h a máy tính là m t mơn h c khơng

n gi n, s! d ng nhi u cơng c tốn h c

và òi h"i ki n th c t ng h p.

Vì ây là l n

u tiên biên so n nên ch#c ch#n khơng tránh kh"i nh ng thi u

sót. R t mong nh n
em sinh viên

cs

óng góp ý ki n c a quý

ng nghi p và c a các

công vi c biên so n ngày càng t t h n.
B môn H th ng thông tin
Khoa Công ngh thông tin - Tr

ng H Hàng H i

2


M cl c
M c l c ................................................................................................................. 3
Ch ng 1: T ng quan v
h a máy tính ....................................................... 5
1.1 Khái ni m v
h a máy tính và l ch s phát tri n .................................... 5
1.2 K thu t
h a t ng tác(Interactive Computer Graphics) ...................... 6

1.3 Khái quát v h th ng h a ...................................................................... 7
1.3.1 Ph n c ng .............................................................................................. 8
1.3.2. Ph n m m ........................................................................................... 11
1.4 Các h màu c b n ................................................................................... 13
1.4.1 Không gian RGB (RGB space) ........................................................... 14
1.4.2 Không gian HSL.................................................................................. 15
1.4.3 Không gian HSV ................................................................................. 16
1.4.4 Không gian màu CMY (Cyan - Magenta - Yellow) ........................... 17
Ch ng 2: Các thu t toán v
ng và tô màu c b n............................... 19
2.1 H t a
th gi i th c, h t a
thi t b và h t a
chu n ................. 19
2.1.1 H t a
th gi$i th c ........................................................................ 19
2.1.3 H t a
thi t b chu%n (Normalized device coordinates) ................. 20
2.2 Các thu t toán v
ng d a trên i m .................................................... 21
2.2.1 Các thu t tốn v&
ng th'ng............................................................ 21
2.2.2 Các thu t tốn v&
ng trịn .............................................................. 27
2.3 Các thu t tốn tơ màu................................................................................ 33
2.3.1 Tơ màu theo t ng i m (ph ng pháp tô n gi n) ........................... 33
2.3.2 Tơ màu theo dịng qt (scan - line).................................................... 37
2.3.3 Ph ng pháp tô màu d a theo
ng biên.......................................... 41
Ch ng 3: Các phép bi n i hình h c 2D ..................................................... 45

3.1 Các phép bi n i hình h c c s .............................................................. 45
3.1.1 Phép t nh ti n...................................................................................... 45
3.1.2 Phép bi n i t( l ............................................................................... 46
3.1.3 Phép quay ............................................................................................ 47
3.1.4 Bi u di)n ma tr n c a phép bi n i ................................................... 47
3.1.5 H t a
thu n nh t (hormogeneous coordinates)............................. 48
3.2 K t h p các phép bi n i ......................................................................... 49
3.2.1 K t h p các phép t nh ti n................................................................... 49
3.2.2 K t h p các phép t( l ......................................................................... 50
3.2.3 K t h p các phép quay ........................................................................ 50
3.2.4 Phép quay có tâm quay là i m b t k*................................................ 50
3.3 M t s tính ch t c a phép bi n i Affine ................................................. 51
3.3.1 Phép bi n i affine b o tồn
ng th'ng......................................... 51
3.3.2 Tính song song c a các
ng th'ng
c b o toàn .......................... 51
3.3.3 Tính t+ l v kho ng cách
c b o tồn............................................. 51
3.4 M t s phép bi n i khác ......................................................................... 52
3


3.4.1 Phép i x ng...................................................................................... 52
3.4.2 Phép bi n d ng .................................................................................... 52
3.4.3 Phép bi n i ng c ............................................................................ 53
3.4.4 Phân rã phép bi n i .......................................................................... 53
3.5 Phép bi n i gi a các h t a .............................................................. 54
Ch ng 4: Hi n th các i t ng 2D.............................................................. 56

4.1 Quy trình hi n th các i t ng 2D.......................................................... 56
4.1.1 M t s khái ni m ................................................................................. 56
4.1.2 H t a
quan sát và h t a
thi t b chu%n.................................... 58
4.1.3 Chuy n i t c!a s quan sát sang vùng quan sát............................. 59
4.2 Các thu t toán c t xén hình ....................................................................... 60
4.2.1 Thu t tốn Cohen - Sutherland............................................................ 61
4.2.2 Thu t toán Liang - Barsky................................................................... 66
Ch ng 5: T ng quan v
h a 3D................................................................ 71
5.1 Khái quát chung......................................................................................... 71
5.1.1 S l c v quy trình hi n th ............................................................... 72
5.1.2 Mơ hình khung n i k t ........................................................................ 73
5.1.3 V& các i t ng theo mô hình khung n i k t s! d ng các phép chi u
...................................................................................................................... 75
5.1.4 Phép chi u song song (Parallel Projection)......................................... 76
5.1.5 Phép chi u ph i c nh (Perspective Projection)................................... 78
5.2 Bi u di n các i t ng 3D ....................................................................... 79
5.2.1 Bi u di)n m,t a giác .......................................................................... 80
5.2.2 Các
ng cong và m,t cong .............................................................. 85
5.2.3 Các m,t có quy lu t(ruled surfaces) .................................................... 85
5.2.4 Các m,t trịn xoay (Surfaces of revolution) ........................................ 87
5.2.5 Các m,t cong b c hai........................................................................... 88
Ch ng 6: Các phép bi n i trong
h a 3D.............................................. 90
6.1 Các phép bi n i hình h c ....................................................................... 90
6.1.1. M t s khái ni m liên quan ................................................................ 91
6.1.2 Phép t nh ti n....................................................................................... 92

6.1.3 Phép t( l ............................................................................................. 93
6.1.4 Phép bi n d ng .................................................................................... 94
6.1.5 Phép quay ............................................................................................ 94
6.1.6 K t h p các phép bi n i Affine 3 chi u........................................... 98
6.2 Phép bi n i mơ hình và phép bi n i h tr c t a ............................ 98
Tài li u tham kh o ........................................................................................... 100

4


Ch

ng 1
T ng quan v

1.1 Khái ni m v

h a máy tính

h a máy tính và l ch s phát tri n

K thu t
h a máy tính là ph ng pháp và công ngh dùng trong vi c
chuy n i qua l i gi a d li u và hình nh trên màn hình b ng máy tính. K
thu t
h a hay
h a máy tính cịn
c hi u d $i d ng ph ng pháp và k
thu t t o hình nh t các mơ hình tốn h c mơ t các i t ng hay d li u l y
c t các i t ng trong th c t .

M t s chuyên gia máy tính cho r ng K thu t
h a máy tính có th
nh
ngh-a nh m t l-nh v c c a công ngh thông tin mà
ó nghiên c u, xây d ng
và t p h p các cơng c (mơ hình lý thuy t và các th vi n l p trình) khác nhau
ki n t o, xây d ng, l u tr và x! lý các mơ hình(model) và hình nh(image)
c a các i t ng, s v t khác nhau trong cu c s ng, s n xu t và nghiên c u.
Các mơ hình và hình nh này có th là k t qu thu
c t nh ng l-nh v c khác
nhau c a r t nhi u ngành khoa h c - k thu t ( V t lý, toán h c, thiên v.n h c,
c khí, ki n trúc...) và bao trùm r t nhi u th lo i a d ng và phong phú: c u
trúc phân t!, c u trúc sinh h c, mơ hình tàu v/ tr ,...
Thu t ng k thu t
h a máy tính (Computer Graphics)
c
xu t b i
m t chuyên gia ng i M tên là William Fetter vào n.m 1960. Khi ó ơng ang
nghiên c u xây d ng mơ hình bu ng lái máy bay cho hãng máy bay Boeing.
William Fetter ã d a trên các hình nh 3D c a mơ hình ng i phi cơng trong
bu ng lái xây d ng nên m t mơ hình t i u cho máy bay Boeing.
ây là ph ng pháp nghiên c u r t m$i vào th i k* ó. Ph ng pháp này có
nh ng tính n.ng v t tr i h n t t c các ph ng pháp nghiên c u xây d ng mơ
hình bu ng lái máy bay truy n th ng tr $c ó
c áp d ng t i Boeing. Ph ng
pháp này cho phép các k s thi t k quan sát m t cách tr c quan v trí c a phi
cơng trong bu ng lái. William Fetter ã ,t tên cho ph ng pháp c a mình là
"Computer Graphics".
L ch s!
h a t nh ng n.m 1960 còn

c ánh d u b i d án Sketchpad
t i MIT v$i Ivan Sutherland t i h i ngh Fall Joint Computer cùng v$i s ki n
l n u tiên t o m$i, hi n th và thay i
c d li u hình nh tr c ti p trên
màn hình trong th i gian th c (hình 1.1)

5


Hình 1.1: Hình nh

h at

ng tác

u tiên trên Sketchpad

K thu t
h a liên t c
c hoàn thi n vào nh ng n.m 1970 v$i s xu t
hi n c a các chu%n
h a làm t.ng c ng kh n.ng giao ti p và tái s! d ng c a
các ph n m m c/ng nh các th vi n
h a.
S phát tri n bùng n c a công ngh vi i n t! và l-nh v c ph n c ng máy
tính trong nh ng n.m 1980 làm xu t hi n hàng lo t các v+ m ch h0 tr cho vi c
truy xu t
h a i cùng v$i s gi m giá áng k c a máy tính cá nhân (PC) ã
làm h a càng i sâu vào cu c s ng th c ti)n.
K t n.m 1990 t$i nay các k thu t

h a 3D và các phép x! lý
c phát
tri n m nh m& và cho ra i hàng lo t các nh ng s n ph%m
h a ng d ng
trong th c t nh thi t k mơ hình, games, phim ho t hình, k x o i n nh,...
Các v+ m ch
h a cho máy tính cá nhân th ng tr trong thi tr ng
h a nh :
Nvidia, ATi, 3DLabs,... ngày càng hoàn thi n và cung c p ngày càng nhi u kh
n.ng cho ng i s! d ng. Liên ti p hàng t( ơ la
c u t cho
h a máy
tính h a h1n s phát tri n không ng ng và nh ng s n ph%m ngày càng
cc i
ti n s& là quà t,ng mong i cho nh ng ai yêu thích l-nh v c này.

1.2 K thu t

h at

ng tác(Interactive Computer Graphics)

C/ng nh m i l-nh v c khác trong công ngh thông tin, m t h th ng s!
d ng k thu t
h a t ng tác là m t h th ng x! lý thông tin bao g m 3 thành
ph n v$i các thao tác t ng ng:
• Nh p d li u: thông qua các thi t b vào nh nh chu t, máy qt, bàn
phím,...
• X! lý và l u tr d li u
• Hi n th /K t xu t k t qu : thông qua các thi t b nh màn hình, máy

in,...
Ngồi các ,c thù chung nh ã li t kê trên, h th ng k thu t
h a
t ng tác cịn có m t ,c i m r t ,c tr ng c a mình: trong h th ng này, các
thơng tin và các d li u ,c tr ng
c hi n th trên màn hình m t cách tr c
quan và ng i s! d ng có th quan sát, theo dõi và thay i giá tr ho,c khuôn
d ng c a chúng m t cách t ng tác (interactive) và ngay l p t c nh ng thay i
này s&
c h th ng ghi nh n và x! lý. K t qu c a s thay i s&
ch
th ng x! lý ngay trên các mơ hình, c u trúc ho,c hình nh c a các i t ng và
hi n th chúng ngay trên màn hình nh ng i s! d ng mong mu n.

6


Nh p/vào
d li u

L u tr và
x! lý

Hi n th
k t qu

USER

Hình 1.2: Mơ hình chung c a h
h a t ng tác

Nh trên mơ hình chung c a m t h th ng s! d ng k thu t
h a t ng
tác, chúng ta th y ng i s! d ng có kh n.ng giao ti p t ng tác v$i h th ng
c 3 giai o n trong q trình x! lý thơng tin.
H th ng
h a t ng tác
u tiên
c thi t k và xây d ng b i
IvanSutherland n.m 1963. H th ng Sketchpad này
c dùng
thi t k m ch
i n và bao g m nh ng thành ph n sau:
• CRT màn hình.
• Bút sáng và m t keyboard bao g m 1 s phím b m ch c n.ng
• Máy tính ch a ch ng trình x! lý các thơng tin
Ng i s! d ng có th v& m ch i n tr c ti p lên màn hình thơng qua bút
sáng. ch ng trình s& phân tích và tính tốn nh ng thơng s c n thi t c a m ch
i n do ng i s! d ng v& nên.

Hình 1.3: Ivan Sutherland và h th ng Sketchpad (1962)

1.3 Khái quát v h th ng

h a

M th
h a bao gi c/ng có hai thành ph n chính ó là ph n c ng và ph n
m m. Ph n c ng bao g m các thi t b hi n th và nh p d li u,… Ph n m m bao
g m các cơng c l p trình và các trình ng d ng
h a. Chúng ta s& l n l t

kh o sát các thành ph n này.

7


1.3.1 Ph n c ng
1.3.1.1 Thi t b hi n th
Nói chung, màn hình là thi t b hi n th thông d ng nh t trong m t h
h a.
Các thao tác c a h u h t màn hình u d a trên thi t k c a ng tia âm c c
(CRT – cathode ray tube).
A. C u t o chung c a CRT
Hình 1.6 minh h a thao tác c s c a m t ng tia âm c c. M t chùm các tia
i n t! (tia âm c c) phát ra t m t súng i n t!, v t qua các h th ng h i t
(focusing) và d2n h $ng (deflection) s& h $ng t$i các v trí xác nh trên màn
hình
c ph m t l$p phosphor. T i m0i v trí t ng tác v$i tia i n t!, h t
phosphor s& phát ra m t ch m sáng nh". Vì ánh sáng phát ra b i các h t
phosphor m d n r t nhanh nên c n ph i có m t cách nào ó
duy trì nh trên
màn hình. M t trong các cách ó là l,p i l,p l i nhi u l n vi c v& l i nh th t
nhanh b ng cách h $ng các tia i n t! tr l i v trí c/. Ki u hi n th này g i là
refresh CRT.

Hình 1.4: C u t o c a CRT
Có nhi u lo i phosphor
c dùng trong m t CRT. Ngoài màu s#c ra, i m khác
nhau chính gi a các lo i phosphor là " b n” (persistent), ó là kho ng th i
gian phát sáng sau khi tia CRT không cịn tác ng. L$p phosphor có
b n

th p c n t c
làm t i cao h n
gi cho hình nh trên màn hình kh"i nhịe.
Lo i này th ng r t t t cho ho t hình, r t c n thay i hình nh liên t c.
L$p phosphor có
b n cao th ng
c dùng cho vi c hi n th các nh
t-nh,
ph c t p cao. M,c dù m t s lo i phosphor có
b n l$n h n 1 giây,
tuy nhiên các màn hình
h a th ng
c xây d ng v$i b n dao ng t 10
n 60 micro giây.
S l ng t i a các i m có th hi n th trên m t CRT
c g i là
phân
gi i (resolution). M t nh ngh-a chính xác h n c a
phân gi i là s l ng các
i m trên m t centimet mà có th
c v& theo chi u ngang và chi u d c, m,c
dù nó th ng
c xem nh là t ng s i m theo m0i h $ng.
Kích th $c v t lí c a màn hình
h a
c tính t
dài c a
ng chéo
màn hình, th ng dao ng t 12 n 27 inch ho,c l$n h n. M t màn hình CRT
có th

c k t h p v$i nhi u lo i máy khác nhau, do ó s l ng các i m trên
màn hình có th
c v& th t s cịn tùy thu c vào kh n.ng c a h th ng mà nó
k t h p vào.

8


M t thu c tính khác c a màn hình n a là t+ s ph ng (aspect ratio). T+ s
ph ng là t+ l c a các i m d c và các i m ngang c n
phát sinh các o n
th'ng có
dài n v theo c hai h $ng trên màn hình (trong m t s tr ng
h p ng i ta th ng dùng t+ s ph ng nh là t+ s c a các i m theo chi u
ngang so v$i các i m theo chi u d c). V$i các màn hình có t+ s ph ng khác
1, d) dàng nh n th y là các hình vng hi n th trên nó s& có d ng hình ch
nh t, các hình trịn s& có d ng hình ellipse. Th c ra khái ni m t+ s ph ng xu t
phát t b n ch t kho ng cách (n u tính cùng m t n v
dài) gi a các i m
d c không b ng kho ng cách gi a các i m ngang. M t t+ s ph ng có giá tr
¾ có ngh-a là v& 3 i m theo chi u d c s& có cùng
dài v$i vi c v& 4 i m
theo chi u ngang.
B. Màn hình d ng i m (raster - scan display)
Màn hình d ng i m là d ng th ng g,p nh t trong s các d ng màn hình s!
d ng CRT d a trên cơng ngh truy n hình.
Trong h th ng này, chùm tia i n t! s&
c quét ngang qua màn hình, m0i l n
m t dòng và quét tu n t t trên xu ng d $i. S b t t#t c a các i m sáng trên
màn hình ph thu c vào c ng

c a tia i n t! và ây chính là c s c a vi c
t o ra hình nh trên màn hình.
M0i i m trên màn hình
c g i là m t pixel hay là pel (vi t t#t c a picture
element). Các thông tin v hình nh hi n th trên màn hình
c l u tr trong
m t vùng b nh$ g i là vùng m làm t i (refresh buffer) hay là vùng m
khung (frame buffer). Vùng b nh$ này l u tr t p các giá tr c ng
sáng c a
toàn b các i m trên màn hình và ln ln t n t i m t song ánh gi a m0i i m
trên màn hình và m0i ph n t! trong vùng này.

Hình 1.5: Quá trình t o hình nh c a các tia quét
thay i các hình nh c n hi n th , các giá tr t ng ng v$i v trí và
sáng ph i
c ,t vào vùng m khung. Hình 1.8 minh h a các giá tr t ng
ng trong vùng m khung hi n th hình nh c a ch A trên màn hình.
i v$i màn hình en tr#ng, vùng m khung còn
c g i là bitmap, v$i
các màn hình khác vùng m khung th ng
c g i là pixmap.

9


t o ra các nh en tr#ng, n gi n ch+ c n l u thông tin c a m0i pixel
b ng 1 bit (các giá tr 0, 1 s& t ng tr ng cho vi c t#t (t i), b t (sáng) pixel trên
màn hình). Trong tr ng h p nh nhi u màu, ng i ta c n nhi u bit h n, n u
thông tin c a m0i pixel
c l u b ng b bit, thì ta có th có 2b giá tr màu phân

bi t cho pixel ó.

Hình 1.6: Song ánh gi a vùng

m khung và màn hình

Trong các màn hình màu, ng i ta nh ngh-a t p các màu làm vi c trong
m t b ng tra (LookUp Table - LUT). M0i ph n t! c a LUT nh ngh-a m t b
ba giá tr R (Red), G (Green), B (Blue) mô t m t màu nào ó. Khi c n s! d ng
m t màu, ta ch+ c n ch+ nh s th t (index) t ng ng c a màu ó trong LUT.
B ng LUT có th
c thay i b i các ng d ng và ng i l p trình có th can
thi p i u khi n. V$i cách làm này chúng ta có th ti t ki m khơng gian l u tr
cho m0i ph n t! trong vùng m khung.
S ph n t! c a LUT
c xác nh t s l ng các bits/pixel. N u m0i ph n
t! c a vùng m khung dùng b bits l u thơng tin c a m t pixel, thì b ng LUT
có 2b ph n t!. N u b=8, LUT s& có 28=256 ph n t!, ó chính là s màu có th
c hi n th cùng m t lúc trên màn hình.
Vi c làm t i trên màn hình d ng này
c th c hi n t c
60 n 80
frame/giây. ơi khi t c
làm t i cịn
c bi u di)n b ng n v Hertz (Hz –
s chu kì/ giây), trong ó m t chu kì t ng ng v$i m t frame. S! d ng n v
này, chúng ta có th mơ t t c
làm t i 60 frame/giây n gi n là 60Hz. Khi
t n cu i m0i dòng quét, tia i n t! quay tr l i bên trái c a màn hình
b#t

u dịng qt k ti p. Vi c quay tr l i phía trái màn hình sau khi làm t i m0i
dịng qt
c g i là tia h i ngang (horizontal retrace). Và t$i cu i m0i frame,
tia i n t! (tia h i d c – vertical retrace) quay tr l i góc trên bên trái c a màn
hình chu%n b b#t u frame k ti p.
Trong m t s màn hình, m0i frame
c hi n th thành hai giai o n s! d ng
k- thu t làm t i an xen nhau (interlaced refesh). 3 giai o n u tiên, tia quét
s& quét m t s dòng t trên xu ng d $i, sau tia h i d c, các dòng còn l i s&
c
quét. Vi c an xen các dòng quét này cho phép chúng ta th y
c tồn màn
hình hi n th ch+ trong m t n!a th i gian so v$i dùng quét t t c các dòng m t
l n t trên xu ng d $i. K- thu t này th ng
c dùng cho lo i màn hình có t c
làm t i th p.

10


Hình 1.7: Ho t

ng c a màn hình interlaced

1.3.1.2. Các thi t b nh p
Hai lo i thi t b nh p c b n nh t trong máy tính v2n là chu t và bàn phím.
A. Bàn phím : Xu t hi n trong h u h t các máy tính, nó là thi t b
nh p d
li u d ng v.n b n và s . ây là lo i thi t b quen thu c nh t v$i ng i s! d ng
tuy có h n ch là t ng tác không cao.

B. Chu t : Cùng v$i s xu t hi n c a các ng d ng
h a t ng tác cao,
chu t là thi t b nh p ngày càng quen thu c v$i ng i s! d ng. Ng i ta dùng
chu t
tr" và ch n (point-click) các ch c n.ng phù h p v$i yêu c u c a mình.
B ng cách này, giao ti p gi a ng i dùng và máy tính càng ngày càng thân thi n
và d) dàng h n. Ngồi ra chúng ta c/ng có m t s thi t b nh p khác cùng h
v$i chu t nh track ball, …

1.3.2. Ph n m m
Ph n m m
h a có th phân thành 2 lo i : các cơng c l p trình và các trình
ng d ng
h a ph c v cho m t m c ích nào ó. Các cơng c l p trình cung
c p m t t p các hàm
h a có th
c dùng trong các ngơn ng l p trình c p
cao nh C, Pascal, .. Ví d nh các th vi n
h a c a các ngôn ng nh C,
Pascal hay GL (Graphics Library) c a Silicon Graphics. Các hàm c s c a nó
bao g m vi c t o các i t ng c s c a hình nh nh o n th'ng, a giác,
ng tròn,…, thay i màu s#c, ch n khung nhìn, áp d ng các phép bi n i,…
Trong khi ó, các ng d ng
h a
c thi t k cho nh ng ng i dùng khơng
ph i là l p trình viên, cho phép ng i dùng t o các i t ng, hình nh, … mà
không c n quan tâm t$i vi c chúng
c t o ra nh th nào. Ví d nh là
Photoshop, AutoCAD, …
• Bi u di n t a

Thơng th ng các h
h a s! d ng h t a
Descartes mô t
i t ng.
N u các t a
c a i t ng
c mô t trong các h t a
khác nh t a
c u, …, chúng ph i
c chuy n v t a
Descartes tr $c khi dùng.
• Quy trình hi n th
i t ng
Tr $c tiên chúng ta mô t các i t ng thành ph n c a m t nh ph c t p
trong các h t a
riêng thu n ti n cho vi c bi u di)n t a
c a chúng. Các
h t a
này
c g i là h t a
mơ hình (modeling coordinates) hay cịn g i
là h t a
c c b (local coordinates). M t khi các i t ng thành ph n
c
bi u di)n xong, chúng ta s& ,t chúng vào các v trí t ng ng trong nh s!
d ng h t a
th gi$i th c (world coordinates). Sau cùng, các mô t c a nh
trong h t a
th gi$i th c s&
c chuy n n m t ho,c nhi u h t a

khác
11


nhau c a thi t b hi n th , tùy vào chúng ta mu n hi n th trên thi t b nào. Các
h t a
này còn
c g i là h t a
thi t b (device coordinates). Các mô t
trong các h t a
c c b và h t a
th gi$i th c cho phép chúng ta s! d ng
th nguyên thích h p cho các n v o mà khơng ph i b ràng bu c gì c a t ng
thi t b hi n th c th .

Hình 1.8: Quy trình hi n th

it

ng

Thơng th ng, các h
h a chuy n các mô t trong h t a
th gi$i th c
t$i h t a
thi t b chu%n (normalized device coordinates) có các chi u là n
v tr $c khi chuy n t$i h t a
thi t b . i u này làm cho h th ng c l p v$i
nhi u lo i thi t b khác nhau.
• Các hàm

h a
Các hàm
h a cung c p kh n.ng t o và thao tác hình nh. Các hàm này
c
phân lo i nh sau :
-T p các công c t o ra các i t ng
h a c s nh i m, o n
th'ng,
ng cong, vùng tơ, kí t , …
-T p các công c thay i thu c tính dùng
thay i thu c tính c a
các i t ng
h a c s nh màu s#c, ki u
ng, ki u ch , m2u
tô, …
-T p các công c th c hi n các phép bi n i hình h c dùng
thay
i kích th $c v trí, h $ng c a các i t ng, …
-T p các công c bi n i h quan sát dùng
xác nh v trí quan sát
i t ng và v trí trên thi t b hi n th
c dùng
hi n th
i
t ng.
-T p các công c nh p li u : Các ng d ng
h a có th s! d ng
nhi u lo i thi t b nh p khác nhau nh bút v&, b ng, chu t, bàn
phím,…
i u khi n và x! lí dịng d li u nh p.


12


Cu i cùng là t p các công c ch a các thao tác dùng cho vi c qu n lí và i u
khi n ví d nh xóa tồn b màn hình, thi t l p ch
h a, …
• Các chu n ph n m m
M c tiêu c.n b n c a các ph n m m
h a
c chu%n là tính t ng thích.
Khi các cơng c
c thi t k v$i các hàm
h a chu%n, ph n m m có th
c
di chuy n m t cách d) dàng t h ph n c ng này sang h ph n c ng khác và
c dùng trong nhi u cài ,t và ng d ng khác nhau.
Sau nh ng n0 l c không nh" c a các t ch c chu%n hóa c a các qu c gia và
qu c t , m t chu%n cho vi c phát tri n các ph n m m
h a ã ra i ó là
GKS (Graphics Kernel System – H
h a c s ). H th ng này ban u
c
thi t k cho t p các công c
h a hai chi u, sau ó
c phát tri n và m r ng
cho
h a ba chi u.
Các hàm c a GKS th c s ch+ là các mô t tr u t ng, c l p v$i b t kì ngơn
ng l p trình nào.

cài ,t m t chu%n
h a cho ngôn ng c th nào, các cú
pháp t ng ng s&
c xác nh và c th hóa.
M,c dù GKS xác l p
c các ý t ng ban u cho các hàm
h a c s , tuy
nhiên nó khơng cung c p m t cách th c chu%n cho vi c giao ti p
h a v$i các
thi t b xu t. Nó c/ng khơng xác nh các cách th c cho các mơ hình th i gian
th c c/ng nh các cách th c l u tr và chuy n i hình nh. Các chu%n cho các
cách th c này
c xây d ng riêng, c th là : Các chu%n cho các cách th c giao
ti p thi t b
c cho b i h CGI (Computer Graphics Interface System), h
CGM (Computer Graphics Metafile) xác nh các chu%n cho vi c l u tr và
chuy n
i hình nh, và h PHIGS (Programmer’s Hierarchical Interactive
Graphics Standard) xác nh các cách th c chu%n cho các mơ hình th i gian th c
và các kh n.ng l p trình m c
cao h n mà ch a
c quan tâm t$i trong
GKS.

1.4 Các h màu c b n
Vi c nghiên c u màu s#c bao g m nhi u l-nh v c nh : quang h c, sinh lí
h c, tâm lí h c và các nhân t khác thu c v con ng i. Vì th , có r t nhi u
quan ni m c/ng nh các thành ng v khoa h c các màu s#c.
i v$i nh ng
ng i làm tin h c, v n

mà h quan tâm là m i t ng tác qua l i gi a s c m
nh n màu s#c c a con ng i v$i các b ph n ph n c ng hi n th màu s#c c a
màn hình máy tính, và v$i các ph n m m thi t k trên nó.

13


B ng d $i ây s& trình bày m i quan h này :
S c m nh n
c a con ng i

c i m ph n c ng

c i m ph n
m m

Màu s#c

Các màu hi n th g c

Thu t tốn trên
khơng gian màu

S#c
màu
(Hue)

B $c sóng
(WaveLength)


bão hịa
(Saturation)

S thu n nh t c a màu

sáng hay
chói
S "rung" c a
màn hình

C
T c

ng
làm t

sáng

Hi u ch+nh gamma

i (refresh)

Không gian màu (color space) do ó
c a ra
nh các màu hi n th
trên máy tính b i vì chúng làm n gi n hóa các thao tác tính tốn c n thi t cho
vi c chuy n i màu s#c (color transformation). Không gian màu có th
c
thi t k ho,c là d a trên c s c a b phát sinh màu c a ph n c ng (hardware
color generation) (ví d nh khơng gian RGB) ho,c là d a trên s c m nh n

màu s#c c a m#t (nh không gian HSL). V$i m t ng d ng, vi c ch n không
gian màu nào s! d ng tùy thu c vào m t s nhân t sau :
chính xác mà các
nhà thi t k c n ki m soát màu s#c (color control); yêu c u v s t ng tác gi a
các màu s#c và t c
các tính tốn cho ng d ng ó.

1.4.1 Khơng gian RGB (RGB space)
Khơng gian RGB mô t màu s#c b ng ba thành ph n Red, Green, Blue.
Không gian này
c minh h a b ng m t kh i l p ph ng v$i các tr c chính
RED(R), GREEN(G), BLUE(B).
M0i màu trong khơng gian RGB u
c bi u di)n nh là m t vector thông
qua ba vector c s là Red, Green, Blue. Do ó, ng v$i các t h p khác nhau
c a ba màu này s& cho ta m t màu m$i.

14


Hình 1.9: Mơ hình khơng gian RGB
Trong hình l p ph ng m0i màu g c (Red, Green, Blue)
c ,t vào góc
i di n v$i các màu bù nó. (Hai màu bù nhau là hai màu mà khi k t h p t o
thành màu tr#ng hay xám (grey)). Nh v y Red i di n v$i Cyan, Green i
di n v$i Magenta, Blue i di n v$i Yellow. Giá tr xám n m trên
ng chéo
n i các +nh (0,0,0);(1,1,1) c a hình l p ph ng. Th ng th ng các tr c R, G,
B
c chu%n hóa. Khi k t h p hai màu l i v$i nhau thì màu sinh ra có vector

b ng t ng các vector thành ph n.
• M t s thu n l i khi dùng không gian RGB :
- Không gian RGB là chu%n cơng nghi p cho các thao tác
h a máy
tính. Các thao tác màu s#c có th
c tính tốn trên các không gian màu
khác nh ng cu i cùng c n ph i chuy n v khơng gian RGB có th hi n
th trên màn hình (do thi t k c a ph n c ng d a trên mô hình RGB).
- Có th chuy n i qua l i gi a không gian RGB v$i các không gian
màu khác nh CIE, CMY, HSL, HSV, ...
- Các thao tác tính tốn trên khơng gian RGB th ng n gi n h n.
• M ts b tl i:
- Các giá tr RGB c a m t màu là khác nhau i v$i các màn hình khác
nhau : Ngh-a là các giá tr RGB c a màu tiùm trên màn hình màu này s&
khơng sinh ra úng màu ó trên m t màn hình khác.
- S mơ t các màu trong th gi$i th c i v$i khơng gian RGB cịn
nhi u h n ch b i vì khơng gian RGB khơng hoàn toàn phù h p v$i s
c m nh n màu s#c c a con ng i. Hai i m phân bi t trong không gian
RGB, v$i m#t ng i có th ho,c khơng th là th hi n c a hai màu khác
nhau. Chính vì i u này mà không gian RGB không th ánh x tr c ti p
n b t c chi u c m nh n nào khác (nh hue, saturation, lightness) ngồi
hue (s#c ).

1.4.2 Khơng gian HSL
Khơng gian này có chú tr ng h n không gian RGB n các thành ph n c a
s c m nh n màu s#c c a m#t (Hue, Saturation, Lightness). Tuy nhiên, không
15


gian HSL th c ra c/ng ch+ là m t phép bi n i g n úng c a không gian RGB

mà thôi. Không gi ng nh các không gian màu khác xây d ng trên s c m nh n
màu s#c c a m#t, khơng gian HSL v2n cịn b l thu c vào ph n c ng c a CRT.
Không gian HSL
c bi u di)n trong h t a
tr , hình minh h a là hai
hình nón úp vào nhau. H (Hue) là to
ng v$i góc quay, S (Saturation) là t a
g c, L là tr c th'ng ng. H u h t các màu t bão hòa khi S = 1 và L = 0.5.

Hình 1.10: Mơ hình khơng gian HSL
• M t s thu n l i c a không gian HSL :
- Không gian HSL g n v$i s c m nh n các thu c tính màu s#c c a
con ng i h n không gian RGB (tuy cách ti p c n ã n gi n hóa
i nhi u). Các màu
c xác nh d) dàng h n ch'ng h n do H
quay quanh tr c ng nên các màu bù
c xác nh m t cách d)
dàng, i v$i các giá tr lightness c/ng v y.
- Vi c ki m soát các màu c s HSL d) h n cho nh ng ng i m$i
làm quen v$i các ch ng trình h a.
• M ts b tl i:
- Vi c thêm vào m t vector không th th c hi n n gi n nh
không gian RGB (ch+ thêm vào các thành ph n màu). Các thao tác
l ng giác khi bi n i s& nh h ng áng k
n t c
c a
ch ng trình.
- C n ph i qua hi u ch+nh gamma tr $c khi hi n th (gi ng nh các
không gian khác).


1.4.3 Không gian HSV
Không gian HSV th c ch t c/ng ch+ là m t s bi n i khác c a khơng gian
RGB. Khơng gian HSV
c mơ hình b ng hình l p ph ng RGB quay trên
+nh Black c a nó. H (Hue) là góc quay quanh tr c Values, S (Saturation) i t
0 n 1, tr c V (Values) do v y t ng ng v$i
ng chéo n i +nh White và
Black.

16


Hình 1.11: Mơ hình khơng gian HSV
Theo cách này, các màu t bão hịa khi S=1 và V=1. Trong khơng gian HSV
các màu
c chu%n hóa v s các gam (gamut) màu c a thi t b hi n th .
• M t s thu n l i c a không gian HSV :
- Không gian HSV d) dàng áp ng các màu s#c c a các ch ng trình
h a do
c xây d ng d a trên s b#t ch $c lu t tr n màu c a ng i
h a s-. Ví d : Khi c n thêm màu tr#ng vào, ph i ,t V=S=1 sau ó
gi m S t t cho t$i khi t
c màu v a ý; hay khi c n thêm màu en
vào, i u ó có ngh-a là gi m V (c ng
sáng) và c
nh S,...
- Do không c n s! d ng các phép bi n i l ng giác khi mu n
chuy n sang khơng gian RGB nên khơng gian HSV có nhi u thu n l i
v m,t tính tốn h n so v$i khơng gian HSL.
• M ts b tl i:

- C n có các phép hi u ch+nh gamma.

1.4.4 Khơng gian màu CMY (Cyan - Magenta - Yellow)
T ng t nh không gian màu RGB nh ng 3 thành ph n chính là Cyan Magenta - Yellow. Do ó, t a
các màu trong không gian CMY trái ng c v$i
không gian RGB. Ví d : màu White có các thành ph n là (0,0,0), màu Black
(1,1,1), màu Cyan (1,0,0),....

17


B ng so sánh gi a các không gian màu
RGB

HSL

HSV

Chu%n cơng
nghi p cho các
thao tác
h a
máy tính

Hình th c bi n i
khác c a khơng
gian RGB

Hình th c bi n i
khác c a không

gian RGB

Liên h tr c ti p
v$i ph n c ng

Liên h g n h n
v$i s c m nh n
màu s#c c a con
ng i

Liên h g n h n v$i
s c m nh n màu
s#c c a con ng i

Là chuy n i
cu i cùng cho t t
c các nhu c u
hi n th

òi h"i các phép
bi n i ph c t p

ã n gi n hóa các
thao tác tính tốn.

Khơng th chuy n
sang màn hình
khác (ph thu c
thi t b )


c l p thi t b

c l p thi t b

Khơng có s
t ng ng 1-1 v$i
cách c m nh n
màu c a con
ng i





Mơ hình là hình
l p ph ng

Mơ hình là hai
hình nón úp vào
nhau

Mơ hình là hình nón
n

c chu%n hóa
v 1

c chu%n hóa v
1


bão hịa t
max khi S =1

bão hịa t
max khi S =1, L
=0.5

Tr n màu không
rõ ràng

Rõ ràng

c chu%n hóa v
1
bão hịa t max
khi S =1, V =1
Rõ ràng

18


Ch

ng 2
Các thu t tốn v

ng và

tơ màu c b n
2.1 H t a

chu n

th gi i th c, h t a

thi t b và h t a

Trong l-nh v c k thu t
h a, chúng ta ph i hi u
c r ng th c ch t c a
h a là làm th nào
có th mơ t và bi n i
c các i t ng trong th
gi$i th c trên máy tính. B i vì, các i t ng trong th gi$i th c
c mô t
b ng t a
th c. Trong khi ó, h t a
thi t b l i s! d ng h t a
nguyên
hi n th các hình nh. ây chính là v n
c b n c n gi i quy t. Ngồi ra,
cịn có m t khó kh.n khác n a là v$i các thi t b khác nhau thì có các nh ngh-a
khác nhau. Do ó, c n có m t ph ng pháp chuy n i t ng ng gi a các h
t a
và i t ng ph i
c nh ngh-a b i các thành ph n n gi n nh th
nào có th mơ t g n úng v$i hình nh th c bên ngồi.
Hai mơ hình c b n c a ng d ng
h a là d a trên m2u s hóa và d a trên
,c tr ng hình h c. Trong ng d ng
h a d a trên m2u s hóa thì các i

t ng
h a
c t o ra b i l $i các pixel r i r c. Các pixel này có th u c
t o ra b ng các ch ng trình v&, máy qt, ... Các pixel này mơ t t a
xác
nh v trí và giá tr m2u. Thu n l i c a ng d ng này là d dàng thay i nh
b ng cách thay i màu s#c hay v trí c a các pixel, ho,c di chuy n vùng nh t
n i này sang n i khác. Tuy nhiên, i u b t l i là khơng th xem xét i t ng t
các góc nhìn khác nhau. 4ng d ng
h a d a trên ,c tr ng hình h c bao g m
các i t ng
h a c s nh o n th'ng, a giác,.... Chúng
c l u tr b ng
các mơ hình và các thu c tính. Ví d : o n th'ng
c mơ hình b ng hai i m
u và cu i, có thu c tính nh màu s#c,
dày. Ng i s! d ng không thao tác
tr c ti p trên các pixel mà thao tác trên các thành ph n hình h c c a i t ng.

2.1.1 H t a

th gi i th c

M t trong nh ng h t a
th c th ng
c dùng
mô t các i t
trong th gi$i th c là h t a
Descartes. V$i h t a
này, m0i i m P

bi u di)n b ng m t c,p t a
(x ,y ) v$i x , y ∈ R
p

p

p

ng
c

p

19


y

yp

0

P( xp, yp)

xp

Hình 2.1: H t a

x


th gi$i th c

. Ox : g i là tr c hoành.
. Oy : g i là tr c tung.
i m P.
. x : hoành
p

. y : tung
p

2.1.2 H t a

i m P.

thi t b

H t a
thi t b (device coordinates)
c dùng cho m t thi t b xu t c th
nào ó, ví d nh máy in, màn hình,..
Trong h t a
thi t b thì các i m c/ng
c mơ t b i c,p t a
(x,y).
Tuy nhiên, khác v$i h t a
th c là x, y ∈ N. i u này có ngh-a là các i m
trong h t a
th c
c nh ngh-a liên t c, còn các i m trong h t a

thi t
b là r i r c. Ngoài ra, các t a
x, y c a h t a
thi t b ch+ bi u di)n
c
trong m t gi$i h n nào ó c a N.
Ví d :
phân gi i c a màn hình trong ch
h a là 640x480. Khi ó,
x∈(0,640) và y∈(0,480) (xem hình 2.2).
640 x

0

480

y
Hình 2.2: H t a

2.1.3 H t a
th

trên màn hình

thi t b chu n (Normalized device coordinates)

Do cách nh ngh-a các h t a
thi t b khác nhau nên m t hình nh hi n
c trên thi t b này là chính xác thì ch a ch#c hi n th chính xác trên thí t
20



b khác. Ng i ta xây d ng m t h t a
thi t b chu%n i di n chung cho t t
c các thi t b
có th mơ t các hình nh mà khơng ph thu c vào b t k* thi t
b nào.
Trong h t a
chu%n, các t a
x, y s&
c gán các giá tr trong o n t
[0,1]. Nh v y, vùng không gian c a h t a
chu%n chính là hình vng n v
có góc trái d $i (0, 0) và góc ph i trên là (1, 1).
Q trình mơ t các i t ng th c nh sau
: i t ng
h a
c nh
ngh"a trong t a
th gi i th c.

Màn hình
T a

chu n hóa

T a

thi t b


Máy in
Thi t b khác

2.2 Các thu t toán v

ng d a trên i m

2.2.1 Các thu t toán v

ng th!ng

Xét
ng th'ng có h s góc 0<m≤1 và 5x>0.
V$i các o n th'ng d ng này, n u (xi, yi) là i m ã
c xác nh b $c
th i thì i m k ti p (xi+1, yi+1) b $c th i +1 s& là m t trong hai i m sau: (xi
+ 1, yi) ho,c (xi + 1, yi + 1).

Hình 2.3: Các i m g n v$i i m mu n v&
V n
,t ra là ch n i m v& nh th nào
ng th'ng
c v& g n v$i
ng th'ng mu n v& nh t và t
c t i u hóa v m,t t c
?
A. Thu t tốn DDA (Digital DifferentialAnalyzer)
Là thu t tốn tính tốn các i m v& d c theo
ng th'ng d a vào h s góc
c a ph ng trình

ng th'ng y=mx+b.
Trong ó, m=∆y/∆x , 5y = y - y , 5x = x - x
i+1

i

i+1

i

21


Nh n th y trong hình v& thì t a
c a i m x s& t.ng 1 n v trên m0i i m
v&, còn vi c quy t nh ch n y là y +1 hay y s& ph thu c vào giá tr sau khi
i +1

i

i

làm tròn c a tung
y. Tuy nhiên, n u tính tr c ti p giá tr th c c a y m0i
b $c t ph ng trình y=mx+b thì c n m t phép toán nhân và m t phép toán
c ng s th c.
y = mx + b = m(x + 1) + b = mx + b + m
i +1

i +1


c i thi n t c
Ta có : y = mx + b
i

i

i

, ng i ta kh! phép nhân trên s th c.
y = y + m 6 int(y )

i

i +1

i

i +1

• Tóm l i khi 0x =x +1
y
• Tr

i +1
i +1

i


= y + m 6 int(y
i

)

i +1

ng h p m>1: ch n b $c t.ng trên tr c y m t
x = x + 1/m 6 int(x )
y

i +1
i +1

i

=y +1

nv.

i +1

i

Hai tr ng h p này dùng
v& m t i m b#t u t bên trái n i m cu i
cùng bên ph i c a
ng th'ng (xem hình 1.5). N u i m b#t u t bên ph i
n i m cu i cùng bên trái thì xét ng c l i :
• 0

x = xi - 1
y
• m>1:
x
y

i +1

= yi - m 6 int(yi+1)

i +1

= xi - 1/m 6 int(xi+1)

i +1

= yi - 1

i +1

T ng t , có th tính tốn các i m v& cho tr
|m|>1 (sinh viên t tìm hi u thêm).

Hình 2.4: Hai d ng

ng h p m<0: khi |m|≤1 ho,c

ng th'ng có 0
22



L u

thu t toán DDA:

Begin

dx = x2 - x1
dy = d2 - d1

Yes

No

abs(dx)>abs(dy)

steps=abs(dx
)

steps=abs(dy)

k=1
x_inc=dx/steps
y_inc=dy/steps
x=x1;y= y1
putpixel(x1,y1,c)

k ≤ steps


No

Yes

k=k+1
x = x+x_inc
y = y+y_inc
putpixel(round(x),round(y),c)

End

23


Cài ,t minh h a thu t toán DDA trên PASCAL
Procedure DDA ( x1, y1, x2, y2, color : integer );
Var
dx, dy, step : integer;
x_inc, y_inc , x, y : real ;
Begin
dx:=x2-x1;
dy:=y2-y1;
if abs(dx)>abs(dy) then steps:=abs(dx)
else steps:=abs(dy);
x_inc:=dx/steps;
y_inc:=dy/steps;
x:=x1; y:=y1;
putpixel(round(x),round(y), color);
for k:=1 to steps do
begin

x:=x+x_inc;
y:=y+y_inc;
putpixel(round(x),round(y), color);
end;
end;
B. Thu t tốn Bresenham

Hình 2.5: D ng

G i (x +1,y
i

i +1

ng th'ng có 0≤m≤1

) là i m thu c o n th'ng (xem hình).

Ta có y= m(x +1)+b.
i

24


,t
d =y
1

i +1


2

i

-y

i

d = (y +1) - y
Vi c ch n i m (x

i +1

i +1

,y

i +1

) là P1 hay P2 ph thu c vào vi c so sánh d1 và d2

hay d u c a d1-d2.
- N u d1-d2<0 : ch n i m P1, t c là y

i +1

- N u d1-d2 70 : ch n i m P2, t c là y

=y


i +1

i

= y +1
i

Xét P = 5x (d - d )
i

1

Ta có : d - d = 2 y
1

2

2

i+1

- 2y - 1
i

= 2m(x +1) + 2b - 2y - 1
i

i

P = 5x (d - d ) = 5x[2m(x +1) + 2b - 2y - 1]

i

1

2

i

i

= 5x[2(5y/5x)(x +1) + 2b - 2y - 1]
i

i

= 25y(x +1) - 25x.y + 5x(2b - 1)
i

i

= 25y.x - 25x.y + 25y + 5x(2b - 1)
i

i

i

i

V y C = 25y + 5x(2b - 1) = Const

P = 25y.x - 25x.y + C
i

Nh n xét r ng n u t i b $c th i ta xác

nh

c d u c a P thì xem nh ta

xác nh
c i m c n ch n b $c (i+1). Ta có :
P - P = (25y.x - 25x.y + C) - (25y.x - 25x.y + C )
i +1

P

i

i +1

i+1

i+1

= P + 25y - 25x ( y
i

i+1

i


i

i +1

i

i

i +1

i

- N u P 7 0 : ch n i m P2, t c là y
c tính t

i m v&

0

0

i +1

= P + 25y.

= y +1 và P

i


i +1

= P + 25y - 25x
i

u tiên (x ,y ) theo công th c :
0

P = 25y.x - 25x.y + C
0

Do (x ,y ) là i m nguyên thu c v
0

= y và P

i

0

i

- .y )

- N u P < 0 : ch n i m P1, t c là y
- Giá tr P

i

0


0

o n th'ng nên ta có :

y = m x + b = (5y/5x).x + b
0

0

Th vào ph ng trình trên ta
P = 25y - 5x

0

c:

0

25


×