1. Trang chủ >
  2. Công nghệ thông tin >
  3. Đồ họa >

Độ sâu màu, bảng màu, sự trong suốt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (898.2 KB, 120 trang )


kích thớc của ảnh. Giả sử có 256 giá trị màu (đã đợc đánh chỉ số), ta lu giá trị

màu 24-bpp (24 bit cho một điểm ảnh) trong mỗi một điểm truy cập của CLUT

(ta thực hiện đợc là nhờ vào khả năng của phàn cứng cho phép). Sau đó thực hiện

một phơng thức nén ảnh nào đó, khi đó ta đã lu đợc dữ liệu màu 24 bit bằng 8bit

CLUT. Tuy nhiên dữ liệu ảnh thì phải chứa cả CLUT. Tổng dung lợng cần thiết

cho một ảnh 640x480 là (640x480+256x24)/8=30KB. Nếu không sử dụng CLUT

thì tổng dung lọng cần thiết là (640x480x24)/8=922K.

Nh vậy hiệu quả của CLUT đã giúp ta tiết kiệm đợc 2/3 kích thớc của file. Sử

dụng CLUT không phải luôn tạo ra các sence. Nếu ảnh chứa số lợng lớn các màu

nó cần nhiều không gian nhớ để lu các điểm ảnh. Một cách tổng quát ta thấy đối

với tín hiệu ảnh nhiều hơn 256 màu thì cách tốt nhất là sử dụng dạng literal hoặc

absolute, bởi vì phần đầu của một CLUT lớn thì không có hiệu quả về không

gian. Trên thực tế kích thớc của CLUT có thể tiến tới kích thớc của ảnh.



Sự trong suốt (Transparency)

Trong lĩnh vực truyền hình TV, hình ảnh động thờng overload trên các ảnh tĩnh

( nh các bản đồ thời tiết chẳng hạn). Trong phạm vi ảnh bitmap thì hai ảnh

bitmap cũng có thể overload, từng phần của một ảnh bitmap đợc hiển thị từng

chi tiết và trong suốt để ta có thể thấy đợc ảnh nền. Tơng tự ta sử dụng đặc tính

trong suốt để tạo ra sự biến mất dần dần của một nguồn video tới một nguồn

khác. Trong trờng hợp này cần nhiều các mức độ trong suốt khác nhau (không

chỉ có bật và tắt thuộc tính trong suốt). Sự trong suốt thờng xuyên đợc diễn tả

bằng ảnh dạng bitmap trên cơ sở điểm nối tiếp điểm. Thông tin về tính trong

suốt đợc cộng vào cùng với thông tin về màu. Kiểu TGA sử dụng 5 bit cho mỗi

một thông tin màu (R, G, B) và một bit cho thông tin về tính trong suốt, tổng

cộng ta cần có 16 bit. Khi bit dành cho tính trong suốt đợc thiết lập 1 thì phần

cứng hiển thị ...Với dạng TGA có 32 bit trong đó dành 8 bit cho tính trong suốt

thì ta có 256 mức độ trong suốt khác nhau (0 là hoàn toàn trong suốt, 256 là

hoàn toàn mờ đục).



Một số dạng file ảnh

Trong phần này chúng ta có một danh sách các dạng ảnh thông dụng. Bảng

6.1 là danh sách liệt kê các dạng ảnh. Sau đó sẽ nói về các đặc tính tổng quát của

dạng đồ hoạ nh cách tổ chức file, cách nén, cách hiển thị.

Format



Type



AutoCAD DXF



Vector



Autodesk 3 D Studio



Scene Description



BMP(window)



Bitmap



CGM



Metafile



FLI



Animation



GEM Raster



Bitmap



GEM VDI



Metafile



GIF



Bitmap



Harvard Graphics



Metafile



IFF



Bitmap



93



Intel DVI



Multimedia



JPEG File Interchange



Bitmap



Kodak PhotoCD



Bitmap



MPEG



Mutimedia



PCX



Bitmap



PICT(Mac)



Metafile



Pixar RIB



Scene Description



PNG



Bitmap



POV



Vector



PPM



Bitmap



Quick Time



Multimedia



RayShade



Scene Description



SPIFF



Bitmap



Sun Raster



Bitmap



TIFF



Bitmap



TTDDD



Vector and Animation



Utah RLE



Bitmap



VEC



Vector



WMF(Windows)



Metafile



Bảng 6.1



Phơng thức nén

Một số các phơng thức nén đợc sử dụng trong thông tin số (ngoài hình ảnh

còn có các thông tin khác), những phơng thức còn lại sử dụng để nén ảnh và một

số dạng dữ liệu đặc biệt khác. Trớc hết ta tìm hiểu xem bốn phơng thức nén dữ

liệu thông dụng : RLE, LZW, mã hoá Huffman và mã hoá arithmetic. Phần tiếp

theo xem xét phơng thức nén ảnh Diserete Cosine Transform (DCT) hay

transform-based compression.

Khi ta thực hiện nén dữ liệu thì có thể làm mất một phần thông tin (lossy)

hay không làm mất thông tin (lossless) nguyên thuỷ ban đầu. Phơng thức nén

lossy loại bỏ các thông tin đợc xem là kém quan trọng nhất tơng ứng trong một

ví dụ cụ thể. Khi nén có thể là nén đối xứng( symmetic) bởi quá trình nén là quá

trình ngợc lại với quá trình giải nén. Một cách nén khác là nén bất đối xứng nó

là một quá trình phức tạp hơn các phơng thức nén khác. Đối với tín hiệu video

nguyên thủy DMI của Itel. Một máy tính lớn song song đợc sử dụng để nén

chuỗi các ảnh liên tiếp, đồng thời một số lợng nhỏ các vi mạch mã hoá có trong

chip PSD video đợc sử dụng để giải nén các ảnh này. Đó là một ví dụ cho phơng

thức nén bất đối xứng.

Đối với các file ảnh bitmap thông thờng chỉ có các dữ liệu bitmap đợc nén.

Các thông tin khác có trong file (nh phần đầu và phần cuối - header and footer)

thì không đợc nén và cho phép đọc một cách bình thờng. Đối với các file dạng

94



vector thì thờng là không đợc nén. Bởi bản thân ảnh dạng vector đã đợc nén một

phần do chúng có mức trừu tợng cao hơn hẳn so với dạng bitmap. Việc hoàn trả

về các file vector thì cần nhiều thời gian hơn so với dạng bitmap, nếu có thêm

quá trình giải nén thì còn chậm hơn nữa.



RLE

Run Length Encoding (RLE) là một phơng thức nén khá thông dụng cho phép

nén các chuỗi kí tự tuần tự dạng số hay chữ.

Ví dụ:

Aaaaaaaaabc đợc mã hoá nh sau 10A1B1C

Số 10 là một số đếm, còn chữ cái A lại là một giá trị. Mỗi một kí tự trong

bảng mã ASCII đợc lu bằng một byte, một chuỗi ban đầu khi cha nén đợc lu bởi

12 byte sau khi đã nén chỉ đợc lu bởi 7 byte. Chú ý rằng độ dài chạy của 1 đòi

hỏi tối thiểu 2 kí tự.

Với các kí tự mã nhị phân ta có thể chọn lựa cách nén một bit hay một byte?

Việc lu độ dài chạy của giá trị thay đổi là nguyên nhân gây ra sự tăng kích thớc

file so với lúc đầu, hiện tợng này gọi là negative Compression. Một phơng thức

làm giảm đến tối thiểu ảnh hỏng của độ dài chạy là mã hoá bít, bắt đầu tại mỗi

khối, các bít đầu này cho biết độ dài chạy của chính khối đó. Nói cách khác nếu

giá trị của bít là 1 thì trình biên dịch sẽ cho biết khối có độ dài chạy; ngợc lại thì

