Tài liệu Bài giảng Tô màu: CHNG 2
TÔ MÀU
2.1. GII THIU V CÁC H MÀU
Giác quan ca con ngi cm nhn c các vt th xung quanh thông qua các tia
sáng màu t t h
n rt nhiu so v
i 2 màu trng en. Vì vy, vic xây dng nên các
chun màu là mt trong nhng lý thuyt c
bn ca lý thuyt ha.
Vic nghiên cu v màu sc ngoài các yu t v mt vt lý nh b
c sóng, cng
, còn có 3 yu t khác liên quan n cm nhn sinh lý ca mt ngi 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 nm 1976, bao gm 3 yu 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 v
i các màn hình CRT (Cathode ray bube), YIQ – dùng trong các h th ng ti vi
màu bng tn rng và CMY - s dng trong mt s thit b in màu.
Ngoài ra, còn có nhiu h màu khác nh: HSV, HSL, YIQ, HVC, ...
2...
7 trang |
Chia sẻ: hunglv | Lượt xem: 1498 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Tô màu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHNG 2
TÔ MÀU
2.1. GII THIU V CÁC H MÀU
Giác quan ca con ngi cm nhn c các vt th xung quanh thông qua các tia
sáng màu t t h
n rt nhiu so v
i 2 màu trng en. Vì vy, vic xây dng nên các
chun màu là mt trong nhng lý thuyt c
bn ca lý thuyt ha.
Vic nghiên cu v màu sc ngoài các yu t v mt vt lý nh b
c sóng, cng
, còn có 3 yu t khác liên quan n cm nhn sinh lý ca mt ngi 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 nm 1976, bao gm 3 yu 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 v
i các màn hình CRT (Cathode ray bube), YIQ – dùng trong các h th ng ti vi
màu bng tn rng và CMY - s dng trong mt s thit 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, ngi 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ô tuyn 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 di n qua ba màu nói trên nhng hu ht các màu u có th
chuyn v c.
H này c xem nh mt kh i ba chiu v
i màu Red là trc X, màu Green là trc
Y và màu Blue là trc Z. M!i màu trong h này c xác nh theo ba thành phn
RGB (Hình 2.1).
Chng II. Tô màu
26
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 kh i ba chiu nh h RGB. Nhng h CMY trái
ngc v
i h RGB, ch#ng h$n:
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 bng tn rng t$i M&, do ó nó
có m i quan h cht ch' v
i màn hình raster. YIQ là s thay %i ca RGB cho kh
nng truyn phát và tính t
ng thích v
i ti vi en trng th h tr
c. Tín hiu truyn s
dng trong h th ng NTSC (National Television System Committee).
Sau ây là công thc bin %i t h RGB thành h YIQ:
Chng II. Tô màu
27
−
−−=
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 bin %i RGB thành h YIQ c s dng cho phép
bin %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 v
i 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 di n (00, 1, 1)
Green c biu di n (1200,1,1)
2.1.5. H HSL (Hue, Saturation, Lightness)
H này c xác nh b(i tp hp hình chóp sáu c$nh ôi ca không gian hình tr
(hình 2.3).
H
S
1.0 L
0.0
0.5
White
Red
YellowGreen
Cyan
Blue
Black
White
Hình 2.3. H màu HSL
Chng II. Tô màu
28
2.2. CÁC THUT TOÁN TÔ MÀU
2.2.1. Bài toán
Cho a giác S xác nh b(i n )nh : P1, P2,
..., Pn. Hãy tô màu min S.
* Ph
ng pháp t%ng 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.
Nu 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, n i P v
i các )nh ca S thì ta c n tam giác : Si= PPiPi+1, v
i
Pn+1=P1.
- Nu
=
n
1
i )dt(S
i
= dt(S) thì P ∈ S.
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 th+ng ∆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 v
i các biên ca S.
Nu S(P) l* thì P ∈ S.
* Vn còn l$i là tìm S(P):
Bc 1: K* na ng th+ng ∆P // 0y và h
ng v phía y>0.
Bc 2: V
i m!i c$nh Ci= PiPi+1 ca S:
+ Nu x=xi thì xét 2 c$nh có 1 u là Pi:
Nu y<yi thì
S
W
P
2
P
3
P
4
P
5
P
1
Hình 2.4
Chng II. Tô màu
29
• Nu c 2 u kia ( cùng mt phía ca ∆P thì ta tính ∆P ct c 2 c$nh.
• Ngc l$i : ∆P ct 1 c$nh.
+ Ngc l$i:
• Nu x>Max(xi,xi+1) hoc x<Min(xi,xi+1) thì ∆P không ct Ci
• Ngc l$i:
-Nu y<= Min(yi, yi+1) thì ∆P ct Ci
-Ngc l$i :
Xét ta giao im (x0, y0) ca ∆P v
i Ci
Nu y >= y0 thì ∆P không ct Ci. Ngc l$i ∆P ct Ci.
Thut toán này có th c cài t b,ng o$n 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;
Chng II. Tô màu
30
2.2.3. Thut toán tô màu theo dòng quét (Scanline)
-t x0 = Min(xi), i∈ [1,n].
Bc 1: K* Dy//0y i qua x0 (hình 2.5).
Bc 2: Xác nh các giao im Mi-
(x,y) ca Dy v
i các c$nh Ci.
Nu có c$nh Ci = PiPi+1 song song và
trùng v
i Dy thì xem nh Dy ct Ci t$i
2 im Pi và Pi+1.
Bc 3: Sp xp l$i các im Mi theo
th t tng dn i v
i yi (im u
tiên có th t là 1).
Bc 4: Nhng im n,m trên Dy gia giao im l và giao im chn liên tip là
nhng im n,m trong a giác và nhng im này s' c tô.
Bc 5: Tng x0 lên mt Pixel. Nu x0 ≤ Max(xi) thì quay l$i b
c 1.
2.2.4. Thut toán tô màu theo vt du loang
Ly P(x,y) ∈ S, tô màu P.
Xét các im lân cn ca P (Hình 2.6).
Nu các im lân cn ó v.n còn thuc S và cha
c tô màu thì tô màu các im lân c$n ó...
Thut toán trên có th c minh ha b,ng th tc
qui:
Procedure TOLOANG(x,y:Integer; Color:Word);
Begin
If (P(x,y)∈S)and(P(x,y)cha tô) Then
Begin
PutPixel(x,y,Color);
TOLOANG(x+1,y,Color);
TOLOANG(x-1,y,Color);
x
0
xi
x
Dy
y
Hình 2.5
O
X
X
X
X
O
Hình 2.6
Chng II. Tô màu
31
TOLOANG(x,y+1,Color);
TOLOANG(x,y-1,Color);
End;
End;
BÀI TP
1. Vit hàm DienTich(P:Array; n:Byte); tính din tích ca a giác li có n )nh
lu trong mng P.
2. Vit hàm KiemTra(x,y:Integer; P:Array; n:Byte):Boolean; kim tra im
(x,y) n,m trong hay ngoài a giác có n )nh c lu trong mng P theo hai cách:
- Dùng công thc tính din tích a giác ( i v
i a giác li).
- Dùng thut toán Jordan ( i v
i a giác bt k/).
2. Vit ch
ng trình cài t thut toán tô màu mt a giác theo thut toán Scanline.
3. Vit ch
ng trình cài t thut toán tô màu mt a giác theo vt du loang theo hai
ph
ng án:
a. - qui.
b. Kh qui.
4. Vit th tc FillRec(x1,y1,x2,y2:Integer; color:Byte); tô màu hình ch nht xác
nh b(i 2 )nh (x1,y1) và (x2,y2).
5. Vit th tc FillEllipse(x,y,Rx,Ry:Integer; color:Byte); tô màu Ellipse có tâm
(x,y) và bán kính theo hai trc là Rx và Ry.
6. Vit th tc FillSector(x,y,Rx,Ry,g1,g2:Integer; color:Byte); tô màu hình qu$t
Ellipse có tâm (x,y), bán kính theo hai trc là Rx và Ry, góc bt u là g1 và góc kt
thúc là g2.
7. Vit th tc Donut(x,y,Rmin,Rmax:Integer; color:Byte); tô màu hình vành
khn có tâm (x,y) và bán kính hai ng tròn t
ng ng là Rmin và Rmax.
Bài tp l n: Xây dng mt th vin ha MYGRAPH t
ng t nh th vin
GRAPH.TPU ca Turbo Pascal.
Các file đính kèm theo tài liệu này:
- _giaotrinhlythuyetdohoach2.pdf