R = 0,39 * 255 = 100
G = 0,59 * 255 = 150
B = 0,78 * 255 = 200
Vậy sau quá trình chuyển đổi từ hệ màu HSV với các tham số lần lượt là H = 210 độ, S = 50%, V = 78%
Sang hệ màu RGB với các tham số tương ứng là:
R = 100, G = 150 , B = 200
b) HSV sang CMYK
Bước 1 : Chuyển HSV sang RGB Bước 2 : Chuyển RGB sang CMYK
c) HSV sang HSL
Bước 1 : Chuyển HSV sang RGB Bước 2 : Chuyển RGB sang HSL
Có thể bạn quan tâm!
- Phân Bố Các Điểm Trong Vùng Theo Thứ Tự Tăng Dần
- Giới Thiệu Về Các Hệ Màu Trong Màn Hình Đồ Họa
- Đồ họa máy tính - 26
- Đồ họa máy tính - 28
- Đồ họa máy tính - 29
Xem toàn bộ 240 trang tài liệu này.
4) Chuyển đổi từ mô hình HSL
a) HSL sang RGB
H nằm trong đoạn [0, 360]
S, L, R, G, B nằm trong đoạn [0, 1]
nếu L <0.5 thì Q = L x (1 + S ) , nếu L => 0,5 thì Q = L + S - ( L × S ) P = 2 × L - Q
H k = H / 360
T r = Hk + 1/3 T g = Hk
T b = Hk - 1/3
Đối với mỗi c = R, G, B: nếu Tc 0 Tc = Tc + 1.0
nếu Tc > 1? Tc = Tc - 1.0
nếu Tc <1/6? Tc = P + (( Q - P ) × 6,0 × Tc )
nếu 1/6< = Tc và Tc<1/2 thì Tc = Q
nếu 1/2 <= Tc và Tc<2 / 3 thì Tc = P + (( Q - P ) x (2/3 – Tc ) × 6.0) trường hợp còn lại Tc = P
Trong đó:
H: (Hue) Vùng màu có giá trị xác định trong khoảng từ 0 đến 360 độ S: (Saturation) Độ bão hòa màu nằm trong khoảng từ 0 đến 1
L:(Lightness) (độ chói hoặc Độ sáng hoặc cường độ) nằm trong khoảng từ 0
đến 1
R (Red) : nằm trong khoảng từ 0 đến 1 G (Green): nằm trong khoảng từ 0 đến 1 B (Blue): nằm trong khoảng từ 0 đến 1
Ví dụ : Cho hệ màu HSL với các tham số lần lượt là : H = 210 độ, S = 48%, L = 59%
Chuyển đổi sang hệ màu RGB
Bước 1: Chuyển các giá trị S, L sang hệ [0,1] S = 48% = 0,48
L = 59% = 0,59
Bước 2 : Xác định Q, P, Hk , Tr, Tg , Tb Vì L = 0,59 > 0,5 nên
Q = L + S - ( L × S ) = 0,78 P = 2 × L – Q = 0,4
Hk = 210/360 = 0,58 T r = Hk + 1/3 = 0.91 T g = Hk = 0.58
T b = Hk - 1/3 = 0.25
Bước 3 : Gán Tc = giá trị Tr, Tg , Tb vừa tìm được, xét lần lượt T-c với công
thức trên ta thấy :
Với Tc = Tr : Tc = P = 0,4
Với Tc = Tg :
Tc = P + (( Q - P ) x (2/3 – Tc ) × 6.0) = 0,5976 ~ 0,6
Với Tc = Tb : Tc = Q = 0,78
Bước 4 : Chuyển các giá trị sang hệ [0..255] R = 0,4 * 255 = 102
G = 0,6 * 255 = 153
B = 0,78 * 255 = 199
Vậy sau quá trình chuyển đổi từ hệ màu HSL với các tham số lần lượt là H = 210 độ, S = 48%, V = 59%
Sang hệ màu RGB với các tham số tương ứng là:
R = 100, G = 150 , B = 200
b) HSL sang CMYK
Bước 1 : Chuyển HSL sang RGB Bước 2 : Chuyển RGB sang CMYK
c) HSL sang HSV
Bước 1 : Chuyển HSL sang RGB Bước 2 : Chuyển RGB sang HSV
Cài đặt các giải thuật chuyển đổi giữa các hệ màu
1. Giải thuật chuyển đổi từ HSV sang RGB Procedure hsv_to_rgb( real h, s, v ) Begin
h: Sắc độ màu [0-360] với màu đỏ tại điểm 0 s: Độ bão hòa [0-1]
v: Giá trị của cường độ sáng [0-1] rgb là các cơ sở màu đỏ, lục, lam
real r, g, b;
integer i;
real f, p, q, t;
// kiểm tra trường hợp ánh sáng không màu if( s = 0 )
begin
end;
r = g = b = v;
h /= 60;
i = floor( h ); f = h - i;
p = v * ( 1 - s );
q = v * ( 1 - s * f );
t = v * ( 1 - s * ( 1 - f ) );
// Xác định giá trị của r, g, b if (i= 0)
begin
r = v; g = t; b = p;
end;
if (i=1)
begin
r = q; g = v; b = p;
end; if (i= 2)
begin
r = p; g = v; b = t;
End.
end; if (i= 3)
begin r = p; g = q; b = v; end;
if (i= 4)
begin r = t; g = p; b = v; end;
if (i=5) begin
// case 5:
r = v; g = p; b = q; end;
2. Giải thuật chuyển đổi từ RGB sang HSV
procedure rgb_to_hsv () Begin
h: Sắc độ màu [0-360] với màu đỏ tại điểm 0 s: Độ bão hòa [0-1]
v: Giá trị của cường độ sáng [0-1] Max: Hàm lấy giá trị maximum
Min: Hàm lấy giá trị minimum
//Xác định giá trị cường độ sáng
rc = r / 255.0; gc =g / 255.0; bc = b / 255.0;
max = MAX(rc, MAX(gc, bc));
min = MIN(rc, MIN(gc, bc)); delta = max - min;
//xác định giá trị cường độ sáng V=max;
//Xác định độ bão hòa if (max <> 0.0)
s = delta / max;
else
s = 0.0;
//xác định sắc độ màu if (s = 0.0)
begin
h = 0.0;
end;
else
begin
// Màu nằm trong khoảng giữa vàng và đỏ tía(magenta) if (rc = max)
h = (gc - bc) / delta;
else
//Màu nằm trong khoảng giữa xanh tím (cyan) Vàng(yellow)
if (gc = max)
h = 2 + (bc - rc) / delta;
else
//Màu nằm trong khoảng giữa đỏ tươi (magenta) và xanh ngọc(cyan)
if (bc = max) begin
h = 4 + (rc - gc) / delta; h=60*h;
end;
// Các loại giá trị âm
if (h < 0)h += 360.0;
sl);
end;
End.
3. Giải thuật chuyển đổi từ HLS sang RGB
procedure HSL2RGB(real h, sl, l)
Begin real v;
real r, g, b;
h = h/360;
r = l; // default to gray g = l;
b = l;
v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l *
if (v > 0) begin
real m;
real sv;
integer sextant;
real fract, vsf, mid1, mid2;
m = l + l - v; sv = (v - m) / v; h *= 6.0;
sextant = (int)h; fract = h - sextant; vsf = v * sv * fract; mid1 = m + vsf;
mid2 = v - vsf; switch (sextant) begin
case 0:
r = v;
g = mid1; b = m; break;
case 1:
r = mid2; g = v;
b = m; break;
case 2:
r = m; g = v;
b = mid1; break;
case 3:
r = m;
g = mid2; b = v;