Đồ họa máy tính - 27

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!

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ọa máy tính - 27

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 c = 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;

Xem toàn bộ nội dung bài viết ᛨ

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 28/06/2022