Tập bài giảng Đồ họa máy tính gồm có 6 chương với những nội dung chính sau: Tổng quan về đồ họa máy tính, các thuật toán vẽ đường và tô màu cơ bản, các phép biến đổi hình học 2D, hiển thị các đối tượng 2D, tổng quan về đồ họa 3D, các phép biến đổi trong đồ họa 3D.
Trang 2L 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 h a máy tính c a
th y và trò khoa Công ngh thông tin - tr ng 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 c biên so n ch y u d a trên Giáo trình K thu t h a máy tính c a khoa CNTT - HBK Hà N i và Giáo trình
h a máy tính (dùng cho h ào t o t xa) c a HQG TP H Chí Minh Ngoà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, ngoà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 toá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 c s óng góp ý ki n c a quý ng nghi p và c a các
em sinh viên 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
Trang 3M c l 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 toán v& ng th'ng 21
2.2.2 Các thu t toán v& ng tròn 27
2.3 Các thu t toá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 quét (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 toà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 toàn 51
3.4 M t s phép bi n i khác 52
Trang 43.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 toá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
Trang 5Ch ng 1
T ng quan v h a máy tính
1.1 Khái ni m v 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 toá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)
Trang 6Hình 1.1: Hình nh h a t 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 c c 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 a t 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
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& c h
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
Trang 7Hì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 quá 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 toán nh ng thông s c n thi t c a m ch
Trang 81.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
Trang 9M 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 vuông 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
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
Trang 10t 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 quét 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 quét 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 toà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
Trang 11Hì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 Ngoà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, …
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
Trang 12nhau 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
-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
Trang 13Cu 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 toà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ó
Trang 14B ng d $i ây s& trình bày m i quan h này :
S c m nh n
Màu s#c Các màu hi n th g c Thu t toán trên
không gian màu S#c màu
(Hue) (WaveLength) B $c sóng bão hòa
(Saturation) S thu n nh t c a màu
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
Trang 15Hì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 toá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 toán trên không gian RGB th ng n gi n h n
• M t s b t l 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) ngoà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
Trang 16gian 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
+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
Trang 17Hì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
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),
Trang 18B ng so sánh gi a các không gian màu
Hình th c bi n i khác c a không gian RGB
Trang 19h 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 Ngoà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 ngoà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 quét, 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 ng
trong th gi$i th c là h t a Descartes V$i h t a này, m0i i m P c
bi u di)n b ng m t c,p t a (xp,yp) v$i xp, yp ∈ R
Trang 20trong 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)
Hình 2.2: H t a trên màn hình
2.1.3 H t a 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
th 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
Trang 21b 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
A Thu t toán DDA (Digital DifferentialAnalyzer)
Là thu t toán tính toán các i m v& d c theo ng th'ng d a vào h s góc
Trang 22Nh 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 yi +1 là yi +1 hay yi s& ph thu c vào giá tr sau khi 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
T ng t , có th tính toán các i m v& cho tr ng h p m<0: khi |m|≤1 ho,c
|m|>1 (sinh viên t tìm hi u thêm)
Trang 23L u thu t toán DDA: Begin
k ≤ steps
k=k+1
x = x+x_inc
y = y+y_inc putpixel(round(x),round(y),c)
End
Yes
No
Trang 24Cà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 ;
Trang 25Pi +1 - Pi = (25y.xi+1 - 25x.yi+1 + C) - (25y.xi - 25x.yi + C )
Trang 26L u thu t toán Bresenham
Cài ,t minh h a thu t toán Bresenham trên PASCAL
Procedure Bres_Line (x, y1, x2, y2 : integer);
Var dx, dy, x, y, P, const1, const2 : integer;
P = P+c1
No
Yes
No P<0
x=x+1 putpixel(x, y, color)
Trang 27Thu t toán Bresenham ch+ thao tác trên s nguyên và ch+ tính toán trên phép
c ng và phép nhân 2 (phép d ch bit) i u này là m t c i ti n làm t.ng t c áng k so v$i thu t toán DDA
Ý t ng chính c a thu t toán này là ch xét d u Pi quy t nh i m k
ti p, và s! d ng công th c truy h i Pi +1 - Pi tính Pi b ng các phép toán n
gi n trên s nguyên
Tuy nhiên, vi c xây d ng tr ng h p t ng quát cho thu t toán Bresenham có
ph c t p h n thu t toán DDA
2.2.2 Các thu t toán v ng tròn
Trong h t a Descartes, ph ng trình ng tròn bán kính R có d ng: V$i tâm O(0,0) : x2 + y2 = R2
V$i tâm C(xc,yc): (x - xc )2 + (y - yc )2 = R2
Trong h t a c c thì
x = xc + R.cos8
y = yc + R.sin8 v$i 8 ∈ [0, 29]
Do tính i x ng c a ng tròn C (xem hình) nên ta ch+ c n v& 1/8 cung tròn, sau ó l y i x ng qua 2 tr c t a và 2 ng phân giác thì ta v& c
c ng tròn
Trang 28Cài ,t minh h a thu t toán n gi n b ng PASCAL:
Procedure Circle (xc, yc, R : integer)
Trang 29Do tính i x ng c a ng tròn nên ta ch+ c n v& 1/8 cung tròn sau ó l y
i x ng là v& c c ng tròn Ta s& s! d ng l i th t c DOIXUNG trên Thu t toán MidPoint a ra cách ch n yi+1 là yi hay yi-1 b ng cách so sánh i m
th c Q(xi+1,y) v$i i m gi a MidPoind là trung i m c a S1 và S2 Ch n i m b#t u v& là (0,R) Gi s! (xi, yi) là i m nguyên ã tìm c b $c th i (xem hình), thì i m (xi+1, yi+1) b $c i+1 là s l a ch n gi a S1(xi + 1, yi) và S2(xi + 1, yi - 1)
- N u Pi >= 0 : i m MidPoint n m ngoài ho,c n m trên ng tròn Khi ó
i m th c Q g n v$i i m S2 h n nên ta ch n yi+1 = yi - 1
M,t khác :
Trang 30Pi+1 - Pi = F(xi+1 +1, yi+1 - 1/2) - F(xi + 1, yi - 1/2) =
[(xi+1 +1)2 + (yi+1 - 1/2)2 - R2 ] - [(xi +1)2 + (yi - 1/2)2 - R2 ] =
2xi + 3 + ((yi+1)2 + (yi)2) - (yi+1 - yi)
V y :
- N u Pi < 0 : ch n yi+1 = yi Khi ó Pi+1 = Pi + 2xi
- Pi >= 0 : ch n yi+1 = yi - 1 Khi ó Pi+1 = Pi + 2xi - 2yi +5
- Pi ng v$i i m ban u ( x0 , y0 ) = (0,R) là:
P0 = F(x0 + 1, y0 - 1/2) = F(1, R - 1/2) = 5/4 - R
Trang 31L u thu t toán MidPoint v& ng tròn
Trang 32Cài ,t minh h a thu t toán MidPoint b ng PASCAL
Procedure DTR(xc, yc, r, mau : integer);
end;
x:=x+1;
end;
end;
T ng t thu t toán v& ng th'ng Bresenham, các v trí ng v$i các t a nguyên n m trên ng tròn có th tính c b ng cách xác nh m t trong hai pixel g n nh t v$i ng tròn th c h n trong m0i b $c (xem hình d $i)
Pi+1 = Pi + 4xi + 6 + 2((yi+1)2 - (yi)2 ) - 2(yi+1 - yi)
- N u Pi < 0 : ch n yi+1 = yi Khi ó Pi+1 = Pi + 4xi +6
Trang 33- N u Pi >= 0 : ch n yi+1 = yi - 1 Khi ó Pi+1 = Pi + 4(xi - yi ) + 10
- P0 ng v$i i m ban u ( x0 , y0 ) = (0,R) là: P0= 3 - 2R
Cài ,t minh h a thu t toán v& ng tròn b ng gi i thu t Bresenham
Procedure DTR_BRES(xc,yc,r,mau : integer);
2.3 Các thu t toán tô màu
Tô màu m t vùng là thay i màu s#c c a các i m v& n m trong vùng c n
tô M t vùng tô th ng c xác nh b i m t ng khép kín nào ó g i là
ng biên D ng ng biên n gi n th ng g,p là a giác
Vi c tô màu th ng chia làm 2 công o n :
Xác nh v trí các i m c n tô màu
Quy t nh tô các i m trên b ng màu nào
Công o n này s& tr nên ph c t p khi ta c n tô theo m t m2u tô nào ó ch không ph i tô thu n m t màu
Có 3 cách ti p c n chính tô màu ó là : tô màu theo t ng i m (có th g i
là tô n gi n), tô màu theo dòng quét và tô màu d a theo ng biên
2.3.1 Tô màu theo t#ng i m (ph ng pháp tô n gi n)
Thu t toán này b#t u t vi c xác nh m t i m có thu c vùng c n tô hay
không ? N u úng là i m thu c vùng c n tô thì s& tô v$i màu mu n tô
Cho j i t yc-r n yc+r
Tính kho ng cách d gi a hai i m (i,j) và tâm (xc,yc)
Trang 34N u d<r thì tô i m (i,j) v$i màu mu n tô
B Tô a giác
- Tìm hình ch nh t nh" nh t có các c nh song song v$i hai tr c t a ch a a giác c n tô d a vào hai t a (xmin, ymin), (xmax, ymax) Trong ó, xmin, ymin là hoành và tung nh" nh t, xmax, ymax là hoành và tung l$n
nh t c a các +nh c a a giác
- Cho x i t xmin n xmax, y i t ymin n ymax (ho,c ng c lai) Xét i m P(x,y) có thu c a giác không ? N u có thì tô v$i màu c n tô (xem hình)
Hình 2.10: a giác n i ti p hình ch nh t
Trang 35Thông th ng m t i m n m trong a giác thì s giao i m t m t tia b t k*
- Pi-1.y < Pi.y < Pi+1.y hay Pi-1.y> Pi.y > Pi+1.y thì Pi là +nh n i u
- Pi = Pi+1 và Pi.y < Min ( Pi+2.y, Pi-1.y) hay Pi.y> Max ( Pi+2.y, Pi-1.y) thì o n [Pi,Pi+1] là o n c c tr ( c c ti u hay c c i )
- Pi = Pi+1 và Pi-1.y < Pi.y < Pi+2.y hay Pi-1.y> Pi.y > Pi+2.y thì o n [Pi,Pi+1] là o n
n i u
• Thu t toán ki m tra i m có n$m trong a giác
- V$i m0i +nh c a a giác ta ánh d u là 0 hay 1 theo qui $c nh sau: n u là
+nh c c tr hay o n c c tr thì ánh s 0 N u là +nh n i u hay o n n
i u thì ánh d u 1
- Xét s giao i m c a tia n a ng th'ng t P là i m c n xét v$i biên c a a giác N u s giao i m là ch'n thì k t lu n i m không th ôc a giác Ng c l i,
s giao i m là l: thì i m thu c a giác
Cài t minh h a thu t toán xét i m thu c a giác b$ng PASCAL
function PointInpoly(d: dinh; P: d_dinh; n: integer): boolean;
Trang 36var count, i: integer;
if ((d[prev(i)].y < P.y) and (P.y < d[next(i)].y)) or
((d[prev(i)].y > P.y) and (P.y > d[next(i)].y)) then
count := count + 1;
if d[next(i)].y = P.y then
if ((d[prev(i)].y < P.y) and (P.y < d[next(next(i))].y)) or
((d[prev(i)].y > P.y) and (P.y > d[next(next(i))].y)) then
count := count + 1;
end;
end
else {d[i].y = P.y}
if ((d[i].y < P.y) and (P.y < d[next(i)].y)) or
((d[i].y > P.y) and (P.y > d[next(i)].y)) then
begin
x_cut := d[i].x + Round((d[next(i)].x - d[i].x)
/ (d[next(i)].y - d[i].y) * (P.y - d[i].y));
if x_cut >= P.x then count := count + 1;
end;
if (count mod 2 = 0) then PointInPoly := false
else PointInpoly := true;
end;
Cài t minh h a thu t toán tô a giác
(xmin, ymin, xmax, ymax: ã khai báo trong ch ng trình chính.)
Procedure Todg ( d:dinh; n,maubien : integer ; d: dinh; n:integer ) ;
var x, y:integer;
P: d_dinh;
begin
Trang 37for x:=xmin to xmax do
for y:= ymin to ymax do
Thu t toán tô n gi n có u i m là tô r t m n và có th s! d ng c cho
a giác l i hay a giác lõm, ho,c a giác t c#t, ng tròn, ellipse
Tuy nhiên, gi i thu t này s& tr nên ch m khi ta ph i g i hàm PointInpoly nhi u l n kh#c ph c nh c i m này ng i ta a ra thu t toán tô màu theo dòng quét
2.3.2 Tô màu theo dòng quét (scan - line)
Ph ng pháp này s& xác nh ph n giao c a các dòng quét k ti p nhau v$i
ng biên c a vùng tô Sau ó, s& ti n hành tô màu các i m thu c ph n giao này
Ph ng pháp này th ng c dùng tô màu a giác l i , lõm hay a giác t c#t, ng tròn, ellipse, và m t s ng cong n gi n khác
• Các b c chính c a thu t toán
- Tìm ymin, ymax l n l t là giá tr nh" nh t, l$n nh t c a t p các tung c a các +nh c a a giác ã cho
- 4ng v$i m0i dòng quét y = k v$i k thay i t ymin n ymax, l,p :
Tìm t t c các hoành giao i m c a dòng quét y = k v$i các c nh c a a giác
S#p x p các hoành giao i m theo th t t.ng d n : x0 ,x1 , , xn ,
Tô màu các o n th'ng trên ng th'ng y = k l n l t c gi$i h n b i các c,p (x0, x1), ( x1 ,x2 ), (xem hình )
Trang 38Hình 2.12: Tô a giác b ng gi i thu t scanline
• Các v%n c n l u ý:
- H n ch c s c nh c n tìm giao i m ng v$i m0i dòng quét vì ng v$i m0i dòng quét không ph i lúc nào c/ng giao i m v$i các c nh c a a giác
- Xác nh nhanh hoàn giao i m vì n u l,p l i thao tác tìm giao i m c a
c nh a giác v$i m0i dòng quét s& t n r t nhi u th i gian
- Gi i quy t tr ng h p s giao i m i qua +nh n i u thì tính s giao i m
là 1 hay i qua +nh c c tr thì tính s giao i m là 0 (ho,c 2)
• T ch c c%u trúc d li u và thu t toán
- Danh sách các c nh (Edge Table - ET) : ch a toàn b các c nh c a a giác (lo i các c nh song song v$i tr c Ox) c s#p theo th t t.ng d n c a tr c y Xem hình 2.5 ta có th s#p x p các c nh trong ET là : AB, AI, HG, BC, GF, DC,
EF (lo i IH và DE)
- Danh sách các c nh ang kích h at (Active Edge Table - AET) : ch a các c nh
c a a giác có th c#t ng v$i dòng quét hi n hành, các c nh này c s#p theo
th t t.ng d n c a hoành giao i m c a hoành giao i m gi a c nh và dòng quét
- Khi dòng quét i t ymin n ymax, các c nh tho i u ki n s& c chuy n t
ET sang AET Ngh-a là, khi dòng quét y=k b#t u c#t m t c nh, khi ó k 7 ymin, c nh này s& c chuy n t ET sang AET Khi dòng quét không còn c#t
c nh này n a, khi ó, k > ymax, c nh này s& b lo i kh"i AET Khi không còn
c nh nào trong ET hay AET thì quá trình tô màu k t thúc (xem hình)
Trang 40L u thu t toán tô màu theo dòng quét: