Tải bản đầy đủ (.docx) (28 trang)

Các phương pháp mã hóa và nén ảnh trong xử lý dữ liệu đa phương tiện

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 (1.23 MB, 28 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
__________*__________

BÁO CÁO XỬ LÍ DỮ LIỆU ĐA PHƯƠNG TIỆN
ĐỀ TÀI 6 : CÁC PHƯƠNG PHÁP MÃ HÓA NÉN ẢNH
GIẢNG VIÊN HƯỚNG DẪN : PGS.TS Nguyễn Thị Hoàng Lan
SINH VIÊN THỰC HIỆN

: Phan Minh Tân

20104834

Trần Khánh Duy

20111350

Đặng Anh Minh

20111853

Hà nội 5/2015


Mục Lục

Phân công công việc
Trần Khánh Duy
Phan Minh Tân
Đặng Anh Minh


Nhóm 6

-Tìm hiểu khái quát các loại dữ liệu đa phương tiện
- Tìm hiểu phương pháp má hóa nén ảnh
- Tổng hợp làm slide, báo cáo
-Tìm hiểu phương pháp nén ảnh JPEG và PNG
- So sánh định dạng dữ liệu ảnh JPEG và PNG
-Thử nghiệm ứng dụng, so sánh hiệu năng và giải thích

Page 2


Phần 1 : Các loại dữ liệu đa phương tiện, dữ liệu ảnh số
Các phương pháp mã hóa nén ảnh.
1. Dữ liệu đa phương tiện.
1.1. Dữ liệu đa phương tiện là gì?

Thông thường chúng ta thường gì nhận thông tin ở dạng văn bản, các văn bản
này đươc mã hóa và lưu trữ trên máy tính, khi đó chúng ta có dữ liệu dạng văn bản.
Một câu hỏi đặt ra nếu thông tin chúng ta thu nhận được ở một dạng khác như âm
thanh (voice), hình ảnh (image) thì dữ liệu của nó ở dạng nào? Chính những điều này
đã dẫn đến một khái niệm mới ta gọi đó là dữ liệu đa phương tiện.
Dữ liệu đa phương tiện là dữ liệu biểu diễn thông tin đa phương tiện.
Ví dụ dữ liệu đa phương tiện là các dữ liệu ở dạng thông tin như
- Âm thanh
- Hình ảnh
- Văn bản
- Kết hợp của 3 dạng trên
1.2. Các loại dữ liệu đa phương tiện.
Khi nghiên cứu các dữ liệu ở dạng thông tin trên, người ta nhận ra rằng cần phải

phân chia dữ liệu đa phương tiện nhỏ hơn nữa. Bởi vì dữ liệu ở các dạng âm thanh,
hình ảnh trong quá trình “vận động” theo thời gian có những tính chất rất khác so với
dạng tĩnh. Điều này đòi hỏi kĩ thuật, công nghệ xử lý rất khác nhau.
Người ta chia các loại dữ liệu đa phương tiện thành :
• Dữ liệu không phụ thuộc thời gian :
- Văn bản ( text)
- Đồ thị (graphic)
- Ảnh đồ họa

Nhóm 6

Page 3


Dữ liệu phụ thuộc thời gian- tín hiệu số :
Âm thanh (audio) , tiếng nói, ấm nhạc
Ảnh (image) , video, ảnh động (motion)
Hoạt hình (nimation)


-

2. Dữ liệu ảnh số
• Dữ liệu ảnh số: là giá trị các điểm ảnh x (0,1,2,…)
• Cấu trúc ảnh số: là ma trận các phần tử ảnh (pixel), mỗi pixel được đặc trưng

-

bởi tọa độ (vị trí), trong mặt phẳng (m,n) và giá trị điểm ảnh tại vị trí đó I(m,n)
Cấu trúc dữ liệu ảnh số: chia làm ba loại :

Ảnh xám (đa mức xám )
Ảnh màu
Ảnh nhị phân

3. Tìm hiểu chung về phương pháp nén ảnh trong truyền thông.
Nhóm 6

Page 4





Nén không mất mát thông tin : các phương pháp mã hóa dữ liệu.
Nén có tổn hao : mã hóa nén dựa trên phép biến đổi ảnh.

 Phân tích sơ đồ khối nén
• Khối FDCT : là khối biến đổi cosin rời rạc, biến đổi dữ liệu từ miền






Nhóm 6

số nguyên sang miền số thực.
Khối lượng tử hóa : là khối biến đổi dữ liệu sau DCT thành số
nguyên, đây là khối gây mất mát thông tin.
Khối mã hóa : thực hiện biến đổi dữ liệu sau lượng tử hóa thành

cách từ mã.
Bảng lượng tử hóa: là ma trận 8x8 được sử dụng cho việc biến đổi
dữ liệu từ số thực sang số nguyên, bảng này cũng được mã hóa kèm
với dữ liệu sau lượng tử hóa.
Bảng mã hóa : là luật mã hóa các dữ liệu số nguyên sau lượng tử hóa
thành các từ mã.

Page 5


Phần 2 : Phương pháp nén ảnh JPEG và PNG
I.Phương pháp nén ảnh JPEG
1. Giới thiệu về JPEG

JPEG là viết tắt của Joint Photographic Expert Group( nhóm các chuyên gia phát triển
chuẩn ảnh này). Chuẩn JPEG được công nhận là chuẩn ảnh quốc tế năm 1990 phục vụ
các ứng dụng truyền ảnh cho các lĩnh vực như y học, khoa học kỹ thuật, ảnh nghệ thuật…
vv
Phương pháp nén ảnh JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ
nén ảnh tới vài chục lần. tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu. chất
lượng ảnh bị suy giảm sau khi nén, sự suy giảm này tăng dần theo hệ số nén. Nhưng sự
mất mát thông tin này là có thể chấp nhận được và việc loại bỏ những thông tin không
cần thiết được dựa trên những nghiên cứu về hệ nhãn thị của mắt người.
Nguyên lý của phương pháp nén JPEG là: cắt hình ảnh thành từng khối nhỏ, phân tích tất
cả các dữ liệu về màu sắc, độ sáng mà các khối đó chứa bằng các phương trình ma trận.
Ảnh màu trong không gian RGB( red, green, blue) được chuyển đổi qua hệ YCbCr.
Trong khi thị giác con người lại rất nhạy cảm với hệ Y, ít nhạy cảm hơn nhiều với hệ
Cb,Cr. Dẫn đến hệ thống sẽ nén thành phần Y của ảnh ở mức độ ít hơn nhiều so với Cb
và Cr. kế tiếp là dụng biến đổi Cosin rời rạc, sau nữa là quá trình lượng tử hóa và mã hóa.
Khi giải nén ảnh các bước thực thi sẽ làm ngược lại quá trình nói trên.

2. Quy trình nén ảnh JPEG

Trước biến đổi ảnh được xử lý phân tích thành các ảnh đơn sắc và được số hóa
theo một trong những tiêu chuẩn hiện hành.Sau đó ảnh được chuyển đổi không
gian màu : RGB sang YUV hoặc CrYCb tùy vào thiết bị hiển thị.
• Chuẩn nén JPEG ban đầu phân ảnh ra các khối 8 x 8. Việc xử lý trên các khối dữ
liệu nhỏ này sẽ làm tăng độ chính xác trong tính toán cũng như giảm thiểu được
một phần của tính toán.


Nhóm 6

Page 6


Tiếp đến các khối này qua giai đoạn biến đổi Cosin( DCT ) phép biến đổi Cosine
rời rạc biến đổi thông tin ảnh từ miền không gian sang miền tần số để có thể biểu
diễn dưới dạng gọn hơn.
• Tiếp sau quá trình biến đổi Cosine rời rạc là quá trình lượng tử hóa: quá trình này
làm giảm số lượng bít cần để lưu trữ các hệ số biến đổi bằng việc giảm độ chính
xác của hệ số. ( quá trình mất mát thông tin)
• Tiếp đến là quá trình mã hóa, quá trình này sẽ tách biệt việc xử lý hai thành phần
đặc trưng: thành phần các hệ số một chiều DC đặc trưng cho phần lớn tín hiệu của
ảnh và thành phần các hệ số xoay chiều đặc trưng cho các thông tin chi tiết của
ảnh.


2.1. Chuyển đổi không gian màu.
- Đầu vào là ảnh được phân tích thành các ảnh đơn sắc và được số hóa theo một
trong những tiêu chuẩn hiện hành.

- Đầu ra là ảnh đã được chuyển không gian màu từ RGB sang YUV hoặc CrYCb
tùy vào thiết bị hiển thị.

Nhóm 6

Page 7


Trước tiên ảnh được chuyển đổi từ RGB tới một không gian màu khác gọi là
YCbCr. Nó có 3 thành phần Y, Cb,Cr, thành phần Y miêu tả ánh sáng của điểm ảnh,
thành phần Cb và Cr miêu tả “ chrominance”(phân loại thành phần xanh lá cây và đỏ). Sự
chuyển đổi không gian màu YcbCr cho phép nén ảnh lớn nhất và cho ra cùng một chất
lượng ảnh. Tuy nhiên nhiều ảnh JPEG chất lượng cao không áp dụng trường hợp này và
thay vì giữ chúng trong không gian màu RGB, mỗi vùng màu được nén và lượng tử hóa
tách biệt với những giới hạn cùng chất lượng.


Downsampling:

Mắt người có thể nhìn thấy nhiều chi tiết trong thành phần Y(ánh sáng) hơn trong
Cb(xanh lá cây) và Cr(xanh dương). Từ đó quá trình nén sẽ làm giảm thành phần Cb và
Cr (được gọi là: downsampling” hay “Chroma subsampling”). Tỉ số mà tại việc lấy mẫu
xuống có thể được thực hiên trên LPE 4:4:4( không lấy mẫu xuống), 4:2:2(giảm bớt chia
2 theo hướng \nằm ngang), và thường sử dụng I là 4:2:0(giảm bớt chia theo hướng nằm
ngang và đứng). ngưng quá trình lấy mẫu Y, Cb, Cr được sử lý tách biệt và trong cùng 1
loại. Lấy mẫu xuống thành phần Chroma lưu giữ 33% hoặc 50% không gian được lấy bởi
ảnh.

2.2.


Phân phối.

Sau khi “ subsampling” mỗi kênh phải bị tách ra đặt trong khối 8x8( của pixel).
Nếu như dữ liệu cho mỗi kênh không mô tả được số nguyên của các khối thì việc giải
mã phải làm đầy những vùng còn lại của những khối không đầy đủ với một số hình
thức của dữ liệu giả: làm đầy nền của pixel với màu quy định (màu đen) tạo ra vùng
tối dọc phần nhìn thấy rõ của khung. Cách tốt nhất là làm đầy pixel bởi sử dụng màu
sắc mà nó qui định hệ số DCT của pixel nhìn thấy rõ tại tần số thấp.
Nhóm 6

Page 8


Miêu tả hàm truyền cosine

8x8 ảnh nhỏ trình bầy trong mặt xám 8bit
Việc phân ảnh ra các khối 8x8 đem lại nhiều thuận lợi trong quy trình. Nó giúp cho công
đoạn biến đổi nhanh hai chiều cho các khối 8x8 hiệu quả hơn, biến đổi Cosine cho các
khối có cùng kích cỡ có thể giảm được một phần các tính toán chung. Ngoài ra biến đổi
Cosine đối với các khối có kích thước nhỏ sẽ làm tăng độ chính xác khi tính toán với số
dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra.
Mặt khác, do các điểm ảnh hàng xóm có độ tương quan cao hơn do đó phép biến đổi
Cosine cho từng khối nhỏ sẽ tập trung năng lượng thấp trong các khối nên chỉ tạo ra mất
mát thông tin cục bộ giúp nâng cao chất lượng ảnh.
2.3.

Nhóm 6

Biến đổi DCT


Page 9


Chuẩn JPEG sử dụng biến đổi Cosin .Phép biến đổi Cosin tập trung năng lượng
của khối ảnh vào 1 hệ số tương ứng với vùng tần số thấp. Dẫn đến có thể cho các hệ số
vùng tần số cao về gần 0 và bằng 0 mà ảnh hưởng không đáng kể đến chất lượng ảnh.
Mỗi thành phần (Y,Cb,Cr) của mỗi khối 8x8 được chuyển đến vùng tần số sử
dụng biến đổi Cosine rời rạc 2-D(DCT). Nguyên tắc chính của phương pháp mã hóa này
là biến đổi tập các giá trị pixel của ảnh trong miền không gian sang một tập các giá trị
khác trong miền tần số sao cho các hệ số trong tập giá trị mới này có tương quan giữa các
điểm ảnh gần nhau nhỏ hơn.
Phép biến đổi Cosin rời rạc một chiều được định nghĩa bởi:

phép biến đổi cosin hai chiều:

Biến đổi là một công đoạn lớn trong các phương pháp nén sử dụng phép biến đổi. Nhiệm
vụ của công đoạn biến đổi là tập trung năng lượng vào một số ít các hệ số biến đổi. công
thức biến đổi cho mỗi khối:

Trong đó:

Mỗi khối 64 điểm ảnh sau biến đổi DCT thuận sẽ nhận được 64 hệ số thực. mỗi hệ
số này có chứa một trong 64 thành phần tần số không gian hai chiều. Hệ số với tần số
bằng không theo cả hai hướng ( tương ứng với k1 và k2 bằng 0) được gọi là hệ số một
chiều DC, hệ số này chính là giá trị trung bình của 64 điểm ảnh trong khối. 63 hệ số còn
lại gọi là các hệ số xoay chiều AC. Hệ số một chiều DC tập trung phần lớn năng lượng
của ảnh.

Nhóm 6


Page 10


8x8 bit ảnh nhỏ

Sau khi trừ mỗi phần tử cho 128

Sau khi lấy DCT và nhóm các số nguyên gần nhất

Giá trị lớn nhất ở đầu gốc trái gọi là hệ số DC, 63 giá trị còn lại gọi là hệ số AC. Biến đổi
Cosine rời rạc làm tăng kích cỡ ảnh.
Dịch chuyển bít

Thuật toán biến đổi nhanh Cosine hai chiều cho mỗi khối trong trường hợp này sẽ bao
~
X(0) đổi nhanh Cosin
gồm
người ta biến
x (016) phép biến đổi nhanh Cosin một chiều. đầu tiên
1
C4
~
một
chiều
cho
các
dãy
điểm
ảnh
trên

mỗi
hàng.
Lần2lượt thực hiện
X(1)cho 8 hàng. Sau đó
x (1)
-1
1
đem
biến đổi nhanh Cosin một chiều
2C theo từng cột của ma trận vừa thu được sau 8 phép
~
X(2)
2
x
(
2
)
biến đổi trên. Cũng lẩn lượt -1
thực hiện
cho
8
cột.
ma
trận
cuối
cùng
sẽ là ma trận hệ số
-1
1
C4

2C
~
X(3)
2
biến
x (3đổi
) của khối tượng ứng.-1 giải thuật-1biến đổi nhanh được mô tả như sau:
8

5
8

~
x (4)
~
x (5)
Nhóm 6
~
x ( 6)
~
x (7 )

2C16

-1
-1

2C

2C169


-1

13
2C16

-1

-1

C4

5
16

-1
-1

2C8

-1 Page 11

-1

C4

-1

2C85


-1

-1

X(4)
X(5)
X(6)
X(7)


Trên thực tế nếu cài đặt thuật toán nhanh tổng quoát thì chúng ta phải sử dụng
nhiều vòng lặp, nhiều phép so sánh và số lượng phép toán mà máy cần thực hiện thực tế
nhiều hơn thuật toán thông thường. Qua thử nghiệm cài đặt cả 2 thuật toán trên và cho
chạy trên cùng một ảnh thì thuật toán thông thường thường nhanh hơn so với thuật toán
FCT. Vì vậy người ta vẫn thường sử dụng thuật toán thông thường. Một nguyên nhân nữa
là vì phép biến đổi chỉ thực hiện trên các khối ảnh 8x8 nên độ phức tạp của thuật toán
không phải là điều quyết định trong tốc độ tính toán.
2.4.

Lượng tử hóa.

Khối lượng tử hóa trong sơ đồ nén đóng vai trò quan trọng và quyết định tỷ lệ nén của
chuẩn nén JPEG, nhiệm vụ chính của công đoạn này là mã hóa ma trận đầu vào sau biến
đổi DCT thành các giá trị mức xám đặc trưng cho các cường độ sáng của ảnh. Đầu vào
của khối lượng tử hóa là các ma trận hệ số biến đổi Cosin của các khối điểm ảnh.
Sau khi thực hiện biến đối DCT, 64 hệ số sẽ được lượng tử hoá dựa trên một bảng
lượng tử gồm 64 phần tử Q(u,v) với 0≤u, v≤7. Bảng này được định nghĩa bởi từng ứng
dụng cụ thể. Các phần tử trong bảng lượng tử có giá trị từ 1 đến 255 được gọi là các bước
nhảy cho các hệ số DCT. Quá trình lượng tử được coi như là việc chia các hệ số DCT cho
bước nhảy lượng tử tương ứng, kết quả này sau đó sẽ được làm tròn xuống số nguyên gần

nhất. Công thức (3) thể hiện việc lượng tử với F(u,v) là các hệ số DCT, FQ(u,v) là các hệ
số sau lượng tử, các hệ số này sẽ được đưa vào bộ mã hoá Entropy.

Ở giai đoạn này người ta sử dụng một bảng lượng tử hóa Q(u,v) tùy thuộc vào
từng mục đích hay từng ứng dụng cụ thể người ta có thể sử dụng các bảng lượng tử khá
nhau.

Nhóm 6

Page 12


Giả sử ở đây ta dùng bảng lượng tử Q(u,v) được định nghĩa như sau:

Sử dụng bảng lượng tử Q(u,v) này ta thực hiện với ma trận DCT ở trên:

Vd: round round -26

Ta được kết quả:

Kết thúc quá trình lượng tử hóa ta được ma trận hệ số, ma trận hệ số này chính là
đầu vào của bước mã hóa.
Nhận xét: với phương pháp lượng tử hóa ta có thể sử dụng lượng tử hóa đều, khi
đó tất cả các hệ số sau quá trình DCT đều được chia chung cho một hệ số. Song với ảnh,
Nhóm 6

Page 13


phần tần số thấp chứa nhiều thông tin hơn phần tần số cao vì vậy để đạt độ nén cao ta có

thể dùng nhiều bit để lưu giữ các giá trị thành phần tần số thấp và dùng ít bit hơn để lưu
trữ hệ số tần số cao. Điều này dẫn tới việc thiết kế một bảng lượng tử với các hệ số khác
nhau.
Một bảng lượng tử hóa tốt cần phải có các tính chất sau:
Giá trị Q(m,n) có thể nhỏ nhất bằng 2. Khi đó các hệ số X(m,n) sau khi được làm
tròn tới số nguyên gần nhất có thể chứa trong 1 byte
• Hệ số X(0,0) là trung bình của ô ảnh vì thế không được để sai lệch quá nhiều
• Khi ảnh là ảnh đồ họa thì có các vùng lớn giá trị điểm ảnh như nhau nên các hệ số
AC=0. Còn những ô chứa biên thì giá trị AC khá lớn. Q(m,n) nên lấy nhỏ để độ
nén vẫn cao và đường biên không bị nhòe.


2.5.

Mã hóa

Đầu vào của quá trình mã hóa người ta chia tách biệt ra hai thành phần để xử lý.
Với thành phần các hệ số 1 chiều DC người ta mã hóa hệ số theo phương pháp DPCM.
Còn với thành phần xoay chiều AC người ta sẽ sắp xếp lại theo phương pháp Zigzag và
mã hóa Huffman
2.5.1. Mã hóa thành phần DC.

Thành phần DC được mã hóa DPCM sau đó mã hóa Huffman
Tất cả các hệ số DC của các khối 8x8 được sắp xếp thành chuỗi để mã hóa dự đoán.Hệ số
DC tiếp theo được dự đoán theo sự sai khác với thành phần trước nó:
DiffDC(blocki) = DC(blocki) – DC(blocki–1)
Ví dụ:giả sử các thành phần DC như bảng dưới

1216


1232

1224

1248

1248

1208

Trước mã hóa: 1216 → 1232 → 1224 → 1248 → 1248 → 1208
Nhóm 6

Page 14


Sau mã hóa :1216 → +16 → -8 → +24 → 0 → -40
Sau quá trình mã hóa dự đoán là quá trình mã hóa Huffman
Các hệ số DC (sau DPCM) được phân nhóm . Ví dụ, -7 đến -4 và 4-7 được xếp vào
nhóm (mã số "00").Dưới đây là bảng mã Huffman

 Ví dụ Example:

-9: thuộc nhóm 4. Do đó Base code = 101
(-9) = 1C(1001) = 0110
Code word = 101 + 0110 = 1010110
2.5.2. Mã hóa thành phần AC.





Thành phần các hệ số xoay chiều chứa các thông tin chi tiết của ảnh. Để nâng cao
hiệu quả nén cho mỗi hệ số trong một khối người ta xếp lại chúng theo thứ tự Zigzag. Có
thể hình dung hình Zigzag như bảng sau:
Nhóm 6

Page 15


Sau đó các hệ số AC được mã hóa Huffman
Ví dụ 5 0 2 0 0 –1 được mã hóa thành: 100101 11100110 110110

Number

Run/Category

Base code

Length

Final code

5

0/3

100

6


100 101

02

1/2

111001

8

111001 10

00-1

2/1

11011

6

11011 0

3. Quy trình giải nén JPEG.

Thực chất quá trình giải mã hiển thị ảnh là quá trình ngược của mã hóa JPEG.

Nhóm 6

Page 16



Sơ đồ giải mã JPEG
Để có thể giải nén được, chúng ta phải ghi lại thông tin như: kích thước ảnh, kích thước
khối, ma trận T, độ lệch tiêu chuẩn, các mức tạo lại, hai bảng mã Huffman, kích thước
khối nén một chiều, kích thước khối nén xoay chiều… và ghi nối tiếp vào hai file nén của
hai thành phần hệ số.
Quá trình được bắt đầu với công đoạn giải mã Entropy, sau quá trình này ta được ma trận
8x8. Lấy ma trận hệ số DCT ( sau khi cộng hệ số DC khác):

Quá trình giải lượng tử ở phía bộ giải mã được thực hiên ngược lại. Các hệ số sau bộ giải
mã entropy sẽ nhân với các bước nhảy trong bảng lượng tử (bảng lượng tử được đặt trong
phần header của ảnh JPEG). Kết quả này sau đó sẽ được đưa vào biến đổi DCT ngược.

Nhóm 6

Page 17


Kết quả sau giải mã lượng tử
Nó gần giống với ma trận hệ số DCT nguyên thủy cho nửa trên phía trái.
Tiếp đến là quá trình biến đổi ngược DCT,áp dụng công thức biến đổi ngược cho khối 8x
8:

Cho ta kết quả:

Cộng 128 tới mỗi “ entry”:

Nhóm 6

Page 18



Đây là những ảnh nhỏ không bị nén và có thể so sánh với ảnh nhỏ nguyên thủy, ảnh giải
nén có sự khác nhau rất ít :

ảnh gốc

ảnh sau giải nén

A.

Khuôn dạng ảnh JPEG
Cấu trúc ảnh JPEG:

Các byte đánh dấu
FF D8
FF FE
FF E0
FF DB
FF C0
FF C4
FF DA
Nhóm 6

Giải thích
Bắt đầu File
Chú giải có thể không có
Byte đánh dấu dữ liệu ứng dụng
Định nghĩa bảng lượng tử
Bắt đầu của Baseline DCT

Định nghĩa bảng Huffman
Bắt đầu dữ liệu ảnh
Page 19


XX XX
FF D9

Dữ liệu mã hóa
Kết thúc ảnh

II. Phương pháp nén ảnh PNG
1.

Tổng quan

PNG (Portable Network Graphics) 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 bản
quyền 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.
PNG hỗ trợ bảng màu 24bit-RGB , 32 bit RGB[A], ảnh xám, và ảnh full-color
non-palette-based RGB[A].
Những tập tin PNG thường có phần mở rộng là PNG và png và đã được gán kiểu
chuẩn MIME là image/png (được công nhận vào ngày 14 tháng 10 năm 1996), và được
công bố như một chuẩn ISO/IEC vào năm 2004.
2.

Quá trình nén ảnh PNG


PNG sử dụng một quá trình nén 2 giai đoạn:
- Pre-compression: lọc (dự đoán)
- Compression : Deflate
2.1. Lọc
Trước khi Deflate, các dữ liệu được Pre-compression, thông qua một phương pháp dự
đoán :Một phương pháp lọc được sử dụng cho toàn bộ hình ảnh, trong đó đối với mỗi
dòng hình ảnh, một loại bộ lọc được chọn để dữ liệu biến đổi dễ dàng nén hơn.
Chỉ có một phương pháp lọc duy nhất dựa trên các đặc điểm kỹ thuật PNG hiện tại
( ký hiệu là 0).Đối với phương pháp này, các bộ lọc dự đoán giá trị của mỗi điểm ảnh dựa
trên các giá trị của các điểm ảnh lân cận trước đó, và sự sai số màu dự đoán của các điểm
ảnh so với giá trị thực tế, như trong DPCM .
Có 5 loại lọc cho phương pháp lọc 0:
Tên bộ lọc (Filter name)
None
Sub
Nhóm 6

Miêu tả ( Description)
Mỗi byte là không thay đổi
Mỗi byte được thay thế bằng sự sai khác giữa nó và byte tương ứng ở bến
Page 20


Up
Average (Trung bình)
Paeth

2.2.

trái của nó

Mỗi byte được thay thế bằng sự sai khác giữa nó và byte trên nó (trong các
dòng trước đó, như trước khi lọc)
Mỗi byte được thay thế bằng sự sai khác giữa nó và trung bình của các
byte tương ứng ở bên trái và trên nó.
Mỗi byte được thay thế bằng sự sai khác giữa nó và các yếu tố dự báo
Paeth của các byte tương ứng với nó ở bên trái và phía trên, phía trên bên
trái nó

Nén: Deflate

Một tập hợp các dữ liệu nén bao gồm một loạt các khối, tương ứng đến khối tiếp
của dữ liệu đầu vào. Các kích thước khối là tùy ý,ngoại trừ khối uncompressible được
giới hạn cho 65.535 bytes.
Mỗi khối được nén sử dụng một sự kết hợp của thuật toán LZ77 và Huffman mã hóa. Các
cây Huffman cho mỗi khối là độc lập với những khối cho trước hoặc tiếp theo; các thuật
toán LZ77 sử dụng một tham chiếu đến một chuỗi trùng lặp xảy ra trong một khối trước
đó,lên đến 32Kb đưa vào trước.
Mỗi khối gồm có hai phần: một cặp Huffman cây mã mô tả các đại diện của các
phần dữ liệu nén, và một phần dữ liệu nén. Các dữ liệu nén bao gồm một loạt các các yếu
tố của hai loại: byte chữ (các chuỗi mà không được phát hiện như nhân đôi trong vòng
trước 32Kb đầu vào), và con trỏ đến chuỗi trùng lặp, nơi một con trỏ được biểu diễn như
là một cặp <length, backward distance >. Các đại diện được sử dụng trong "Deflate" giới
hạn định dạng khoảng cách đến 32Kb và độ dài tới 258 byte, nhưng không giới hạn kích
thước của một khối,trừ khối uncompressible.Mỗi loại có giá trị (literals, distances, and
lengths ) trong nén dữ liệu được đại diện bằng cách sử dụng một mã Huffman, bằng cách
sử dụng một mã số cây cho literals và độ dài và một cây mã riêng biệt cho khoảng cách.
I
Cấu trúc ảnh PNG
Một tập tin PNG bao gồm 8-byte kí hiệu (89 50 4E 47 0D 0A 1A 0A được viết
trong hệ thống có cơ số 16, chứa các chữ "PNG" và 2 dấu xuống dòng, ở giữa

là sắp xếp theo số lượng của các thành phần, mỗi thành phần đều chứa thông
tin về hình ảnh. Cấu trúc dựa trên các thành phần được thiết kế cho phép định
dạng PNG có thể tương thích với các phiên bản cũ khi sử dụng.
PNG là cấu trúc như một chuỗi các thành phần, mỗi thành phần chứa kích
thước, kiểu,dữ liệu, và mã sửa lỗi CRC ngay trong đó.
Chuỗi được gán tên bằng 4 chữ cái phân biệt chữ hoa chữ thường.Sự phân biệt
này giúp bộ giải mã phát hiện bản chất của chuỗi khi nó không nhận dạng
được.
Vỡi chữ cái đầu, viết hoa thể hiện chuỗi này là cần thiết.Chuỗi chứa thông tin
cần thiết để đọc được tệp và nếu bộ giải mã không nhận dạng được chuỗi này,
việc đọc tệp được hủy.
Thành phần cơ bản:
Nhóm 6

Page 21


-IHDR phải là thành phần đầu tiên, nó chứa đựng header
-PLTE chứa đựng bảng màu (danh sách các màu)
-IDAT chứa đựng ảnh. Ảnh này có thể được chia nhỏ chứa trong nhiều
phần IDAT. Điều này làm tăng kích cỡ của tệp lên một ít nhưng nó làm cho
việc phát sinh ảnh PNG mượt hơn (streaming manner).
-IEND đánh dấu điểm kết thúc của ảnh.

Phần 3 : Thử nghiệm ứng dụng so sánh hiệu năng phương pháp nén
ảnh JPEG và PNG
Tóm tắt
Sử dụng phần mềm FastStone Photo Resizer
Đường Link download : />Đầu vào là 1 ảnh bất kì. Dùng phần mềm nén ảnh đó theo Jpeg và png. Sau đó dựa
vào thông số rồi kết luận và giải thích

2. Tiến hành
1.
-

-

Nhóm 6

Giao diện phần mềm.

Page 22


-

Nhóm 6

Trước hết ta imput ảnh cần nén

Page 23


-

Sau đó có các list định dạng cho chúng ra chọn để nén

-

Sau khi chọn xong định dạng nén chúng ta convert và chờ kết quả.


Nhóm 6

Page 24


-

Sau khi nén xong thì sẽ hiện ra bảng thông số.

Nén JPEG

Nén PNG
3. Kết quả

Ảnh gốc 4324kb
Nhóm 6

Page 25


×