Mơ hình màu HSV (Hue, Saturation,Value)

Một phần của tài liệu Giao trinh đồ họa máy tính 2012 (Trang 77)

Yếu tố cảm nhận màu sắc:

-Hue - sắc màu: dùng để phân biệt sự khác nhau giữa các màu như xanh, đỏ, vàng...

- Saturation - độ bão hồ: chỉ ra mức độ thuần của một màu hay khoảng cách của màu tới điểm cĩ cường độ cân bằng(màu xám)

- Lightness - độ sáng: hiện thân về mơ tả cường độ sáng từ ánh sáng phản xạ nhận được từ đối tượng.

- Brightness - độ phát sáng: cường độ ánh sáng mà tự đối tượng phát ra chứ khơng phải do phản xạ từ các nguồn sáng khác.

Mơ hình màu RGB, CMY, YIQ được định hướng cho phần cứng

HSV (Hue, Saturation, Value)=HSB(Hue, Saturation, Brightness) định hướng người sử dụng dựa trên cơ sở về trực giác về tơng màu, sắc độ và sắc thái mỹ thuật

Mơ hình màu HSV được Alvey Ray Smith đưa ra 1978. Hue: màu sắc 00-3600 đo bởi gĩc quay xung quanh trục đứng với màu đỏ là 00, màu lục là 1200, màu lam là 2400. Các màu bổ sung cho hình chĩp ở 1800 đối diện với màu khác.

Value-Brightness:(độ sáng) 0-1 đường cao V với đỉnh là các điểm gốc toạ độ (0,0). Điểm ở đỉnh là màu đen và giá trị V=0, tại các điểm này giá trị của H và S khơng liên quan đến nhau. Khi điểm cĩ S=0 và V=1 là điểm màu trắng, những giá trị trung gian của V đối với S=0 (trên đường thẳng qua tâm) là các màu xám. Khi S=0 giá trị của H phụ thuộc được gọi bởi các qui ước khơng xác định. Ngược lại khi S khác 0 giá trị H sẽ là phụ thuộc.

Saturation: Độ bão hồ 0-1, giá trị của S là tập các giá trị từ 0 trên đường trục tâm (trục V) đến 1 trên các mặt bên tại đỉnh của chĩp 6 cạnh.

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ĩ. Ví 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 đĩ cĩ nghĩa là 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 tốn hơn so với khơng gian HSL.

Một số bất lợi :

Mơ hình màu HLS (Hue, Lightness, Saturation Model) – khơng gian màu trực quan

Mơ hình thường được sử dụng trong kỹ thuật đồ hoạ. Ưu điểm là rất trực giác ví dụ ta cĩ thể chọn màu, thay đổi độ sáng và thay đổi độ bão hồ. Nhược điểm là khi chuyển đổi với khơng gian màu RGB sẽ cĩ sai số (cube stood on end) thay đổi trên các loại màn hình khác nhau, rõ ràng khơng cảm nhận đều các màu.

Chúng ta cĩ thể coi mơ hình HLS như một sự biến dạng của mơ hình HLS mà trong đĩ mơ hình này màu trắng được kéo hướng lên hình chĩp sáu cạnh phía trên từ mặt V=1. Như với mơ hình chĩp sáu cạnh đơn, phần bổ sung của màu sắc được đặt ở vị trí 1800 hơn là xung quanh hình chĩp sáu cạnh đơi, sự bão hồ được đo xung quanh trục đứng, từ khơng trên trục tới 1 trên bề mặt.

Độ sáng (Lightness)=0 cho màu đen (tại điểm mút thấp nhất của hình chĩp sáu cạnh đơi) và bằng 1 cho màu trắng (tại đầu mút cao nhất).

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 số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.

+ 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).

3.2.5. Biểu đồ màu CIE (1931 – Commission Internationale de l’Eclairage)

Nhược điểm của RGB:

