Giáo trình môn Đồ họa máy tính
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 ꢆꢇ 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
2
Mꢋ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
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 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
4
Chꢂꢃ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)
5
Hì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
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 quét, 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,...
Ngoà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& Čꢊꢑ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.
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 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
Č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ꢎt hꢉ Čꢇ 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 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
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à luôn luôn 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 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.
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. 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, …
• 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 Čꢖi tꢊꢑ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 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ó.
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ác màu hiꢘn th gꢖc
ꢂꢚc Čiꢓm phꢈn
mꢎm
Màu s#c
Thuꢅt toán trên
không gian màu
S#c Čꢎ màu
Bꢊ$c sóng
(WaveLength)
(Hue)
ꢆꢎ bão hòa
(Saturation)
Sꢓ thuꢈn nhꢗt c a màu
Cꢊꢋng Čꢎ sáng
ꢆꢎ sáng hay Čꢎ
Hiꢉu ch+nh gamma
chói
Sꢓ "rung" c a Tꢖc Čꢎ làm tꢊꢒi (refresh)
màn hình
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 toá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 toá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 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
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ꢌt sꢊ bꢖt lꢕ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 toán hꢒn so v$i không gian HSL.
• Mꢌt sꢊ bꢖt lꢕ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 Hình thꢚc biꢏn Čꢐi
khác c a không
gian RGB
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 Liên hꢉ gꢈn hꢒn v$i
v$i sꢓ cꢂm nhꢅn
màu s#c c a con
ngꢊꢋ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 biꢏn Čꢐi phꢚc tꢃp
cꢂ các nhu cꢈu
ꢆòi h"i các phép ꢆã Čꢒn giꢂn hóa các
thao tác tính toán.
hiꢘn th
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
Có
Có
Mô hình là hình
Mô hình là hai
hình nón úp vào
nhau
Mô hình là hình nón
lꢅp phꢊꢒng
Čꢒn
ꢆꢊꢑc chu%n hóa ꢆꢊꢑc chu%n hóa vꢜ ꢆꢊꢑc chu%n hóa vꢜ
vꢜ 1
1
1
ꢆꢎ bão hòa Čꢃt
max khi S =1
ꢆꢎ bão hòa Čꢃt
max khi S =1, L
=0.5
ꢆꢎ bão hòa Čꢃt max
khi S =1, V =1
Trꢎn màu không
Rõ ràng
Rõ ràng
rõ ràng
18
Chꢂꢃng 2
Các thuꢐt toán vꢑ Čꢀꢁng và
tô màu cꢌ bꢃn
2.1 Hꢀ tꢌa Čꢉ thꢒ giꢓi thꢔc, hꢀ tꢌa Čꢉ thiꢒt bꢍ và hꢀ tꢌa Čꢉ
chuꢑn
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. 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
19
y
yp
P( xp, yp)
0
xp
x
Hình 2.1: Hꢉ tꢄa Čꢎ thꢏ gi$i thꢓc
. Ox : gꢄi là trꢁc hoành.
. Oy : gꢄi là trꢁc tung.
. xp : hoành Čꢎ Čiꢘm P.
. yp : tung Čꢎ Čiꢘm P.
2.1.2 Hꢀ tꢌa Čꢉ 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).
0
x
y
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
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình môn Đồ họa máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- giao_trinh_mon_do_hoa_may_tinh.pdf