* Cấu trúc thông thường của một ảnh bất kì gồm 3 phần :- Header thông tin file ảnh - Palette bảng màu - Data dữ liệu ảnh... + Cấu trỳc ảnh cụ thể Nếu ta hình dung trong một tệp ảnh xếp l
Trang 1Đề tài báo cáo môn học
Xử lý ảnh
Nhóm sinh viên thực hiện gồm:
2 Nguyễn Xuân Tuấn 6.Trần Văn Tiến
Trang 2* Cấu trúc thông thường của một ảnh bất kì gồm 3 phần :
- Header (thông tin file ảnh)
- Palette (bảng màu)
- Data (dữ liệu ảnh)
Trang 3* Cấu trỳc ảnh PCX:
Định dạng ảnh PCX là một trong những định dạng ảnh cổ điển nhất Nó sử dụng
ph ơng pháp mã loạt dài RLE (Run-Length-Encoded) để nén dữ liệu ảnh Quá trình nén và giải nén đ ợc thực hiện trên từng dòng ảnh Thực tế, ph ơng pháp giải nén PCX kém hiệu quả hơn so với kiểu IMG Tệp PCX gồm 3 phần: đầu tệp (header), dữ liệuảnh (image data) và bảng màu mở rộng(xem hình 2.10)
Header của tệp PCX có kích th ớc cố định gồm 128 byte và đ ợc phân bố nh sau:
+ 1 byte : chỉ ra kiểu định dạng Nếu là kiểu PCX/PCC nó luôn có giá trị là 0Ah
+ 1 byte: chỉ ra version sử dụng để nén ảnh, có thể có các giá trị sau:
- 0: version 2.5
- 2: version 2.8 với bảng màu
- 3: version 2.8 hay 3.0 không có bảng màu
- 5: version 3.0 có bảng màu
+ 1 byte: chỉ ra ph ơng pháp mã hoá Nếu là 0 thì mã hoá theo ph ơng pháp BYTE PACKED, nếu không là ph ơng pháp RLE
Trang 4+ 1 byte: số bit cho một điểm ảnh plane.
+ 1 word: toạ độ góc trái trên của ảnh Với kiểu PCX nó có giá trị là (0,0); còn PCC thì khác (0,0)
+ 1 word: toạ độ góc phải d ới
+1 byte: số bit plane mà ảnh sử dụng Với ảnh 16 màu, giá trị này là 4, với
ảnh 256 màu (1 pixel/8 bit) thì số bit plane lại là 1
+ 1 byte: số bytes cho một dòng quét ảnh
+ 1 word: kiểu bảng màu
+ 58 byte: không dùng
Trang 5nh dạng ảnh PCX th ờng đ ợc dùng để l u trữ ảnh vì thao tác đơn giản, cho phép nén
Đ
và giải nén nhanh Tuy nhiên vì cấu trúc của nó cố định, nên trong một số tr ờng hợp
nó làm tăng kích th ớc l u trữ Và cũng vì nh ợc điểm này mà một số ứng dụng lại sử dụng một kiểu định dạng khác mềm dẻo hơn
Trang 6+) Cấu trỳc ảnh cụ thể
Nếu ta hình dung trong một tệp ảnh xếp liên tiếp các byte từ đầu đến cuối và dồn chúng vào trong một hộp chữ nhật, thì có thể hình dung tệp ảnh PCX nh hình vẽ sau:
Trang 7I Data of Image
1 ảnh 24 bit
ã Mỗi điểm ảnh chiếm 3 byte mô tả ba thành phần: Red, Green, Blue
2 ảnh 256 màu
ã Dữ liệu mỗi điểm ảnh chiếm 1 byte, chỉ số hiệu màu của điểm ảnh này Màu của
điểm ảnh đ ợc mô tả trong bảng màu Giả sử byte mô tả điểm ảnh có giá trị là b, bảng màu đ ợc chứa trong mảng P, thì thành phần các màu của điểm ảnh này là P[b].R, P[b].G, P[b].B
ã Dữ liệu đ ợc nén theo thuật toán RUN_LENGTH với 2 bit cao làm cờ
3 ảnh 16 màu
ã Mỗi điểm ảnh đ ợc mô tả bởi một con số, có giá trị từ 0 đến 15 Do vậy, giá trị mỗi
điểm ảnh chỉ cần 4 bit để mô tả
Dữ liệu ảnh đ ợc mã hoá theo mặt phẳng bit, sau đó nén theo thuật toán
RUN-LENGTH với 2 bit cao làm cờ
Trang 8II Color Palette (Bảng màu)
2 ảnh 256 màu
ã Bảng màu chiếm 256*3=768 byte, đ ợc đặt ở cuối tệp
ã Mỗi màu đ ợc mô tả bởi 3 byte, thể hiện các thành phần: RED, GREEN và BLUE
ã Giá trị của các thành phần RED, GREEN và BLUE đ ợc l u trữ ở 6 bit cao
3 ảnh 16 màu
ã Bảng màu chiếm 16*3=48 byte
ã Mỗi màu đ ợc mô tả bởi 3 byte, thể hiện các thành phần: RED, GREEN và BLUE
ã Giá trị của các thành phần BLUE, GREEN và RED đ ợc l u trữ ở 6 bit cao
ã Không phụ thuộc vào số l ợng màu, 48 byte của bảng 16 màu luôn có mặt trong phần Header
III Header
Header của các tệp ảnh PCX gồm 54 byte, đ ợc mô tả chi tiết trong bảng sau:
Trang 94 X1,Y1 above-left co-ordinates of image
4 X2,Y2 below-right co-ordinates of image
2 Horizontal Discrimination (meter)
2 Vertical Discrimination (meter)
48 Color Palette of 16 colors
1 Video Mode
1 Number of bit’s plane
2 Number of bytes per line (after encode bits planes)
60 Unused
Trang 10+ 2 bytes tiếp theo: chứa độ dài mẫu tin Đó là độ dài của dãy các bytes
kề liền nhau mà dãy này sẽ đ ợc lặp lại một số lần nào đó Số lần lặp này sẽ đ ợc l u trong byte đếm Nhiều dãy giống nhau đ ợc l u trong một byte
Trang 11+ 4 bytes tiếp: mô tả kích cỡ pixel
+ 2 bytes tiếp : số pixel trên một dòng ảnh+ 2 bytes cuối: số dòng ảnh trong ảnh
ảnh IMG đ ợc nén theo từng dòng Mỗi dòng bao gồm các gói(pack) Các dòng giống nhau cũng đ ợc nén thành một gói Có 4 loại gói sau:
* Loại 1: Gói các dòng giống nhau
Quy cách gói tin này nh sau: 0x00 0x00 0xFF Count Ba byte đầu cho biết số các dãy giống nhau; byte cuối cho biết số các dòng giống nhau
* Loại 2: Gói các dãy giống nhau
Quy cách gói tin này nh sau: 0x00 Count Byte thứ hai cho biết số các dãy giống nhau đ ợc nén trong gói Độ dài của dãy ghi ở đầu tệp
* Loại 3: Dãy các pixel không giống nhau, không lặp lại và không nén đ ợc.
Qui cách nh sau: 0x80 Count Byte thứ hai cho biết độ dài dãy các pixel không giống nhau không nén đ ợc
Trang 12* Loại 4: Dãy các pixel giống nhau
Tuỳ theo các bit cao của byte đầu đ ợc bật hay tắt Nếu bit cao đ ợc bật (giá trị 1) thì đây là gói nén các bytes chỉ gồm bit 0, số các byte đ ợc nén đ ợc tính bởi 7 bit thấp còn lại Nếu bit cao tắt (giá trị 0) thì đây là gói nén các byte gồm toàn bit 1 Số các byte đ ợc nén đ ợc tính bởi 7 bit thấp còn lại
Các gói tin của file IMG phong phú nh vậy là do ảnh IMG là ảnh đen trắng, do vậy chỉ cần 1 bit cho 1 pixel thay vì 4 hoặc 8 nh đã nói ở trên Toàn bộ
ảnh chỉ có những điểm sáng và tối t ơng ứng với giá trị 1 hoặc giá trị 0 Tỷ lệ nén của kiểu định dạng này là khá cao
Trang 13* Cấu trỳc ảnh TIFF:
Kiểu định dạng TIFF đ ợc thiết kế để làm nhẹ bớt các vấn đề liên quan đến việc mở rộng tệp ảnh cố định Về cấu trúc, nó cũng gồm 3 phần chính:
- Phần Header (Headear): có trong tất cả các tệp TIFF và gồm 8 byte:
+ 1 word: chỉ ra kiểu tạo tệp trên máy tính PC hay Macintosh Hai loại này khác nhau rất lớn ở thứ tự các byte l u trữ trong các số dài 2 hay 4 byte Nếu tr ờng này có giá trị là 4D4Dh thì đó là ảnh cho máy Macintosh; nếu là 4949h là của máy PC
+ 1 word: version Từ này luôn có giá trị là 42 Có thể coi đó là
đặc tr ng của file TIFF vì nó không thay đổi
Trang 14+ 2 word: giá trị Offset theo byte tính từ đầu file tới cấu trúc IFD(Image File Directory) là cấu trúc thứ hai của file Thứ tự các byte ở đây phụ thuộc vào dấu hiệu tr ờng đầu tiên.
- Phần thứ 2 (IFD): Nó không ở ngay sau cấu trúc IFH mà vị trí của nó đ ợc xác
định bởi tr ờng Offset trong đầu tệp Có thể có một hay nhiều IFD cùng tồn tại trong file (nếu file có nhiều hơn 1 ảnh)
Một IFD gồm:
+ 2 byte: chứa các DE (Directory Entry)
+ 12 byte là các DE xếp liên tiếp Mỗi DE chiếm 12 byte
+ 4 byte : chứa Offset trỏ tới IFD tiếp theo Nếu đây là IFD cuối cùng thì
tr ờng này có giá trị là 0
- Cấu trúc phần dữ liệu thứ 3: các DE
Các DE có độ dài cố định gồm 12 byte và chia làm 4 phần:
+ 2 byte: Chỉ ra dấu hiệu mà tệp ảnh đã đ ợc xây dựng
+ 2 byte: kiểu dữ liệu của tham số ảnh Có 5 kiểu tham số cơ bản:
Trang 15+ 4 byte: tr ờng độ dài (bộ đếm) chứa số l ợng chỉ mục của kiểu dữ liệu
đã chỉ ra Nó không phải là tổng số byte cần thiết để l u trữ Để có số liệu này ta cần nhân số chỉ mục với kiểu dữ liệu đã dùng
+ 4 byte: đó là Offset tới điểm bắt đầu dữ liệu thực liên quan tới dấu hiệu, tức là dữ liệu liên quan với DE không phải l u trữ vật lý cùng với nó nằm ở một vị trí nào đó trong file
Dữ liệu chứa trong tệp th ờng đ ợc tổ chức thành các nhóm dòng (cột) quét của dữ liệu ảnh Cách tổ chức này làm giảm bộ nhớ cần thiết cho việc đọc tệp Việc giải nén đ ợc thực hiện theo bốn kiểu khác nhau đ ợc l u trữ trong byte dấu hiệu nén
Nh đã nói ở trên, file ảnh TIFF là dùng để giải quyết vấn đề khó mở rộng của file PCX Tuy nhiên, với cùng một ảnh thì việc dùng file PCX chiếm ít không gian nhớ hơn
Trang 16* Cấu trỳc ảnh PNG:
PNG (từ viết tắt trong tiếng Anh của Portable Network Graphics; chớnh thức đọc như "pinh") là một dạng hỡnh ảnh sử dụng phương phỏp nộn dữ liệu mới - khụng làm mất đi dữ liệu gốc PNG được tạo ra nhằm cải thiện và thay thế định dạng ảnh GIF với một định dạng hỡnh ảnh khụng đũi hỏi phải cú giấy phộp sỏng chế khi sử dụng PNG được hỗ trợ bởi thư viện tham chiếu libpng, một thư viện nền tảng độc lập bao gồm cỏc hàm của C để quản lý cỏc hỡnh ảnh PNG
Nếu ta hình dung trong một tệp ảnh xếp liên tiếp các byte từ đầuđến cuối
và dồn chúng vào trong một hộp chữ nhật, thì có thể hình dung tệp ảnh :
Trang 18I Data of Image
1 ¶nh 24 bit
· Mçi ®iÓm ¶nh chiÕm 3 byte m« t¶ ba thµnh phÇn: Red, Green, Blue
2 ¶nh 256 mµu
· Mçi ®iÓm ¶nh chiÕm 1 byte, chØ sè hiÖu mµu cña ®iÓm ¶nh nµy
· Sè hiÖu mµu cña c¸c ®iÓm ¶nh: 0, 1, , 255
· Mµu cña ®iÓm ¶nh ® îc m« t¶ trong b¶ng mµu Gi¶ sö byte m« t¶ ®iÓm ¶nh cã gi¸ trÞ lµ b vµ b¶ng mµu ® îc chøa trong m¶ng P, th× thµnh phÇn c¸c mµu cña
®iÓm ¶nh nµy lµ P[b].R, P[b].G, P[b].B Ch¼ng h¹n, mét ®iÓm ¶nh cã sè hiÖu mµu 20, c¸c thµnh phÇn cña mµu 20 lµ
Trang 19· VÝ dô, byte b = 217 (11011001) chøa d÷ liÖu cña hai ®iÓm ¶nh cã gi¸ trÞ lÇn
· B¶ng mµu chiÕm 256*4=1024, 16*4=64, 2*4=8 byte
· Mçi mµu ® îc m« t¶ bëi 4 byte, thÓ hiÖn 4 thµnh phÇn mµu: BLUE, GREEN,
RED vµ DARKGRAY
· Víi hÇu hÕt c¸c tÖp ¶nh BMP, thµnh phÇn DARKGRAY b»ng 0
· Gi¸ trÞ cña c¸c thµnh phÇn BLUE, GREEN vµ RED ® îc l u tr÷ ë 6 bit cao
Trang 20Blue Green Red Darkgray Red Green Blue Blue Green Red Darkgray
Blue Green Red Darkgray
Blue Green Red Darkgray
Trang 21Windows 3 Bitmap Header