- Kết quả thực nghiệm cho thấy rất nhiều những ánh sáng mẫu khơng thể tạo thành từ 3 thành phần màu cơ sở với nguyên nhân do vỏ của võng mạc - retinal cortex.

- Với màu Cyan: cường độ của ánh sáng 2 màu green và blue kích thích cảm nhận màu đỏ trong mắt ngăn khơng cho thu được màu chính xác

- Cách duy nhất để thu được màu này là loại bớt phần màu đỏ bằng cách thêm ánh sáng đỏ vào mẫu ban đầu.

- Bằng cách thêm từ từ ánh sáng đỏ vào thu được (test + red) sẽ cho ra màu đúng bằng (blue + green)

- C + rR = gG + bB <=> C = gG + bB - rR

- Vấn đề đặt ra là việc phức tạp trong phân tích màu và chuyển đổi màu với đại lượng âm của ánh sáng đỏ độc lập thiết bị. (adsbygoogle = window.adsbygoogle || []).push({});

CIE stands for Comission Internationale de l'Eclairage (International Commission on Illumination)

Commission thành lập 1913 tạo một diễn đàn quốc tế về trao đổi ý tưởng và thơng tin cũng như tập chuẩn - set standards cho những vấn đề liên quan đến ánh sáng.

Mơ hình màu CIE color phát triển trên cơ sở hồn tồn độc lập thiết bị Dựa trên sự cảm nhận của của mắt người về màu sắc.

Yếu tố cơ bản của mơ hình CIE định nghĩa trên chuẩn về nguồn sáng và chuẩn về người quan sát.

CIE XYZ - Color Space

- CIE - Cambridge, England, 1931. Với ý tưởng 3 đại lượng ánh sáng - lights màu X, Y,Z cùng phổ tương ứng.

- Mỗi sĩng ánh sáng λ cĩ thể cảm nhận được bởi sự kết hợp của 3 đại lượng X,Y,Z

- Mơ hình - là khối hình khơng gian 3D X,Y,Z gồm gam màu (gamut) của tất cả các màu cĩ thể cảm nhận được.

- Color = X’X + Y’Y + Z’Z

- Các giá trị XYZ thay thế cho 3 đại lượng truyền thống RGB

