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.3 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
ng biên.......................................... 41
2.3.3 Ph ng pháp tô màu d a theo
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
ng th'ng......................................... 51
3.3.1 Phép bi n i affine b o tồn
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
ng cong và m,t cong .............................................................. 85
5.2.2 Các
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
ó nghiên c u, xây d ng
ngh-a nh m t l-nh v c c a công ngh thông tin mà
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
c ph m t l$p phosphor. T i m0i v trí t ng tác v$i tia i n t!, h t
hình
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
b n

gian phát sáng sau khi tia CRT khơng cịn tác ng. L$p phosphor có
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.
b n cao th ng
c dùng cho vi c hi n th các nh
L$p phosphor có
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
c l u tr trong
element). Các thơng tin v hình nh hi n th trên màn hình
m t vùng b nh$ g i là vùng m làm t i (refresh buffer) hay là vùng m
sáng c a
khung (frame buffer). Vùng b nh$ này l u tr t p các giá tr c ng
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
c l u b ng b bit, thì ta có th có 2b giá tr màu phân

thông tin c a m0i pixel
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.
c th c hi n t c
60 n 80
Vi c làm t i trên màn hình d ng này
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.
h a t ng tác cao,
B. Chu t : Cùng v$i s xu t hi n c a các ng d ng
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

h a chuy n các mô t trong h t a
th gi$i th c
Thông th ng, các h
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ú
c xác nh và c th hóa.
pháp t ng ng s&
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
c ,t vào góc
Trong hình l p ph ng m0i màu g c (Red, Green, Blue)
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.
c bi u di)n trong h t a
tr , hình minh h a là hai
Khơng gian HSL
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
c mơ hình b ng hình l p ph ng RGB quay trên
RGB. Không gian HSV
+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 chu%n hóa v s các gam (gamut) màu c a thi t b hi n th .
các màu
• 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
xá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
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

. Ox : g i là tr c hoành.

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

. y : tung
p

2.1.2 H t a

P( xp, yp)

xp

Hình 2.1: H t a

x

th gi$i th c

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

2.1.3 H t a
th

Hình 2.2: H t a


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.
chu%n, các t a
x, y s&
c gán các giá tr trong o n t
Trong h t a
[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.
c xác nh b $c
V$i các o n th'ng d ng này, n u (xi, yi) là i m ã
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&
,t ra là ch n i m v& nh th nào
ng th'ng
c v& g n v$i

V n
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

i +1

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

i

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

i +1

i +1

i

i

= y + m 6 int(y
i

i +1

)

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 :
• 0x = 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

- .y )
i

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

i +1

i

i

i +1

i

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

0


c tính t

i m v&

0

= P + 25y.

= y +1 và P
0

0

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

i +1

i

i +1

= P + 25y - 25x
i

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

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


i

= y và P

i

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



×