dữ liệu trong khối là dữ liệu thờng không đợc mã hoá.

Đối với dữ liệu bitmap 2-D ta tự do hơn trong việc chọn cách mã hoá. Chúng

ta có thể mã hoá theo hàng (quét dòng), mã hoá theo cột thậm chí có thể mã hoá

theo từng phần nhỏ của dữ liệu.



Thuật toán nén Lempel, Ziv và Welch

Thuật toán nén dữ liệu đợc sử dụng rộng rãi hiện nay do Lempel, Ziv và

Welch phát minh do đó thuật toán nén đợc gọi là thuật nén LZW, ngoài ra một

số các thuật toán nén khác nh LZ77, LZ78 tất cả đều đợc đăng kí bản quyền do

vậy để có thể sử dụng đợc chúng ta cần phải trả tiền theo đúng qui định. Các

thuật toán đợc sửa đổi nh LZ77 không cho phép ta vi phạm luật bản quyền và

thật không may là các phần mềm phân tán rộng rãi ví dụ nh các file Compuserve

GIF thì lại sử dụng thuật toán nén này. Do có sự chống lại mạnh mẽ việc phải trả

tiền cho các phiên bản trên nên thuật toán PKZIP đã ra đời dựa trên cơ sở của

thuật toán cũ nhng đợc cung cấp miễn phí. GIF cũng là một thuật toán nén đòi

hỏi bản quyền nhng hiện nay thì tràn ngập các ảnh GIF. Có nhiều các tiện ích

cho phép chuyển đổi file ảnh GIF sang các dạng file khác, ví dụ nh dạng PPM.

Ngoài ra có một dạng file là PNG đợc tạo ra cạnh tranh với GIF và nó đợc cung

cấp miễn phí.

Cách thức làm việc của thuật toán nén LZW nh thế nào ?. Họ thuật toán nén

LZ mã hoá theo kiểu dictionary-based. Nguyên tắc nh sau: dữ liệu đợc đọc bằng

một bộ nén, một bảng hay một data dictionary, tạo nên điểm truy cập cho từng

mẫu có trong luồng dữ liệu vào. Nếu dữ liệu mới không có trong data dictionary,

một điểm truy cập mới sẽ đợc tạo ra tơng ứng với nó. Khi dữ liệu đợc đọc thì

điểm truy cập tơng ứng có trong data dictionary cũng đợc đọc và hiển nhiên là

nó nhỏ hơn dữ liệu nguyên thuỷ ban đầu, sau đó đợc copy đa vào luồng dữ liệu

ra (nh vậy đã thực hiện việc nén tín hiệu). Chìa khóa của thuật nén LZW là

95



dictionary không cần bộ giải mã, bởi vì theo cách tổ chức dữ liệu, bộ giải mã sẽ

có thể cấu trúc lại dictionary. Sự sắp xếp nh vậy có thể lu đợc nhiều không gian

hình ảnh hơn. Thuật nén LZW là thuật nén không mất dữ liệu(lossless).



Mã hoá Huffman

Giống nh thuật toán LZW, mã hoá Huffman dựa trên cơ sở từ mã. ở đây các

mã ngắn đợc chọn nhằm đại diện cho cảnh (hình ảnh) thờng xuyên xuất hiện

nhất trong luồng dữ liệu ảnh, các mã dài đợc sử dụng đại diện cho các cảnh ít

xuất hiện hơn. Ví dụ chữ cái A nếu đợc sử dụng thờng xuyên trong một văn bản

thì đợc mã hoá bằng hai bit thay vì 8 bit nh trong mã ASCII, trong khi đó chữ cái

Q ít khi xuất hiện trong văn bản có thể đợc mã hoá bởi 12 bit. Muốn thực hiện đợc quá trình giải mã và mã hoá nh vậy cần có một dictionary sử dụng cho quá

trình mã hoá. Trong các bộ nén kiểu LZW không có kiểu từ điển on-the-fly.

Luồng dữ liệu đợc tạo ra bởi mã Huffman đòi hỏi cấu trúc tinh vi hơn: không có

