CHƯƠNG 2
TÔ MÀU
2.1. GII THIU V CÁC H MÀU
Giác quan ca con người cm nhn được các vt th xung quanh thông qua các tia
sáng màu tt hơn rt nhiu so vi 2 màu trng đen. Vì vy, vic xây dng nên các
chun màu là mt trong nhng lý thuyết cơ bn ca lý thuyết đồ ha.
Vic nghiên cu v màu sc ngoài các yếu t v mt vt lý như bước sóng, cường
độ, còn có 3 yếu t khác liên quan đến cm nhn sinh lý ca mt người dưới tác động
ca chùm sáng màu đi đến t vt th là: Hue (sc màu), Saturation (độ bo hòa),
Lightness (độ sáng). Mt trong nhng h màu được s dng rng rãi đầu tiên do
A.H.Munsell đưa ra vào năm 1976, bao gm 3 yếu t: Hue, Lightness và Saturation.
Ba mô hình màu được s dng và phát trin nhiu trong các phn cng là: RGB -
dùng vi các màn hình CRT (Cathode ray bube), YIQ – dùng trong các h thng ti vi
màu băng tn rng và CMY - s dng trong mt s thiết b in màu.
Ngoài ra, còn có nhiu h màu khác như: HSV, HSL, YIQ, HVC, ...
2.1.1.H RGB (Red, Green, Blue)
Mt ca chúng ta cm nhn ba màu rõ nht là Red (đỏ), Green (lc), Blue (xanh).
Vì vy, người ta đã xây dng mô hình màu RGB (Red,Green, Blue) là tp tt c các
màu được xác định thông qua ba màu va nêu. Chun này đầu tiên được xây dng cho
các h vô tuyến truyn hình và trong các máy vi tính. Tt nhiên, không phi là tt c
các màu đều có th biu din qua ba màu nói trên nhưng hu hết các màu đều có th
chuyn v được.
H này được xem như mt khi ba chiu vi màu Red là trc X, màu Green là trc
Y và màu Blue là trc Z. Mi màu trong h này được xác định theo ba thành phn
RGB (Hình 2.1).
Chương II. Tô màu
Y
Z
X
Black
White
Blue Cyan
Yellow
Green
Red
Magenta
Hình 2.1. H màu RGB
Ví d:
Màu Red là (1, 0, 0)
Màu Blue là (0, 0, 1)
Red + Green = Yellow
Red + Green + Blue = White
2.1.2. H CMY (Cyan, Magenta, Yellow)
H này cũng được xem như mt khi ba chiu như h RGB. Nhưng h CMY trái
ngược vi h RGB, chng hn:
White có thành phn (0, 0, 0)
Cyan có thành phn (1, 0, 0)
Green có thành phn (1, 0, 1) ...
Sau đây là công thc chuyn đổi t h RGB CMY :
=
B
G
R
Y
M
C
1
1
1
2.1.3. H YIQ
H màu này được ng dng trong truyn hình màu băng tn rng ti M, do đó nó
có mi quan h cht ch vi màn hình raster. YIQ là s thay đổi ca RGB cho kh
năng truyn phát và tính tương thích vi ti vi đen trng thế h trước. Tín hiu truyn s
dng trong h thng NTSC (National Television System Committee).
Sau đây là công thc biến đổi t h RGB thành h YIQ:
26
Chương II. Tô màu
=
B
G
R
Q
I
Y
*
311.0523.0212.0
321.0275.0596.0
114.0587.0299.0
Ma trn nghch đảo ca ma trn biến đổi RGB thành h YIQ được s dng cho phép
biến đổi t h YIQ thành RGB.
2.1.4. H HSV (Hue, Saturation, Value)
Mô hình màu này còn được gi là h HSB vi B là Brightness (độ sáng) da trên cơ
s nn tng trc giác v tông màu, sc độ và sc thái m thut (Hình 2.2).
Hue có giá tr t 00 3600
S, V có giá tr t 0 1
Black
V
Cyan
0.0
Blue
1.0
Green
Red
H
White
S
Yellow
White
Hình 2.2. H màu HSV
Ví d:
Red được biu din (00, 1, 1)
Green được biu din (1200,1,1)
2.1.5. H HSL (Hue, Saturation, Lightness)
H này được xác định bi tp hp hình chóp sáu cnh đôi ca không gian hình tr
(hình 2.3).
H
S
1.0 L
0.0
0.5
White
Red
Yellow
Green
Cyan
Blue
Black
White
Hình 2.3. H màu HSL
27
Chương II. Tô màu
2.2. CÁC THUT TOÁN TÔ MÀU
2.2.1. Bài toán
P
P
S
W
P
P
Hình 2.4
P
Cho đa giác S xác định bi n đỉnh : P1, P2,
..., Pn. Hãy tô màu min S.
* Phương pháp tng quát :
- Tìm hình ch nht W nh nht cha S
(hình 2.4).
- Duyt qua tt c các đim P(x, y) W.
Nếu P S thì tô màu đim P.
2.2.2. Thut toán xác định P S
2.2.2.1. S là đa giác li
- Ly P W, ni P vi các đỉnh ca S thì ta được n tam giác : Si= PPiPi+1, vi
Pn+1=P1.
- Nếu = dt(S) thì P S.
=
n
1
i)dt(S
i
Ta có công thc tính din tích ca S:
S=
=
++
n
i
iiii yxyx
1
11 |)(|
2
1
2.2.2.2. Trường hp tng quát (Thut toán Jordan)
Ly P(x, y) W, k na đường thng P xut phát t P và không đi qua các đỉnh
ca đa giác S.
Gi S(P) là s giao đim ca P vi các biên ca S.
Nếu S(P) l thì P S.
* Vn đề còn li là tìm S(P):
Bước 1: K na đường thng P // 0y và hướng v phía y>0.
Bước 2: Vi mi cnh Ci= PiPi+1 ca S:
+ Nếu x=xi thì xét 2 cnh có 1 đầu là Pi:
Nếu y<yi thì
28
Chương II. Tô màu
Nếu c 2 đầu kia cùng mt phía ca P thì ta tính P ct c 2 cnh.
Ngược li : P ct 1 cnh.
+ Ngược li:
Nếu x>Max(xi,xi+1) hoc x<Min(xi,xi+1) thì P không ct Ci
Ngược li:
-Nếu y<= Min(yi, yi+1) thì P ct Ci
-Ngược li :
Xét ta độ giao đim (x0, y0) ca P vi Ci
Nếu y >= y0 thì P không ct Ci. Ngược li P ct Ci.
Thut toán này có th được cài đặt bng đon chương trình như sau:
Type ToaDo=record
x,y:integer;
End;
Mang=array[0..30] of ToaDo;
Function SOGIAODIEM(a:Mang; n:Byte):Integer;
var dem,i,j,s:Integer;
Begin
dem:=0;
for i:=1 to n do { Tim so giao diem }
begin
if i=n then j:=1 else j:=i+1;
if i=1 then s:=n else s:=i-1;
if x=a[i].x then
begin
if y<a[i].y then
if (x<=Min(a[s].x ,a[j].x))OR
(x>=Max(a[s].x,a[j].x)) then dem:=dem+2
else dem:=dem+1;
end
else
if (x>Min(a[i].x,a[j].x)) and
(x<Max(a[j].x,a[i].x)) then
if y<=Min(a[i].y,a[j].y) then dem:=dem+1
else if y <= (x-a[j].x)*(a[i].y-a[j].y)/
(a[i].x-a[j].x)+a[j].y then dem:=dem+1;
end;
SOGIAODIEM:=dem;
End;
29