Giáo trình Đồ họa máy tính - Chương 1: Giới thiệu về đồ họa máy tính

LỜI NÓI ĐẦU  
Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học. Ngay từ khi xuất hiện, đồ họa  
máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người được sử dụng ở nhiều lĩnh vực khác nhau như : khoa học, nghệ  
thuật, kinh doanh, thương mại, công nghiệp, quản lí, giáo dục, giải trí, … Số lượng các chương trình đồ họa ứng dụng thật khổng lồ  
và phát triển liên tục.  
Cuốn sách này được biên soạn dựa trên đề cương môn Đồ họa máy tính thuộc chương trình đào tạo tin học bậc cử nhân và cao đẳng  
của Bộ Giáo dục Đào tạo, tập trung vào các vấn đề của đồ họa hai chiều và ba chiều nhằm cung cấp một nền tảng kiến thức đầy  
đủ chọn lọc bao gồm các khái niệm cơ bản nhất, các thuật toán cơ sở của đồ họa máy tính, … giúp người đọc thể tự tìm hiểu và  
xây dựng các chương trình ứng dụng đồ họa.  
Cuốn sách được chia làm 10 chương, gồm hai phần chính : đồ họa hai chiều đồ họa ba chiều. Cuối mỗi chương đều phần tóm  
tắt hệ thống bài tập để người đọc tự kiểm tra. Các thuật toán trình bày đều có lưu đồ và chương trình minh họa dưới dạng ngôn  
ngữ C.  
Để các vấn đề trình bày được phong phú, đa dạng cập nhật, chúng tôi đã rất nỗ lực trong việc tham khảo các tài liệu kinh điển,  
đặc biệt là các bài giảng về đồ họa của các trường đại học nổi tiếng trên thế giới ở Âu, Mỹ như Brown, Stanford, MIT, Waterloo, …  
Tuy nhiên trong quá trình biên soạn chắc chắn không thể không tránh khỏi sơ sót, chúng tôi xin trân trọng tiếp thu tất cả những ý kiến  
đóng góp của bạn đọc cũng như các bạn đồng nghiệp để hoàn thiện cuốn sách ngày một tốt hơn.  
Chúng tôi xin chân thành cám ơn Ban chủ nhiệm Khoa Công nghệ Thông tin - Đại học Khoa học Tự nhiên, các anh chị trong Ban  
biên tập Nhà xuất bản Giáo dục đã hỗ trợ rất nhiệt tình để cuốn sách này sớm đến tay bạn đọc.  
CÁC TÁC GIẢ  
CHƯƠNG 1  
GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH  
Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh, và công nghệ luôn luôn phụ  
thuộc vào khả năng truyền đạt thông tin của chúng ta, hoặc thông qua các bit dữ liệu lưu  
trữ trong microchip hoặc thông qua giao tiếp bằng tiếng nói. Câu châm ngôn từ xa xưa  
“một hình ảnh có giá trị hơn cả vạn lời” hay “trăm nghe không bằng một thấy” cho thấy ý  
nghĩa rất lớn của hình ảnh trong việc chuyển tải thông tin. Hình ảnh bao giờ cũng được  
cảm nhận nhanh và dễ dàng hơn, đặc biệt là trong trường hợp bất đồng về ngôn ngữ. Do  
đó không có gì ngạc nhiên khi mà ngay từ khi xuất hiện máy tính, các nhà nghiên cứu đã  
cố gắng sử dụng để phát sinh các ảnh trên màn hình. Trong suốt gần 50 năm phát triển  
của máy tính, khả năng phát sinh hình ảnh bằng máy tính của chúng ta đã đạt tới mức mà  
bây giờ hầu như tất cả các máy tính đều khả năng đồ họa.  
Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin  
học. Ngay từ khi xuất hiện, đồ họa máy tính đã sức lôi cuốn mãnh liệt, cuốn hút rất  
nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, ...  
Tính hấp dẫn đa dạng của đồ họa máy tính có thể được minh họa rất trực quan thông  
qua việc khảo sát các ứng dụng của nó.  
1. MỘT SỐ ỨNG DỤNG CỦA ĐỒ HỌA MÁY TÍNH  
Ngày nay, đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau như công  
nghiệp, thương mại, quản lí, giáo dục, giải trí, … Số lượng các chương trình đồ họa ứng  
dụng thật khổng lồ và phát triển liên tục, sau đây một số ứng dụng tiêu biểu :  
1.1. Hỗ trợ thiết kế  
Một trong những ứng dụng lớn nhất của đồ họa máy tính là hỗ trợ thiết kế (CAD –  
computer-aided design). Ngày nay CAD đã được sử dụng hầu hết trong việc thiết kế các  
cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, rất nhiều sản  
phẩm khác.  
Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới dạng các phác  
thảo của phần khung (wireframe outline), mà từ đó thể thấy được toàn bộ hình dạng và  
các thành phần bên trong của các đối tượng. Sử dụng kĩ thuật này, người thiết kế sẽ dễ  
dàng nhận thấy ngay các thay đổi của đối tượng khi tiến hành hiệu chỉnh các chi tiết hay  
thay đổi góc nhìn, ….  
Một khi đã thiết kế xong phần khung của đối tượng, các mô hình chiếu sáng, tô màu và  
tạo bóng bề mặt sẽ được kết hợp để tạo ra kết quả cuối cùng rất gần với thế giới thực .  
1.2. Biểu diễn thông tin  
Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ, đồ thị, … dùng  
minh họa mối quan hệ giữa nhiều đối tượng với nhau. Các ứng dụng này thường được  
dùng để tóm lược các dữ liệu về tài chính, thống kê, kinh tế, khoa học, toán học, … giúp  
cho việc nghiên cứu, quản lí, … một cách có hiệu quả.  
Hình 1.1 - Phaùc thaûo phaàn khung vaø keát quaû cuûa thieát keá xy lanh  
Hình 1.2 – Thoâng tin toùm löôïc ñöôïc bieåu dieãn qua caùc bieåu ñoà  
1.3. Lĩnh vực giải trí, nghệ thuật  
Trong lĩnh vực nghệ thuật, các chương trình máy tính như Paint Shop Pro, Adobe  
Photoshop, 3D Studio, … hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫu trong việc  
thiết kế các hình ảnh sống động, rất thực. Với các chương trình này, người họa sĩ được  
máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực bằng cách cung cấp các  
công cụ như khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba chiều, … làm cho họ cảm  
thấy rất thoải mái và tiện lợi.  
Ngoài ra đồ họa máy tính còn giúp tạo ra các chương trình trò chơi, giải trí; hỗ trợ cho  
các kĩ xảo điện ảnh, cho các nhà làm phim. Có nhiều bộ phim rất nổi tiếng nhờ vào kĩ xảo  
điện ảnh như : Công viên Khủng long kỉ Jura (Jurassic Park), Titanic, Thế giới nước  
(Water World), …  
Hình 1.3 – Hình ảnh được tạo ra từ chương trình đồ hoïa  
1.4. Giáo dục đào tạo  
Hiện nay các chương trình mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng  
hóa học, hoạt động của các gói tin trên mạng máy tính, … được dùng rất nhiều trong việc  
hỗ trợ giảng dạy.  
Trong đào tạo, các ứng dụng phỏng được dùng để kiểm tra trình độ người lái, huấn  
luyện phi công, điều khiển giao thông, …  
Hình 1.4 – Chương trình hềc về máy tính  
1.5. Giao tiếp giữa máy tính và người dùng  
Mi ng dng đều phi có giao din giao tiếp vi người dùng. Giao din đồ ha thc slà  
mt cuc cách mng mang li sthun tin và thoi mái cho người dùng ng dng. Các  
ng dng da trên hệ điu hành MS Windows một minh ha rt trc quan ca giao din  
đồ ha. Các chc năng ca các ng dng này được thiết kế cho người dùng làm vic thông  
qua các biu tượng mô tchc năng đó. Ví d, chc năng lưu tp tin được hiu thông qua  
biu tượng đĩa mm, chc năng in n được hiu thông qua biu tượng máy in, … Để chn  
các chc năng, người dùng sdng chut trỏ đến và nhn vào các biu tượng tương ng.  
Đim thun li chính khi dùng biu tượng là kích thước không gian mà nó chiếm ít hơn  
nhiu so vi dùng văn bn để mô tcho cùng mt chc năng, ngoài ra vic nm bt các  
chc năng qua các biu tượng sddàng hơn rt nhiu khi người dùng gp trngi vmt  
ngôn ng.  
Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng làm việc dễ dàng  
với nhiều cửa sổ với nhiều dạng tài liệu khác nhau cùng một lúc.  
Hình 1.5 – Giao diền cềa chương trình MS Word  
2. KHÁI NIỆM VỀ ĐỒ HỌA MÁY TÍNH  
Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát sinh ra  
hình ảnh. Các vấn đề liên quan tới công việc này bao gồm : tạo, lưu trữ, thao tác trên các  
mô hình (các mô tả hình học của đối tượng) và các ảnh.  
Theo định nghĩa này thì đồ họa máy tính bao gồm việc thiết kế phần cứng như thiết bị  
hiển thị, các thuật toán cần thiết để phát sinh các đường trên các thiết bị này, các phần  
mềm được sử dụng cho cả người lập trình hệ thống người lập trình ứng dụng đồ họa,  
và các chương trình ứng dụng tạo ảnh bằng máy tính.  
Đồ họa máy tính cung cấp một trong những phương cách tự nhiên nhất cho việc truyền  
đạt thông tin với máy tính. Ngày nay, trong nhiều quá trình thiết kế, cài đặt và xây dựng,  
thông tin mà hình ảnh mang lại hầu như không thể thiếu được. Kĩ thuật trực quan  
(scientific visualization) đã trở nên là một lĩnh vực rất quan trọng từ năm 1980, khi các  
nhà nghiên cứu khoa học và các kĩ sư nhận ra rằng họ không thể xử một lượng dữ liệu  
khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược và làm nổi bật  
các xu hướng hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau.  
Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận  
lợi cho người dùng trong việc phát sinh hình ảnh kể từ khi có phát minh của máy ảnh và  
truyền hình. Với máy tính, chúng ta có thể tạo các hình ảnh không chỉ của các đối tượng  
cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; các biểu diễn của dữ liệu  
mà không có tính kế thừa về mặt hình học, như kết quả điều tra, khảo sát. Hơn nữa, với  
đồ họa máy tính chúng ta không bị giới hạn trong các ảnh tĩnh. Các ảnh động thông  
thường mang lại nhiều hiệu quả hơn so với ảnh tĩnh, đặc biệt với các hiện tượng biến  
đổi theo thời gian, cả thực tế (như sự đổi hướng của cánh máy bay siêu âm, hay sự phát  
triển của khuôn mặt người từ lúc trẻ thơ tới lúc già) và trừu tượng (như là xu hướng phát  
triển của việc sử dụng năng lượng, gia tăng dân số, …).  
nhiều cách tiếp cận trong việc học môn đồ họa, trải rộng từ việc nghiên cứu phần  
cứng tới việc học để sử dụng đồ họa máy tính chỉ trong một lĩnh vực chuyên biệt nào đó  
như thiết kế mạch tích hợp cao (VLSI – very large scale integrated circuit). Ở đây  
chúng ta tiếp cận từ góc độ của người lập trình ứng dụng, đó người sử dụng tất cả các  
hỗ trợ của phần cứng, các công cụ phần mềm để xây dựng nên các ứng dụng.  
Tuy nhiên để thể thiết kế và cài đặt các chương trình ứng dụng đồ họa được tốt, ngoài  
việc tìm hiểu các khả năng của công cụ lập trình, chúng ta cũng cần phải nắm vững các  
khái niệm về phần cứng; các vấn đề, các nguyên lí liên quan đến cài đặt phần mềm, các  
thuật toán, các ứng dụng, …  
3. TỔNG QUAN VỀ MỘT HỆ ĐỒ HỌA  
Một hệ đồ họa bao giờ cũng có hai thành phần chính đó phần cứng phần mềm. Phần  
cứng bao gồm các thiết bị hiển thị 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.  
3.1. Phần cứng  
3.1.1. Thiết bị hiển thị  
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).  
Cấu tạo 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à dẫn  
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 mỗi 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 một cách  
nào đó để duy trì ảnh trên màn hình. Một trong các cách đó 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.6 Cấu tạo của CRT  
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), đó 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 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 thể hiển thị trên một CRT được gọi độ phân giải  
(resolution). Một định nghĩa chính xác hơn của độ phân giải 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ư tổng số điểm theo mỗi hướng.  
Kích thước vật 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.  
Một thuộc tính khác của màn hình nữa tỉ số phương (aspect ratio). Tỉ số phương 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 độ 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ư 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  
sẽ dạng hình chữ nhật, các hình tròn sẽ 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 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.  
Màn hình dạng điểm (raster - scan display):  
Màn hình dạng điểm 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, mỗi 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ử đây chính là cơ sở của việc tạo ra hình ảnh trên  
màn hình.  
Mỗi điểm trên màn hình được gọi 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 mỗi điểm trên màn hình và mỗi phần tử trong vùng này.  
Hình 1.7 – 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.  
Để tạo ra các ảnh đen trắng, đơn giản chỉ cần lưu thông tin của mỗi 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 mỗi 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.8 – 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). Mỗi 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 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  
thể tiết kiệm không gian lưu trữ cho mỗi 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 mỗi 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ể tả tốc độ  
làm tươi 60 frame/giây đơn giản là 60Hz. Khi đạt đến cuối mỗi 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 mỗi dòng quét được gọi là tia hồi ngang (horizontal retrace).  
tới cuối mỗi 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, mỗi 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). 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.  
Hình 1.9 Hoạt động của màn hình interlaced  
Các hệ màu  
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. thế, 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 đề 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ó.  
Bảng dưới đây sẽ trình bày mối quan hệ này :  
Sự cảm nhận  
Đặc điểm phần cứng  
Đặc điểm phần mềm  
của con người  
Các màu hiển thị  
gốc  
Thuật toán trên  
không gian màu  
Màu sắc  
Bước sóng  
(WaveLength)  
Sự thuần nhất của  
màu  
Sắc độ màu (Hue)  
Độ bão hòa  
(Saturation)  
Độ sáng hay độ chói Cường độ sáng  
Hiệu chỉnh gamma  
Sự “rung” của màn  
Tốc độ làm tươi  
hình  
(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 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 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 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 tốc độ các tính toán cho ứng dụng đó.  
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 R, G, B.  
Mỗi màu trong không gian RGB đều được biểu diễn như 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.  
Hình 1.10 - Mô hình không gian RGB  
Trong hình lập phương mỗi 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 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 để 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).  
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ự 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 thể hoặc không thể 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  
độ).  
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 gian HSL thực ra cũng  
chỉ 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 vẫn  
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.11 - 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).  
Không gian HSV  
Không gian HSV thực chất cũng chỉ 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.  
Hình 1.12 - 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ĩ. 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 đó nghĩa 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.  
Bảng so sánh giữa các không gian màu  
RGB  
HSL  
HSV  
Chuẩn công nghiệp Hình thức biến đổi  
Hình thức biến đổi  
cho các thao tác đồ khác của không gian khác của không gian  
họa máy tính RGB RGB  
Liên hệ trực tiếp với Liên hệ gần hơn với Liên hệ gần hơn với  
phần cứng sự cảm nhận màu sắc sự cảm nhận màu sắc  
của con người  
của con người  
chuyển đổi cuối Đòi hỏi các phép  
cùng cho tất cả các biến đổi phức tạp  
nhu cầu hiển thị  
Đã đơn giản hóa các  
thao tác tính toá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 Có  
ứng 1-1 với cách  
Có  
cảm nhận màu của  
con người  
Mô hình là hình lập Mô hình là hai hình  
Mô hình là hình nón  
phương  
nón úp vào nhau  
đơn  
Được chuẩn hóa về Được chuẩn hóa về 1 Được chuẩn hóa về 1  
1
Độ bão hòa đạt max Độ bão hòa đạt max Độ bão hòa đạt max  
khi S =1  
khi S =1, L =0.5  
khi S =1, V =1  
Trộn màu không rõ Rõ ràng  
Rõ ràng  
ràng  
3.1.2. Các thiết bị nhập  
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 số. Đây 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.  
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 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ỏ 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 dễ dàng hơn. Ngoài ra chúng ta  
cũng một số thiết bị nhập khác cùng họ với chuột như track ball, …  
3.2. Phần mềm  
Phần mềm đồ họa 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 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ậ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 để tả đối tượng. Nếu các tọa  
độ của đối tượng được 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 hệ tọa độ mô hình (modeling coordinates) hay còn gọi 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 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 hệ tọa độ thiết bị (device  
coordinates). Các mô tả trong các hệ tọa độ cục bộ 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.13 – 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 đơ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ữ, mẫu 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ị 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 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 xử lí dòng dữ liệu nhập.  
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 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 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 nỗ 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 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 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ữ 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ữ chuyển đổi hình ảnh, 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.  
TÓM TẮT  
Sự ra đời của đồ họa máy tính thực sự cuộc cách mạng trong giao tiếp giữa người dùng và máy tính. Với lượng thông tin trực  
quan, đa dạng và phong phú được chuyển tải qua hình ảnh, các ứng dụng đồ họa máy tính đã lôi cuốn nhiều người nhờ tính thân thiện,  
dễ dùng, kích thích khả năng sáng tạo tăng đáng kể hiệu suất làm việc.  
Đồ họa máy tính ngày nay được ứng dụng rất rộng rãi trong nhiều lĩnh vực khoa học, kĩ thuật, nghệ thuật, kinh doanh, quản lí,  
… Các ứng dụng đồ họa rất đa dạng, phong phú và phát triển liên tục không ngừng. Ngày nay, hầu như không có chương trình ứng  
dụng nào mà không sử dụng kĩ thuật đồ họa để làm tăng tính hấp dẫn của mình.  
Một hệ đồ họa bao giờ cũng có hai thành phần chính đó phần cứng phần mềm..  
Thành phần phần cứng bao gồm các thiết bị hiển thị (hay là thiết bị xuất) và các thiết bị nhập. Tiêu biểu nhất trong các thiết bị  
hiển thlà màn hình mà cơ chế hoạt động dựa trên cấu tạo của ống tia âm cực CRT. Các thiết bị nhập dữ liệu thường gặp bao gồm bàn  
phím, chuột.  
Phần mềm đồ họa thể chia làm hai loại đó là các công cụ lập trình như các hàm thư viện của C, Pascal, GL, … và các ứng  
dụng phục vụ cho một mục đích nào đó như AutoCAD, Photoshop, … Hướng tiếp cận của chúng ta trong tài liệu này ở mức độ của  
người lập trình, nghĩa là chúng ta sẽ tìm hiểu các thuật toán, các nguyên lí để xây dựng nên các ứng dụng đồ họa chứ không phải là  
học cách sử dụng các phần mềm như AutoCAD, Photoshop, …  
BÀI TẬP  
1. Cấu tạo và nguyên lí hoạt động của màn hình dạng điểm. Các khái niệm như vùng đệm khung, độ phân  
giải, tỉ số phương, … của màn hình dạng này.  
2. Ýù nghĩa hoạt động của bảng tra LUT.  
3. Ba màn hình có độ phân giải lần lượt là 640x480, 1024x768, 1280x1024. Hãy cho biết kích thước của  
vùng đệm khung (tính bằng byte) nếu mỗi pixel được tả bằng 8 bit, 12 bit, 24 bit.  
4. Hai màn hình có độ phân giải là 640x480 và 1024x768. Cho biết số pixel được truy cập trong một giây  
của mỗi màn hình nếu tốc độ làm tươi của CRT là 60Hz.  
5. Một màn hình có kích thước theo chiều ngang là 12 inche, chiều dọc là 9.6 inch. Hãy cho biết đường  
kính của mỗi điểm trên màn hình nếu độ phân giải là 1280x1024 và tỉ số phương là 1.  
6. Hãy cho biết thông tin trong vùng đệm khung của các hình vẽ các kí tự B, G, H, …  
7. Các hệ màu. Mối liên hệ giữa chúng.  
8. Quy trình hiển thị đối tượng. Ý nghĩa của các hệ tọa độ.  
9. Tập các hàm đồ họa của một công cụ lập trình. Liên hệ tới các thư viện đồ họa của các ngôn ngữ đã  
học như C, Pascal, …  
10. Tại sao cần phải chuẩn hóa các phần mềm ? Tìm hiểu các chuẩn GKS, PHIGS.  
doc 12 trang Thùy Anh 27/04/2022 9260
Bạn đang xem tài liệu "Giáo trình Đồ họa máy tính - Chương 1: Giới thiệu về đồ 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:

  • docgiao_trinh_do_hoa_may_tinh_chuong_1_gioi_thieu_ve_do_hoa_may.doc
  • htmChuong1.htm
  • docgraphics_distant_phuluc.doc