1 từ mã nào lại là phần đầu của một từ mã khác. Với cách làm này bộ giải mã

xác định từng cảnh (từng hình) một cách chính xác trong luồng dữ liệu đợc đọc

vào tuần tự. Một sự cải tiến của mã hoá Huffman là mã hoá số học (sẽ nói tới

trong phần sau). Cả hai loại mã Huffman và mã hoá số học đều thuộc thuật nén

không mất thông tin (lossless).



Mã hoá số học

Mã hoá số học hay còn gọi là mã hoá entropi phát triển từ mã hoá Hufman

theo hai cách. Trớc hết bạn có thể có phân đoạn mã- đó là các mã 4.18 bit (đợc

định nghĩa bằng cách thống kê). Thứ hai bạn sử dụng một dạng thống kê phức

tạp hơn. Nội dung thông tin đợc phân tích để sau đó chuyển đổi sang dạng mã

lần lợt cho từng mẫu, ta đa vào kí hiệu U đi kèm với mã nếu mã này xuất hiện

không thờng xuyên và đa vào kí hiệu UQ với các mã thờng xuyên xuất hiện( các

mã ngắn). Một nhánh của kiểu mã hoá số học đợc gọi là mã Q, nó đợc sáng chế

bởi IBM và AT&T. Thuật toán nén ảnh dạng JPEG đợc phát triển trên cơ sở mã

hoá Q.



DCT

DCT-phơng thức chuyển đổi dữ liệu ảnh sang miền tần số. DCT rất giống

với DFT nó có thể coi nó nh một tròng hợp riêng của DFT. Sự chuyển đổi mang

lại một tập các giá trị dơng phù hợp với các phần tử hay xuất hiện. Huffman eye

không phân biệt sự chuyển đổi màu ở tần số cao và các thông tin này đợc bỏ đi

mà không ảnh hởng nhiều tới chất lợng của ảnh. Đồng thời khi chuyển đổi sẽ

gán các giá trị không hay gần tới không để đạt đợc hiệu quả nén nh các phơng

thức nén kiểu lossless. Trong khi đó tất cả các phơng thức nén kiểu JPEG đều là

kiểu lossy.



Vấn đề hiển thị và Internet

Đối với ngời dùng Internet và WWW đây là cách hiệu quả để hiện thị các

ảnh đồ họa. Khi ngời sử dụng đến một địa chỉ Web nào đó thì mọi dữ liệu trong

đó có các dữ liệu đồ họa đều đợc tải xuống và hiển thị và họ dễ dàng nhận thấy

khi còn đang trong quá trình nạp dữ liệu thì các dữ liệu ảnh đợc giữ vị trí bởi các

khung và một biểu tợng nhỏ nằm trong khung này. Có hiện tợng này là hiện nay

chúng ta đang dùng các file ảnh dạng JPEG, GIF, PNG...Đối với ảnh GIF chúng

đợc truyền theo cách: ban đầu là các dòng thứ 8.x đợc truyền, tiếp đó là các dòng

96



thứ 4.x, 2.x và cuối cùng là các dòng còn lại nh vậy ban đầu chúng ta cũng chỉ

có thể nhìn thấy đợc 1/8 của ảnh. Cách truyền nh vậy đợc gọi là interlaced. Cách

ngợc lại với cách này đợc gọi là non-interlaced, các ảnh sẽ đợc lu và truyền đi

các dòng kế tiếp nhau một cách tuần tự. Chúng ta hãy xem minh hoạ trên hình

6.5 để biết chi tiết.

Dạng PNG đi cùng vớí GIF, nó thuộc kiểu interlaced trong đó mỗi điểm ảnh

thứ 8 nằm trên dòng thứ 8 đợc truyền đi đầu tiên và ta có thể nhìn thấy 1/64 của

toàn ảnh lúc ban đầu.

Luồng dữ liệu JPEG có cách truyền theo phơng thức khác. Thay cho việc

