Xử lý ảnh màu trong xử lý ảnh số
Trang 1kỹ thuật áp dụng trong xử lý ảnh màu Chúng tôi sẽ đề cập đến bộ lọc 2-D cho ảnhmàu, và trình bày trình tự xử lý ảnh màu dựa trên trình tự xử lý ảnh đen trắng.Chúng tôi cũng sẽ phát triển một kỹ thuật lọc ảnh màu có lựa chọn Điều này chophép chúng ta điều chỉnh đợc một sắc màu riêng biệt (tint), ví dụ nh tăng sắc màunày lên mà không làm thay đổi các sắc màu còn lại trên ảnh.
11.2 Cơ sở của màu sắc
ánh sáng là một dạng của năng lợng sóng điện từ có bớc sóng vào khoảng từ
400 mà (millimicron) cho ánh sáng tím và vào khoảng 700 mà cho ánh sáng đỏ(hình 11.1) Tất cả các bớc sóng này đợc cảm nhận bởi mắt ngời nh là một sắc màu.Tất cả các sắc màu này nằm trong ánh sáng trắng của mặt trời, với năng lợng nằmtrong khoảng từ hồng ngoại đến cực tím Màu sắc của một vật thể là một hàm củacác bớc sóng không bị hấp thụ phản chiếu từ vật thể Đó là lý do tại sao mà một vậtthể có các màu sắc khác nhau phụ thuộc vào ánh sáng mà nó đợc quan sát Một vậtthể khi quan sát dới ánh sáng mặt trời sẽ có màu khác khi nó đợc quan sát dới ánhsáng đèn điện
Phần lớn kiến thức cơ sở cho hiểu biết của chúng ta về màu sắc dựa trên tìm tòicủa Isaac Newton và học thuyết quang học của ông Newton kết luận rằng cảm giác
của chúng ta về màu sắc là do tác động sự phản xạ có chọn lọc về bớc sóng các tiasáng tới Ông ta cho rằng màu sắc vật thể có nguyên nhân bắt nguồn từ phản xạ bớcsóng chọn lọc của truyền đạt các tia sáng xuất phát từ vật thể Newton đã trình bàymột hỗn hợp của hai màu có phổ liên tiếp cho ta một màu phổ trung gian, nh ng hỗnhợp của hai màu có phổ xa nhau đỏ và lam cho ta màu đỏ tía, một màu không phổ
Ông ta cũng giới thiệu một loạt màu mà khi tổng hợp với nhau cho màu trắng Ônggọi các màu này là các màu chính, bao gồm bảy màu: đỏ, da cam, vàng, lục, lam,chàm, tím, và đợc dùng để tính các màu có bớc sóng khác nhau
Thực tế, cuối cùng ngời ta đã khám phá ra rằng bất kỳ màu nào cũng đợc tạo rabởi một tỷ lệ thích hợp của ba màu có phổ riêng biệt, mà bất kỳ màu nào trong số bamàu này cũng không thể tạo ra bằng tổng hợp của hai màu còn lại Ba màu này gọi
là ba màu riêng (màu chính), đợc kết hợp với nhau khi tổng hợp ánh sáng màu, đợctách ra khi phân tích thành các màu thành phần, nh giới thiệu trong hình 11.2 Tronghình 11.2a, hệ thống tổng hợp ánh sáng đợc giới thiệu với các màu riêng hay dùngnhất: đỏ, lục, lam Cộng màu đỏ và màu lục kết quả cho ta màu vàng Cộng ba màu
đỏ, lục, lam theo tỷ lệ thích hợp cho ta màu trắng Hai màu đợc bổ sung, khi trộn với
Trang 2tỷ lệ thích hợp, cho màu trắng Màu đỏ tơi, ví dụ, khi trộn với tỷ lệ bù thêm vào củamàu lục, cho ta màu trắng, nh giới thiệu trong tam giác màu ở hình 11.2a Vì vậy,màu đỏ tơi là màu bù của màu lục Các phân tích riêng cho các màu nhuộm thànhphần là phần bù của các màu tổng hợp của ánh sáng (hình 11.2b) Các màu riêngphân tích khi trộn tỷ lệ cho kết quả là màu đen Hầu hết các màu đều dựa trên haitam giác giới thiệu trong hình 11.2
Hình 11.1 Dải sóng của các ánh sáng nhìn thấy đợc.
Hình 11.2 Tổng hợp màu theo phơng pháp cộng và trừ.
Để xác định một ánh sáng màu thì các yếu tố sau đây cần đề cập đến :
Độ sáng hay chói Nó là tổng hợp của ánh sáng nhận đợc bởi mắt không kể tới
màu sắc Nó nằm trong khoảng từ lờ mờ tối đến rất sáng hoặc chói mắt
Sắc màu Chính là màu có phổ trội hơn trong ánh sáng.
Bão hoà màu Nó tạo ra độ tinh khiết phổ của màu trong ánh sáng Cho một hỗn
hợp của màu và đen trắng, độ bão hoà màu đợc tăng thêm bởi tăng của tổng các sắcmàu
1 1 1 1 1 1
A o m à à mm m km
Tia nhìn thấy UV
Lục (b)
Đỏ t ơi (a)
Trang 3Những tính chất này có thể mô tả bằng sơ đồ nh trong hình 11.3
Có tám tính chất cơ bản quyết định hỗn hợp của ba màu:
1 Một điểm màu tổng hợp thì độc lập đối với độ sáng trên một phạm vi rộng
2 Độ sáng của một hỗn hợp các màu là tổng của các độ sáng riêng lẻ
3 Bất kỳ một màu nào cũng đợc tạo ra bởi một hỗn hợp không nhiều hơn bamàu thành phần
7 Các màu kết hợp tuân theo luật trừ
8 Các màu kết hợp tuân theo luật bắc cầu Nếu C1 kết hợp C2 và C2 kết hợp C3thì C1 kết hợp với C3
Hình 11.3 Thuộc tính của màu.
11.2.1 Nhận biết màu sắc
Mắt ngời có hai bộ phận cảm nhận ảnh: tế bào nón và tế bào gậy Chúng nằm
trên màng trong cùng của mắt, gọi là võng mạc, và chúng cảm nhận vật thể qua ảnh
của vật thể đó trên võng mạc Trong toàn bộ mắt thì các tế bào nón có vào khoảngsáu đến bảy triệu Chúng nằm tập trung ở vị trí trung tâm của võng mạc gọi là hố
Màu sắc
Tối nhất Lam
Tía
Trang 4võng mạc, và có độ nhạy cảm cao đối với màu sắc Con ngời sở dĩ có thể phân biệt
đ-ợc các chi tiết là vì các tế bào nón này đđ-ợc nối với các dây thần kinh ở phía cuối
ảnh thu đợc từ các tế bào nón này gọi là các hình ảnh độ sáng Số tế bào gậy thì rất
lớn, vào khoảng từ 75 cho đến 100 triệu và chúng đợc phân bố đều khắp bề mặtvõng mạc Sự phân bố rộng cùng với thực tế là tế bào gậy đều đợc nối một dây thầnkinh riêng tạo ra kết quả là sự tổng hợp các chi tiết bởi bộ phận cảm nhận này Tếbào gậy cung cấp cho ta một hình ảnh toàn bộ của vật thể không bao gồm các chitiết về màu sắc và độ sáng Trong ánh sáng mờ thì chỉ có tế bào gậy bị kích thích vàvật thể hiện lên nh một ảnh không có màu sắc Đặc tính này gọi là khả năng thích ứng nhìn tối.
Lý do mà con ngời có thể phân biệt đợc màu sắc thì hiện nay vẫn cha đợc làm rõràng Một giả thiết là mắt con ngời có ba loại tế bào nón, mỗi loại cho cảm ứng vớimột loại màu sắc riêng là: đỏ, lục, lam Cảm nhận của các tế bào nón này đợc trải ratrên một dải tần số rộng Sau nhiều lần thử nghiệm, các màu riêng đã đợc chuẩn hoábởi ủy ban CIE (Commission International d'Eclairage) Các màu riêng theo tiêuchuẩn của CIE bao gồm: màu đỏ (700 nm), màu lục (546,1 nm), màu lam (435,8nm) Mắt của con ngời cho một cảm nhận tốt nhất đối với các màu riêng này so vớicác màu còn lại Cảm nhận màu sắc phụ thuộc rất lớn vào độ sáng Màu sắc đợc cảmnhận tốt hơn khi độ sáng tăng lên Một ảnh tốt thực sự thì sẽ cho một cảm nhận caohơn về độ sáng so với các ảnh còn lại Trong hình 11.4 đa ra đờng cong cảm nhận độsáng của mắt ngời đối với các ánh sáng có bớc sóng khác nhau với cùng một mứcnăng lợng Mắt ngời cảm nhận tốt nhất với màu lục (bớc sóng vào khoảng 555 nm).Khả năng phân biệt sự chuyển dần màu sang các màu tơng tự bị hạn chế Chính vìhạn chế này của mắt ngời mà một số sản phẩm về màu đợc sản xuất trong thực tếvẫn thoả mãn yêu cầu, thậm chí ngời ta có thể cắt bớt một số trong phổ màu thực
11.2.2 Biểu thức màu
Các màu riêng RGB: đỏ (Red), lục (Green), lam (Blue) là các màu riêng vật lý đợc
dùng trong các thí nghiệm vật lý thực sự Các màu riêng này không phải là duy nhất
và ta có thể dùng các màu riêng khác để thay thế Vào năm 1938, CIE đã đa ra mộttập các màu riêng không vật lý, ký hiệu là X, Y, Z Cải tiến chính trong tập màu này
là độ sáng đợc đa ra trực tiếp nh là một màu riêng (Y) Y sẽ cho ta mức xám từ ảnh
màu Các màu riêng này đợc rút ra từ các màu riêng vật lý theo biến đổi tuyến tínhcho bởi :
X = 2.7690R + 1.7518G + 1.1300B
Y = 1.0000R + 4.5907G + 0.0601B (11.1)
Z = 0.0000R + 0.0565G + 5.5943B
Trang 5Hình 11.4 Sự cảm nhận cờng độ sáng của mắt ngời.
Các biểu thức này là đúng cho bất kỳ màu nào Dựa trên các X, Y, Z sơ đồ màu
CIE đã đợc phát triển Sơ đồ này là một không gian biểu diễn cho tất cả các màu cóphổ và tổng hợp của chúng (Hình 11.5) Toạ độ màu rút ra từ :
D = X + Y + Z
y z
D
Z D
Y D
X
x= = = (11.2)
x + y + z = 1
(nm)λ
400 500 600 700
1.0 0.8 0.6 0.4 0.2 0
Đỏ t ơi Các sắc màu khác
(G) (G')
.
Trang 6Hình 11.5 Biểu đồ màu CIE.
Trong sơ đồ CIE một loạt các màu có phổ đợc cho dọc theo đờng cong, các gócbiểu diễn cho ba màu riêng: đỏ, lục, và lam Gần trung tâm của miền nằm trong tamgiác các màu trở nên ít bão hoà hơn, biểu diễn cho hỗn hợp màu Màu trắng nằm tại
điểm trung tâm w với toạ độ x = y = 0.3333
Sơ đồ màu trên chứa các màu với cùng một độ sáng Nếu độ sáng của màu đợccho bởi giá trị của z tại góc bên phải của mặt phẳng x-y, tất cả các màu với độ sáng
của nó sẽ có dạng nh hình 11.6 Nếu độ sáng tăng lên, sơ đồ màu sẽ trở nên rộng hơn
và sẽ có nhiều chi tiết màu trông thấy Tại các mức độ sáng thấp, các màu trở nênkkó phân biệt và sơ đồ sẽ thu hẹp lại một điểm, biểu diễn cho màu đen
11.3 ảnh màu
Nếu bạn kiểm tra màn hình của một tivi khi nó đợc bật lên, bạn sẽ chú ý thấy tạitất cả các điểm ảnh màu đợc tạo nên bằng ba vòng tròn nhỏ hoặc tam giác có màu
đỏ, lục, lam Sự thay đổi độ sáng của ba phần tử màu này tạo nên màu sắc của điểm
ảnh Trong ảnh số thì các điểm ảnh đợc biểu diễn bằng một số từ có cùng một số bitcho các màu đỏ, lục, lam Ví dụ nh ảnh màu đợc biểu diễn bằng 16 bit thì đều có 5bit để biểu diễn cho mỗi màu, bit cuối cùng dùng cho một vài chức năng đặc biệt nhngăn xếp Trong một khung số thì bit cuối cùng thông thờng để chỉ ra điểm ảnh này
đợc lấy từ bộ đệm khung (bộ nhớ ngăn xếp) hay là từ tín hiệu video bên ngoài (ngănxếp trực tiếp) Trong hệ thống 16 bít 32,768 màu có thể đợc biểu diễn với ba màuriêng có khả năng thể hiện 32 trạng thái Cấu tạo của một điểm ảnh cho trong bảng11.1
•
•
Bóng xám
G
Trang 711.4 Tính sơ đồ màu cho các hệ thống màu 15 bit và 8 bit
Để làm mở rộng hiểu biết của chúng ta về hỗn hợp màu, chúng ta sẽ làm một ch
-ơng trình tính và thể hiện sơ đồ màu cho hệ thống 15 bit (5 bít cho một màu) và hệthống màu 8 bit (256 màu) Hệ thống 15 bit màu mà chúng ta sử dụng làProfessional Image Board (PIB) của Atronics International, Inc (ATI) Vỉ mạch này
đợc thiết kế để thể hiện ảnh có kích thớc 512 ì 256 hoặc là 512 ì 512 điểm, với tấtcả các điểm biểu diễn bằng 16 bit 16 bit này đợc chia nh trong bảng 11.1 Vỉ mạchVGA có khả năng thể hiện 256 màu với tất cả các màu thể hiện bằng 6 bit Tổng sốmàu mà vỉ mạch VGA có thể tính ra là 218 = 262,144 Dù thế nào đi chăng nữa thìchỉ có 256 màu đợc sử dụng Một vỉ mạch này tơng đơng nh là thiết bị video màu 8bit
bảng 11.1 Biểu diễn của điểm ảnh màu 16 bit
ơng trình trong chơng này mà không cần vỉ mạch lu giữ khung màu, nhng để làmcho đầy đủ công việc tôi khuyên bạn nên sử dụng một vỉ mạch có chế độ ít nhất là
512 ì 256 Nó không quá đắt, thậm chí nó rẻ hơn một số vỉ mạch đen trắng Tôi sẽcung cấp cho bạn các chơng trình con dùng cho loại vỉ mạch này, nếu bạn có mộtloại vỉ mạch khác thì không phải là khó khăn lắm để viết lại các sửa đổi cho phùhợp Chơng trình mà tôi đa ra trong chơng này đợc viết bằng Turbo C Nó sẽ đòi hỏiphải có một thay đổi nhỏ trên mã nguồn cung cấp cho vỉ mạch ATI, PIBTOOL.C vàIMGIO.ASM Để dịch và liên kết thành một chơng trình (tên là CHROM.C) bạn cóthể làm điều này thông qua Project trên menu lựa chọn của môi trờng phát triển kết
hợp hoặc là đánh dòng lệnh DOS :
tcc chrom.c pibtool.c imgio.asm
Trớc khi xử lý, bạn sẽ cần viết một file "custom.h" chứa một loạt các chơng trình
nguồn sử dụng trong hai chơng trình IMGIO.ASM và PIBTOOL.C Danh sách của
"custom.h" đợc cung cấp sau chơng trình 11.1 Đặt "custom.h" nằm ở th mục con
Turbo C
Chơng trình cho vỉ mạch PIB đợc viết cho kiểu 512 ì 256 Các bạn cũng có thểdùng nó với kiểu 512 ì 512 mà không cần có một sự thay đổi nào Nếu bạn muốn sửdụng đầy đủ khả năng của kiểu 512 ì 512 thì bạn cần một số thay đổi nhỏ Nếu khảnăng tài chính không cho phép bạn có một vỉ mạch nh vậy, thì bạn có thể dùng vỉmạch VGA thay thế
Bây giờ chúng ta sẽ quay lại với sơ đồ màu CIE Mã nguồn dùng trong chơngtrình 11.1 cho hiện lên sơ đồ màu trên một monitor màu dùng vỉ mạch PIB
Trang 8Ch¬ng tr×nh 11.1 "CHROM.C".Displaying the chromaticity diagram.
#include <custom.h>
/* Program for displaying the chromaticity diagram
using the ATI PIB board, 512x256 version */
InitPIB(); /* Initials the PIB to the
internal display mode.*/
SetInDispMode();
/* Sets PIB to the internalSync display mode and also enablesthe direct memory access */
SetScreen(0); /* Display page 0 512x256 */
mode=0 for set the pixel to the value specified
mode=1 for 'exclusive or' the pixelwith the value specified
mode=2 for 'and' the pixel with the
Trang 9File include "custom.h" chứa các một loạt chơng trình con cung cấp bởi ATI Nếu
cha đợc cung cấp bởi ATI bạn có thể tự viết lấy các chơng trình này Liệt kê cho
"custom.h" cung cấp ở dới đây.
void FGetPibRow(char far *,int,int,int);
void FPutPibRow(char far *,int,int,int);
void GetPibRow(char far *,int,int,`int);
void PutPibRow(char far *,int,int,int);
unsigned GetPixel(unsigned *,int,int);
void PutPixel(unsigned *,int,int,int);
void SaveData(unsigned,unsigned,int);
void SetBright(int);
Biểu đồ màu cho các màu tính ra bằng vỉ mạch PIB đợc giới thiệu ở cuối cuốnsách này Nếu bạn có phần kiểm tra vật lý của "độ sáng" (ví dụ nh College Physic)bạn sẽ có thể so sánh biểu đồ màu của kiểm tra vật lý với kết quả rút ra từ ch ơngtrình 11.1 Nếu hệ thống có khả năng hiện nhiều màu hơn bạn sẽ có một sơ đồ dày
6 , v.v , ở đây R,G,B là giá trị nguyên Nếu đợc biểu diễn ảnh 5 bit màu, bạn cần
nhân kết quả với 2 để chuyển sang dạng 6 bit/màu nh trờng hợp tơng thích với VGA.Biết R,G,B chúng ta có thể tính địa chỉ của bảng màu dùng
Trang 10/* Program for displaying chromaticity
diagram using a VGA The program emulates
a video card capable of 15 bits/pixel.*/
char far *farptr;
union REGS reg;
struct SREGS sreg;
clrscr();
/* Generate color palette We assume 6 bits
per color for VGA, and therefore the range
will extend from 0 to 63per color */
Trang 11/* Setting display mode to 32Ox2OO */
/* Group every 6 colors in red, green and
blue,i.e (R/6)*6, and then multiply by 2
to spread the range from 0 to 63 (6-bits.) */
Trang 1211.5 Hiển thị ảnh màu trên hệ thống màu 15 bit và 8 bit
Phần sắp tới chúng ta sẽ xây dựng chơng trình cho hiển thị ảnh và sửa lại màu,
độ sáng , trên vỉ mạch PIB Chơng trình cũng bao gồm nén và chứa ảnh trên mộtfile Sau đó là một chơng trình cho hiển thị ảnh màu bằng vỉ mạch VGA
Chơng trình 11.3 "DISPPIB.C" To display, freeze, and save an image on the PlB board.
/* Program for displaying images in live mode
through the PIB board Through the program you
can adjust colors, brightness,etc You are also
given the choices to freeze and save the image
Trang 14cprintf("Key pressed %c",a);
gotoxy(30,8);
cprintf("Hue %4d",k1);
Trang 16cprintf("Key pressed %c",a);
Trang 18Để hiện thị màu bằng vỉ mạch VGA bạn có thể dùng chung bảng màu đợc pháttriển cho hiện biểu đồ màu Bảng màu này không phải là bảng màu tốt nhất cho tấtcả các ảnh màu, và có thể tạo ra một bảng màu tối thiểu cho hiển thị ảnh Một phépgần đúng cho phát triển bảng màu 8 bit (256 màu) cho các ảnh màu đặc biệt có thểmô tả bằng các bớc sau đây:
Giá trị ban đầu của bốn mảng, tất cả của 256 mức, đến giá trị không:
palette.blue[256], palette.green[256], palette.red[256]
palette.count[256]
ở đây mỗi màu là một của bốn mảng số nguyên không dấu: đỏ, lục, lam, và số thứ
tự Quét toàn bộ ảnh và cho mỗi điểm màu:
1 Nhân ba màu chính r, g, b với một hệ số hằng sao cho giá trị chỉ đến 255.
Trong ảnh 5 bit /màu chính có nghĩa là dịch trái 3 bit (ví dụ giá trị lớn nhất chomàu chính là 31 ì 8), hoặc bạn có thể chia khoảng cách giữa các giá trị saocho màu chính với cờng độ sáng lớn nhất nàm trong khoảng từ 0 đến 255
2 Tính cờng độ chói dùng y = 0,59g + 0,30r + 0,11b, hoặc bạn có thể dùng công
thức cho Y cho ở biểu thức (11.1) Làm tròn y đến giá trị nguyên gần nhất Nếu
ảnh màu có thể hiển thị nh một ảnh mức cờng độ sáng 8 bit tính dùng biểu thức
độ chói và mục màu tính ra Chú ý là ảnh màu cung cấp trong cuốn sách này cóchiều rộng là 512, và chiều cao là 256 điểm ảnh sẽ chỉ hiện lên cân xứng chỉ khi tadùng vỉ mạch PIB ATI Khi hiển thị ảnh dùng bộ chuyển đổi đồ hoạ video, để cho
ảnh có tỷ lệ hợp lý, bạn cần chuyển ảnh có kích thớc 256 ì 256 Chơng trình thựchiện chuyển đổi này lu giữ trên đĩa trong file có tên là ATI_SCAL.C ảnh có thể hiệnlên dới chế độ Microsoft Window bằng cách đầu tiên chuyển ảnh thành dạng bitmapcho Windows Các file này thờng có phần mở rộng là BMP Chơng trình dùngchuyển một ảnh màu thành file BMP đợc cung cấp trên đĩa dới tên BIN2BMP.EXE.Một ảnh đã đợc chuyển đổi có thể đợc xem bằng chơng trình Paintbrush củaWindows Chú ý rằng Windows phải ở chế độ hiển thị 256 màu Thuộc tính nàyxuất hiện khi bạn nhắp đúp vào nhóm chơng trình "Main" và sau đó nhắp đúp vào
"Window Setup" Kích "Options", sau khi đã kích vào "Change System Settíng" Bạncần đĩa Windows' video driver cho phép máy tính và vỉ mạch video chuyển sang chế
độ mà bạn mong muốn