- Màu được hiểu trên 2 thuật ngữ (Munsell's terms): màu sắc và sắc độ

- Ưu điểm của 3 loại màu nguyên lý cơ bản là cĩ thể sinh ra các màu trên cơ sở tổng các đại lượng dương của màu mới thành phần.

- Việc chuyển đổi từ khơng gian màu 3D tọa độ (X,Y,Z) vào khơng gian 2D xác định bởi tọa độ (x,y),theo cơng thức dưới phân số của của tổng 3 thành phần cơ bản.

- x = X/(X+Y+Z) , y = Y/(X+Y+Z) , z = Z/(X+Y+Z) Cĩ: x + y + z = 1, ở đây toạ độ z khơng được sử dụng

- Chuẩn CIE xác định 3 màu giả thuyết hypothetical colors, X, Y, and Z làm cơ sở cho phép trộn màu theo mơ hình 3 thành phần kích thích.

- Khơng gian màu hình mĩng ngựa - horseshoe-shaped là kết hợp của khơng gian tọa độ 2D màu x, y và độ sáng.

- λx = 700 nm; λy = 543.1 nm; λz = 435.8 nm

- Thành phần độ sáng hay độ chĩi được chỉ định chính bằng giá trị đại lượng Y trong tam kích tố của màu sắc

- Thang đo của Y xuất phát từ điểm trắng trên đường thẳng vuơng gĩc với mặt phẳng x,y với giá trị từ 0 tới 100.

- Khoảng màu lớn nhất khi Y=0 tại điểm trắng và bằng CIE Illuminant C. Đây là đáy của hình.

- Khi Y tăng màu trở nên sáng hơn và khoảng màu hay gam màu giảm diện tích trên tọa độ x,y cũng giảm theo.

- Tại điểm trên khơng gian với Y= 100 màu cĩ sắc xám bạc và khoảng màu ở đây là bé nhất.

CHƯƠNG 4: CÁC GIẢI THUẬT XÉN HÌNH

Thao tác loại bỏ các phần hình ảnh nằm ngồi một vùng cho trước được gọi là xén hình. Vùng được dùng để xén hình gọi là cửa sổ xén (clip window).

Tùy thuộc vào từng ứng dụng cụ thể mà cửa sổ xén cĩ thể cĩ dạng là đa giác hay là đường cong khép kín. Trong phần này chúng ta sẽ khảo sát các thuật tốn xén hình vào cửa sổ xén là hình chữ nhật trước, sau đĩ sẽ khảo sát các cửa sổ xén cĩ dạng khác. Để đơn giản, trong các thuật tốn xén hình, cửa sổ xén được gọi là cửa sổ.

4.1 Cắt xén với cửa sổ xén là hình chữ nhật

Giả sử cửa sổ xén là cửa sổ hình chữ nhật cĩ tọa độ của các điểm dưới bên trái và điểm trên bên phải lần lượt là (xmin, ymin), (xmax, ymax)

4.1.1 Cắt xén điểm

Giả sử (x,y) là toạ độ của một điểm, vậy điểm đĩ được hiển thị khi thoả mãn: xmin <= x <=xmax

ymin <= y <= ymax (adsbygoogle = window.adsbygoogle || []).push({});

4.1.2 Cắt xén đoạn thẳng

Cho đoạn thẳng đi qua 2 điểm đầu mút (x1, y1), (x2, y2). Đoạn thẳng sẽ thuộc vào một trong 3 trường hợp sau:

Trường hợp 1: Nhìn thấy

Đoạn thẳng nằm hồn tồn trong cửa sổ xén. Tọa độ 2 đầu mút nằm hồn tồn trong cửa sổ xén. Đoạn thẳng sẽ được hiển thị tồn bộ trong vùng dữ liệu hiển thị.

Đoạn thẳng nằm hồn tồn về một phía ngồi của cửa sổ. 2 đầu mút của đoạn thẳng nằm hồn tồn về một phía ngồi của cửa sổ thỏa mãn một trong 4 bất đẳng thức sau:

x1, x2> xmax x1, x2< xmin y1,y2>ymax y1, y2<ymin

Đoạn thẳng bị loại bỏ khỏi vùng dữ liệu hiển thị. Trường hợp 3: đoạn thẳng được cắt.

Đoạn thẳng khơng thuộc trường hợp một hoặc trường hợp hai. Khi đĩ đoạn thẳng cĩ thể cắt hoặc khơng cắt cửa sổ.

Cần xác định nhanh phần giao điểm nếu cĩ của đoạn thẳng với các biên của cửa sổ. Các giao điểm này sẽ chia đoạn thẳng thành các phần nhỏ hơn và nĩ sẽ thuộc trường hợp một hoặc trường hợp 2. Đoạn thẳng thuộc trường hợp một sẽ là đoạn thẳng được hiển thị trong vùng dữ liệu hiển thị.

Xác định giao điểm của hai đoạn thẳng

Xét 2 đoạn thẳng AB, CD cĩ các tọa độ đầu mút như sau: A(xa, ya), B(xb, yb), C(xc, yc), D(xd, yd)

Ta thường dùng phương trình tham số của đoạn thẳng để tìm giao điểm. Phương trình đoạn thẳng AB:

X=xa + (xb-xa) t Y=ya + (yb-ya) t 0<=t<= 1 Phương trình đoạn thẳng CD: X’=xc + (xd-xc) v Y’=yc + (yd-yc) v 0<=v<= 1

Xét 2 đường thẳng chứa 2 đoạn thẳng AB và CD tương ứng (t, v ϵR)

Nếu 2 đường thẳng này giao nhau với giá trị tham số t, v tương ứng nằm trong khoảng [0,1] giao điểm này sẽ nằm trong đoạn thẳng AB và CD. Nếu giá trị tham số nằm ngồi khoảng [0,1] thì hai đoạn thẳng này khơng giao nhau.

Chia nhỏ trung điểm

Đoạn thẳng được chia tại trung điểm của nĩ thành hai đoạn nhỏ hơn. Xác định xem 2 đoạn mới thuộc trường hợp nào. Mỗi một đoạn thẳng thuộc trường hợp 3 lại được chia tiếp thành các đoạn nhỏ hơn. Quá trình chia đơi và phân loại tiếp tục cho tới khi tất cả các đoạn thẳng thuộc trường hợp nhìn thấy hoặc trường hợp 2. Các đoạn thẳng thuộc trường hợp một sẽ được lưu giữ trong vùng hiển thị của cửa sổ.

Tọa độ trung điểm M(xm, ym) của đoạn thẳng đi qua 2 điểm (x1, y1), (x2, y2) Xm=(x1+x2)/2

Ym=(y1+y2)/2

4.1.3 Giải thuật Cohen-Sutherland

Một con số 4 bit nhị phân gọi là mã vùng sẽ được gán cho mỗi vùng để mơ tả vị trí tương đối của vùng đĩ so với cửa sổ. Bằng cách đánh số từ 1 đến 4 theo thứ tự từ phải qua trái, các bit của mã vùng được dùng theo quy ước sau để chỉ một trong bốn vị trí tương đối của vùng so với cửa sổ bao gồm : trái, phải, trên, dưới.

Bit 1 : trái (LEFT) Bit 2 : phải (RIGHT) Bit 3 : trên (TOP) Bit 4 : dưới (BOTTOM)

Giá trị 1 tương ứng với vị trí bit nào trong mã vùng sẽ chỉ ra rằng điểm đĩ ở vị trí tương ứng, ngược lại bit đĩ sẽ đƣợc đặt bằng 0. Ví dụ một vùng cĩ mã là 1001, thì nĩ sẽ nằm phía dưới (bit 4 bằng 1), bên trái (bit 1 bằng 1) so với cửa sổ, vùng cĩ mã là 0000 chính là cửa sổ.

Hình 4.4: mã vùng quy định vị trí tương đối của vùng so với cửa sổ.

Các giá trị bit trong mã vùng được tính bằng cách xác định tọa độ của điểm thuộc vùng đĩ với các biên của cửa sổ. Bit 1 được đặt là 1 nếu x< xmin , các bit khác được tính tương tự.

Thuật tốn

Gán mã vùng tương ứng cho các điểm đầu cuối P1P2 của đoạn thẳng cần xén lần lượt là c1, c2. Ta cĩ nhận xét :

+ Các đoạn thẳng nằm hồn tồn bên trong cửa sổ sẽ cĩ c1=c2=0000. Hay c1 OR c2 = 0000, ứng với các đoạn này, kết quả sau khi xén là chính nĩ.

+ Nếu tồn tại kϵ{1,..,4}, sao cho với bit thứ k của c1, c2 đều cĩ giá trị 1, lúc này đoạn thẳng sẽ nằm về cùng phía ứng với bit k so với cửa sổ, do đĩ nằm hồn tồn ngồi cửa sổ. Đoạn này sẽ bị loại bỏ sau khi xén. Ví dụ, nếu c1= 1001, c2=0101, rõ ràng bit 1 của chúng đều bằng 1 (ứng với biên trái), do đĩ đoạn thẳng nằm hồn tồn về biên trái của cửa sổ. Để xác định tính chất này, đơn giản chỉ cần thực hiện phép tốn logic AND trên c1, c2. Nếu kết quả khác 0000, đoạn thẳng sẽ nằm hồn tồn ngồi cửa sổ.

+ Nếu c1, c2 khơng thuộc về hai trường hợp trên, đoạn thẳng cĩ thể hoặc khơng cắt ngang cửa sổ chắc chắn sẽ tồn tại một điểm nằm ngồi cửa sổ, khơng mất tính tổng quát giả sử điểm đĩ là P1.Bằng cách xét mã vùng của P1là c1 ta cĩ thể xác định được các biên mà đoạn thẳng cĩ thể cắt để từ đĩ chọn một biên và tiến hành tìm giao điểm P1’của đoạn thẳng với biên đĩ. Lúc này, đoạn thẳng ban đầu được xén thành P1P1’. Tới đây chúng ta lại lặp lại thao tác đã xét cho đoạn thẳng mới P1P1’ cho tới khi xác định được phần nằm trong hoặc loại bỏ tồn bộ đoạn thẳng. (adsbygoogle = window.adsbygoogle || []).push({});

Chúng ta minh họa thuật tốn bằng hình vẽ . Với đoạn thẳng P1P2, ta sẽ kiểm tra P1 lần lượt với các biên trái, phải, dưới, trên và tìm ra điểm này nằm dưới cửa sổ, sau đĩ chúng ta tìm giao điểm P1’ của đoạn thẳng với biên dưới. Lúc này đoạn thẳng ban đầu được xén ngắn lại thành P1’P2.Vì P2 nằm ngồi cửa sổ nên bằng cách xét tương tự, chúng

ta sẽ tiến hành tìm giao điểm P2’của P1’P2với biên trên và lúc này đoạn P1’P2’, chính là phần nằm hồn tồn trong cửa sổ.

Trong trường hợp đoạn P3P4, P3nằm bên trái cửa sổ nên chúng ta cĩ thể xác định điểm giao P3’, và từ đĩ loại bỏ đoạn thẳng P3P3’. Bằng cách kiểm tra mã vùng, chúng ta dễ dàng xác định được đoạn thẳng P3’P4 nằm hồn tồn bên dưới cửa sổ nên cĩ thể bỏ đi tồn bộ.

Hình 4.3

Các điểm giao với các biên cửa sổ của đoạn thẳng cĩ thể được tính từ phương trình tham số như đã đề cập ở phần trên. Tung độ y của điểm giao đoạn thẳng với biên đứng của cửa sổ cĩ thể tính từ cơng thức y=y1+m(x-x1), trong đĩ x cĩ thể xmin hay xmax . Tương tự, hồnh độ x của điểm giao đoạn thẳng với biên ngang của cửa sổ cĩ thể tính từ cơng thức : x=x1+(y-y1)/m , trong đĩ y cĩ thể là ymin hay ymax .

Lưu đồ thuật tốn Cohen-Sutherland dùng để xén một đoạn thẳng qua hai điểm (x1,y1) và (x2,y2) vào cửa sổ hình chữ nhật cho trước

Cài đặt minh họa thuật tốn Cohen - Sutherland #define TRUE 1 #define FALSE 0 #define LEFT 1 #define RIGHT 2 #define TOP 4 #define BOTTOM 8 typedef struct { int x, y; }POINT; typedef struct {

int Left, Top, Right, Bottom; }RECT;

typedef int CODE;

#define Accept(a,b) (!(a|b)) #define Reject(a,b) (a&b) // Tra ve ma vung cua p la c

void EnCode(POINT p, CODE &c, RECT rWin) { c = 0; if(p.x < rWin.Left) c |= LEFT; if(p.x > rWin.Right) c |= RIGHT; if(p.y > rWin.Top)

c |= TOP;

if(p.y < rWin.Bottom)

c |= BOTTOM; }

// Hoan vi hai diem p1 va p2 sao cho p1 luon nam ngoai cua so

void SwapPoint(POINT& p1, POINT &p2, CODE &c1, CODE &c2) {

if(!c1) // Neu p1 nam hoan toan trong cua so

{ POINT p; p = p1; p1 = p2; p2 = p; CODE c; c = c1; c1 = c2; c2 = c; } }

Một phần của tài liệu Giao trinh đồ họa máy tính 2012 (Trang 77)