quét theo dòng nh ở trên thì ảnh đợc quét theo từng lớp. Phép xấp xỉ gần đúng

với ảnh gốc gửi đi tuần tự so vậy ngời dùng có thể nhìn thấy toàn cảnh của ảnh,

hiệu quả của phơng thức này là về mặt thời gian. Trong quá trình hiển thị ảnh

dạng JPEG cần có quá trình giải nén do đó có thể đòi hỏi sự xử lí bởi CPU.

Một dạng cải tiến từ ảnh JPEG cung cấp khả năng lu trữ tuần tự của cùng một

ảnh với các giải pháp khác nhau. Đối với mỗi một ảnh thì giá trị của các giải

pháp là khả năng tơng thích với các phần cứng để in và hiển thị ảnh.



Hình 6.5



Một số các dạng ảnh thông dụng

Trong phần này chúng ta nói tới chi tiết cấu trúc của các dạng ảnh thờng

dùng. Chú ý rằng th viện của Sun Java AWT cũng cung cấp một số các file ảnh ở

dạng JPEG và GIF.



GIF

GIF sử dụng thuật nén LZW. Có hai phiên bản là GIF87a (phiên bản đầu

tiên) và GIF89a. Phiên bản sau GIF89a có thể không tơng thích với một số phần

mềm chỉ đọc ảnh GIF87a, do đó hầu hết các trình xử lí ảnh đều có cả hai phiên

bản này. Cả hai phiên bản nói chung là giống nhau nhng phiên bản GIF89a có

97



sữ mở rộng hơn. Trên hình 6.6 biểu thị cấu trúc của file ảnh của cả hai phiên

bản.

Cấu trúc chung của file ảnh GIF:

Header: Chiếm 6 byte, ba byte đầu định danh dạng ảnh, 3 byte sau chỉ ra

phiên bản (87a hay 89a).

Local Screen Descriptor: nhóm byte có kích thớc xác định chứa các thông tin

về màn hình nh độ cao , độ rộng, màu sắc. Nếu kích thớc màn hình nhỏ hơn giá

trị các tham số thì ứng dụng tự động cân bằng lại kích thớc cho phù hợp.





Global color table: Chứa CLUT gồm 256 mục( mỗi mục là một giá trị màu).



Local Image Descriptor: chứa các thông tin về đặc tính của dữ liệu gồm vị trí

hiển thị ảnh, độ phân giải, thông tin màu.

Local color Table: GIF có thể đợc mở rộng để chứa nhều ảnh hơn mặc dù

khả năng này đợc ít khi sử dụng tới. Một chuẩn bị trớc tạo ra bảng màu cho ảnh.

Đây là bảng màu dùng để chỉ rõ CLUT và dữ liệu ảnh theo sau. Nếu bảng màu

đợc hiện diện thì nó sẽ thay thế bảng màu Global color table.

Image data: khi nén theo thuật toán LZW, dữ liệu ảnh đa vào một luồng và

đọc từ đầu cho đến hết. Dạng GIF chia ảnh tành các khối con, mỗi khối đợc bắt

đầu bằng một byte chỉ độ dài của khối sau nó. Khối kết thúc luồng dữ liệu ảnh

có giá trị của byte này là không.

Header



Header

Logical Screen Descriptor



Logical Screen

Descriptor



Global Color Table



Global Color Table



Local Image Descriptor



Comment Extension



Local Color Table



Application Extension



Image Data



Graphic Control

Extension



End of File Marker



Local Image

Descriptor



GIF87a



Local Color Table

Image Data

Comment Extension

Plain text Extension

End of File Marker

GIF 89a

Hình 6.6



JPEG và JFIF

Chuẩn ảnh JPEG thì không rõ ràng làm cho nó trở thành một chuẩn file

không đầy đủ. C-cube Mycrosystem tạo ra một chuẩn file ảnh mới đợc gọi là

98



Xem Thêm
Tải bản đầy đủ (.doc) (120 trang)

×