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

Tìm hiểu phương pháp nén ảnh theo chuẩn JPEG 2000

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 (2.48 MB, 23 trang )

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

BÁO CÁO
TRUYỀN THÔNG ĐA PHƯƠNG TIỆN
ĐỀ TÀI:
TÌM HIỂU PHƯƠNG PHÁP NÉN ẢNH THEO
CHUẨN JPEG 2000
Sinh viên thực hiện:
Nguyễn Hữu Đông

20121533

Lê Thị Kim Anh

20121198

Bùi Tuấn Ánh

20121247

Nguyễn Gia Tuyến

20122726

Thái Thị Lộc

20122020

Giảng viên hướng dẫn: PGS.TS Nguyễn Thị Hoàn Lan



Hà Nội, tháng 12 năm 2015
1


MỤC LỤC

2


Phân công công việc
Lê Thị Kim Anh
Bùi Tuấn Ánh
Nguyễn Hữu Đông
Nguyễn Gia Tuyến
Thái Thị Lộc

Tìn hiểu phương pháp nén ảnh theo
chuẩn JPEG2000
Tìm hiểu hoạt động sơ đồ nén ảnh
Entropy coding và Bit stream Org
Thử nghiệm sử dụng nén ảnh
So sánh ảnh JPEG2000 với JPEG

3


I.

TÌM HIỂU CHUNG VỀ JPEG 2000


1. JPEG 2000 là gì?

JPEG 2000 là một phương pháp nén ảnh mới dựa trên phép biến đổi sóng con
(wavelet), với các dạng : Haar wavelet, Daubechies wavelet, Spline wavelet
JPEG 2000 được phát triển bởi ISO JPEG để cải thiện hiệu suất cho JPEG trong
khi thêm vào những khả năng, tính năng mới quan trọng, cho phép trên những
ứng dụng hình ảnh mới. Phương pháp nén JPEG 2000 là một trong những chuẩn
có định rõ kiến trúc nén, định dạng file , giao thức client-server và thành phần
khác cho những ứng dụng nâng cao.
2. Đặc điểm JPEG 2000
-

-

-

-

-

-

Nén với tỷ lệ bit thấp: tiêu chuẩn JPEG 2000 đưa ra khả năng nén với tốc
độ bit thấp hơn so với tiêu chuẩn nén hiện tại (ví dụ dưới 0.25bpp cho ảnh
xám chi tiết cao). Ý nghĩa của đặc điểm này là đạt được tốc độ bit thấp
mà không làm méo ảnh, hiệu quả tỷ số nén tăng 30% so với JPEG.
Nén tổn hao và nén không tổn hao: JPEG 2000 có khả năng nén không
tổn hao và nén tổn hao. Ví dụ ứng dụng sử dụng đặc tính nén không tổn
hao: ảnh y tế , các ứng dụng mạng. Nó cũng yêu cầu tiêu chuẩn có đặc

tính tạo ra dòng bit nhúng và cho phép cải thiện chất lượng ảnh.
Tăng độ phân giải và độ chính xác pixel: tăng cường độ phân giải cho
phép ảnh có thể khôi phục với độ chính xác pixel tăng hoặc độ phân giải
không gian cần thiết cho nhiều ứng dụng. Đặc tính này cho phép khôi
phục ảnh với các độ phân giải khác nhau và độ chính xác pixel theo yêu
cầu và đòi hỏi, cho các thiết bị đầu cuối khác nhau như World Wide Web,
ảnh lưu giữ và in ấn.
Mã hóa vùng quan tâm ROI: thông thường trong một ảnh người ta chỉ
quan tâm đến một số vùng của ảnh. Đặc điểm này cho phép người sử
dụng xác định chính xác vùng quan tâm trong ảnh để mã hóa và truyền đi
với chất lượng tốt hơn và ít méo hơn so với các vùng còn lại. Phương
pháp này có 2 phương pháp thực hiện là MAXSHIFT và Scale.
Xử lý và truy cập ngẫu nhiên: đặc điểm này cho phép người sử dụng xác
định vùng quan tâm của ảnh để truy nhập ngẫu nhiên hoặc giải nén ít méo
hơn so với các vùng ảnh còn lại. Xử lý dòng mã ngẫu nhiên này cũng cho
phép ta quay ảnh, dịch ảnh, lọc ảnh, khai triển các đặc điểm và tỷ lệ ảnh.
Giảm khả năng lỗi bit: giảm khả năng lỗi bit trong khi thiết kế dòng mã
hóa. Một trong những ứng dụng là truyền kênh viễn thông không dây. Tỷ
lệ của dòng mã hóa quan trọng hơn các dòng mã khác trong xác định chất
lượng ảnh giải mã. Dòng bit thiết kế đúng quy tắc có thể trợ giúp hệ
thống chỉnh sửa lỗi đến sau trong lỗi giải mã.
4


-

-

-


-

-

Kiến trúc mở: đặc điểm này cho kiến trúc mở để tối ưu hệ thống cho các
ứng dụng và loại ảnh khác nhau. Với đặc tính này, giải mã chỉ thực hiện
bộ công cụ lõi và phân tích để hiểu dòng mã. Nếu cần thiết, không xác
định được công cụ có thể yêu cầu từ bộ giải mã để bên nguồn gửi sang.
Miêu tả nội dung: ảnh lưu giữ, index và tìm kiếm đặc điểm quan trọng
trong xử lý ảnh. Miêu tả nội dung của ảnh là một thành phần của hệ thống
nén ảnh (ví dụ thông tin dữ liệu phụ metadata).
Thông tin kênh không gian (trong suốt): thông tin kênh không gian như
mặt phẳng alpha và mặt phẳng trong suốt là hữu ích cho truyền thông tin
cho xử lý ảnh như hiển thị, in ấn và dựng.
Bảo mật ảnh: bảo vệ ảnh số có nhận được nhờ watermarking, label, tem
và mã mật hóa (Encryption). Nhãn được thực hiện trong SPIFF và phải dễ
truyền đi truyền lại tới file ảnh JPEG 2000.
Nén hai mức và nén nhiều mức: đưa ra tiêu chuẩn mã hóa có khả năng mã
hóa cả ảnh hai mức, nhiều mức. Nếu thực hiện, tiêu chuẩn này cố gắng
đạt được với nguồn hệ thống tương tự nhau. Hệ thống này phải nén và
giải nén với dải thông thay đổi (ví dụ 1 bit tới 16 bit) cho mỗi thành phần
màu. Ví dụ sử dụng đặc tính này là: ảnh y học với một lớp chú thích, ảnh
đồ họa và ảnh máy tính tạo ra với nhị phân và gần vùng nhị phân, mặt
phẳng alpha và trong suốt.

3. Tính năng JPEG 2000

JPEG 2000 có nhiều chức năng đặc biệt hơn mọi chuẩn nén ảnh tĩnh hiện tại.
Gồm có:
-


Cho chất lượng ảnh tốt nhất khi áp dụng nén ảnh tĩnh có tổn thất.
Sử dụng được với truyền dẫn hiển thị lũy tiến về chất lượng, độ phân giải,
các thành phần màu và có tính định vị về không gian.
Sử dụng cùng một cơ chế nén ảnh cho cả hai dạng thức nén.
Truy nhập và giải nén tại mọi thời điểm trong khi nhận dữ liệu.
Giải nén từng vùng trong ảnh mà không cần giải nén toàn bộ ảnh.
Có khả năng mã hóa ảnh với tỉ lệ nén theo từng vùng khác nhau.
Nén một lần nhưng lại có thể giải nén với nhiều cấp chất lượng tùy theo
yêu cầu người sử dụng.
Hiện tại ISO và ủy ban JPEG đã đưa ra khuyến nghị thay thế JPEG bằng
JPEG 2000.

4. Định dạng ảnh (File format)

JP2 là định dạng file JPEG 2000 dùng để thu gọn các dòng mã hóa của JPEG
2000
-

Phần mở rộng: jp2.
Cho phép nhúng thông tin XML (ví dụ : metadata).
5


-

II.

Alpha channel (ví dụ: tính trong suốt).
Accurate color interpretation: thể hiện màu chính xác.

Hỗ trợ “True color” và “palette color”.
Intellectual property information.
Capture and default display resolution.
File “magic number”.
File transfer errors (ASCII ftp, 7 bit e-mail, vv...).

TÌM HIỂU HOẠT ĐỘNG SƠ ĐỒ NÉN ẢNH JPEG

Quá trình nén ảnh gồm có 5 bước cơ bản:
- Tiền xử lý
- Biến đổi Wavelet rời rạc 2 chiều
- Lượng tử hóa
- Mã hóa entropy
- Tổ chức dòng bit

1. Tiền xử lý, biến đổi liên thành phần, chia ảnh

6


a)

Image Tiling

Phương pháp này chia ảnh thành các ảnh hình vuông nhỏ hơn (title) và
không đè lên nhau, các tile này có kích thước bằng nhau trừ các tile ở phía
ngoài ảnh.
Các tile này được mã hóa một các độc lập trong các bước còn lại của quá
trình nén ảnh, nó không phụ thuộc vào việc nén ảnh ban đầu. Thành phần tile là
phần cơ bản của cấu trúc ảnh. Tiling giảm bộ nhớ yêu cầu và chúng ta có thể

xây dựng lại chúng một cách độc lập với nhau, do đó chúng ta có thể giải nén
các phần của ảnh thay vì giải nén cả bức ảnh.
Các tile tác động một cả chủ quan và khách quan đến chất lượng ảnh sau nén
(hình dưới):

7


b)

DC Level Shifing

Trước khi tính DWT các thành phần tile của ảnh cần ở dạng đối xứng qua 0,
vì vậy tất cả các hệ số cần được dc level shifed bằng cách trừ cho 2 P-1, trong dố
P là độ chính xác hay số bit biểu diễn điểm ảnh.
c)

Biến đổi liên thành phần (Component Transformations)

JPEG 2000 hỗ trợ nhiều hệ màu ảnh, các hệ màu này có độ sâu bit khác nhau
và độ nhạy của mắt người với chúng cũng khác nhau. Ví dụ trong hệ màu
YcrCb thì Y là thành phần mắt chúng ta nhạy cảm nhất có khả năng phân biệt
nó tốt nhât vì vậy ta sẽ nén thành phần này với hệ số thấp hơn 2 thành phần kia.
Chuẩn JPEG hỗ trợ 2 biến đổi liên thành phần là biến đổi liên thành phần
không thuận nghịch (ICT) và biến đổi liên thành phần thuận nghịch (RCT). ICT
được áp dụng với biến đổi DWT không thuận nghịch 9/7 trong nén ảnh có tổn
hao, nó biến đổi hệ màu từ RBG sang YcrCb nó được tính theo công thức:

RCT được áp dụng trong biến đổi DWT thuận nghịch 5/3, RCT biến đổi
RBG sang YUV trong cả 2 dạng thức nén ảnh có tổn hao và không có tổn hao:


8


2. Biến đổi DWT 2 chiều – Biến đổi riêng thành phần

Phương pháp này chia ảnh thành các băng con có các thành phần tần số khác
nhau, ý tưởng thực hiện dựa trên việc ảnh hưởng băng con đến hình ảnh. Các
thành phần tần số thấp có chứa thành phần chính của ảnh và các thành phần tần
số cao chứa chi tiết của ảnh. Do đó dựa vào việc nhận biết của mắt người thì
trong quá trình lượng tử hóa với mỗi băng con có hệ số nén sẽ khác nhau và sẽ
có được hệ số nén ảnh cao hơn.
DWT 2D tác động 2 lần: một duyệt theo chiều ngang và một duyệt theo
chiều dọc (không xét thứ tự do bản chât đối xứng) và do đó ta thu được bốn
giải:

a)

LL: horizontally and vertically lowpass
LH: horizontally lowpass and vertically highpass
HL: horizontally highpass and vertically lowpass
LL: horizontally and vertically highpass
Biến đổi Wavelet liên tục (CWT)
- Biến đổi Wavelet của một hàm f(t)

9


Biến đổi Wavelet dù chỉ làm việc với các tín hiệu một chiều (liên tục
hoặc rời rạc) nhưng sau khi biến đổi ta thu được một hàm hai biến số hoặc một

tập giá trị W(a,b) minh họa các thành phần tần số khác nhau xảy ra tại t. Các giá
trị W(ai,b) tạo thành một cột (I = 1, 2, …, n) cho biết một thành phần tần số có
trong những thời điểm t của tín hiệu f(t) và các giá trị W(a,b i) tạo thành hành
cho biết tại thời điểm t của tín hiện f(t) có những thành phần tần số nào.
b)

Biến đổi Wavelet rời rạc

Việc tính toán biến đổi DWT thực chất là quá trình rời rạc hóa biến đổi
Wavelet liên tục (CWT) việc rời rạc hóa được thực hiện với sự lựa chọn hệ số a
và b như sau:
a = 2m; b = 2m.n

m,n Z

Việc tính toán hệ số của biến đổi DWT được thực hiện bằng băng lọc số nhiều
nhịp đa kênh.Ta có khung biến đổi (bộ lọc nhiều nhịp 2 kênh):

Tuy nhiên nếu thực hiện như trên thì theo lý thuyết xử lý tín hiệu số với
băng lọc nhiều nhịp với tấn số lấy mẫu ra bằng ½ tần số lấy mẫu đầu vào thì sẽ
chỉ có ½ dữ liệu được mã hóa. Vì vậy ta sử dụng 2 phương pháp biến đỏi DWT
thuận nghịch 5/3 và biến đổi DWT không thuận nghịch 9/7.
-

Biến đổi DWT 5/3:

10


Sơ đồ nén:


-

Biến đổi không thuận nghịch 9/7
Giả sử ta có vô hạn các điểm đầu vào x1, x2,…
Các giá trị L, H đầu ra cần tìm sẽ được tính theo sơ đồ

Nhưng do dữ liệu của chúng ta có giới hạn nên ta sẽ lấy đối xứng đầu vào
qua x0 và tính theo sơ đồ dưới:

11


-

Biến đổi Wavelet 2 chiều
Ta thực hiện biến biến đổi Wavelet 1 chiều 2 lần:

3. Lượng tử hóa

Các hệ số của phép biến đổi sẽ được tiến hành lượng tử hóa. Quá trình
lượng tử hóa cho phép đạt tỉ lệ nén cao hơn bằng cách thể hiện các giá trị biến
đổi với độ chính xác tương ứng cần thiết của ảnh nén. Các hệ số biến đổi sẽ
được lượng tử hóa theo phương pháp lượng tử hóa vô huớng. Các hàm lượng tử
hóa khác nhau sẽ được áp dụng cho các băng con khác nhau theo biểu thức:

12


Với là bước lượng tử hóa, U (x,y) là giá trị băng con đầu vào, V(x,y) là

giá trị sau lượng tử hóa. Trong dạng biến đổi DWT 5/3 (nguyên), đặt bước
lượng tử bằng 1. Với dạng biến DWT 9/7 (thực) thì bước lượng tử sẽ được chọn
theo băng con tương ứng. Công thức giải lượng tử hóa:

Trong đó r là tham số xác định dấu làm tròn. IPEG 2000 không quy định trước r
tuy nhiên thường chọn r = ½.
4.

Entropy coding (Tier-1 coding)

Đến đây, mỗi dải sẽ được chia ra thành các hình chữ nhật có cùng độ dài
không chồng lên nhau. Ba hình chữ nhật tương ứng với các dải HL, LH, HH
trong mỗi mức phân giải sẽ được gộp lại trong một gói (packet).

Hình 2.4.1 Cấu trúc giải
Mỗi packet sẽ cung cấp thông tin về không gian vì nó có chứa các thông
tin cần cho việc giải mã hóa ảnh tại vùng không gian đó và trong mức phân giải
đó.
Các gói còn được chia nhỏ hơn thành các khối mã (code-block) hình chữ
nhật không chồng lên nhau, đó là các thực thể cơ bản trong việc mã hóa
13


entropy.Một codeblock phải có chiều dài và rộng là lũy thừa của 2. Trong
JPEG2000, kích cỡ mặc định của mỗi code block là 64x64.
Sau đó, các code block sẽ được mã hóa một cách độc lập bằng cách dùng
bộ mã hóa theo bit-plane (bit-plane coder). Mỗi code block sẽ được chứa hoàn
toàn trong một dải đơn và các code block sẽ được mã hóa hoàn toàn độc lập với
các code block khác: vì thế mà có khả năng phục hồi lỗi. Mã hóa bit-plane sẽ
đưa ra chuỗi các kí hiệu cho mỗi coding pass, một số hoặc tất cả các kí hiệu này

có thể được mã hóa entropy thông qua bộ mã hóa số học thích nghi (adaptive
binary arithmetic coder).
Có ba kiểu coding pass: significance propagation, magnitude refinement,
cleanup pass.Mỗi một pass trong số này sẽ quét các mẫu (samples) của một
codeblock dưới dạng các stripes theo chiều dọc (mỗi stripes có chiều cao định
danh là 4 mẫu). Thứ tự quét là từ trên xuống dưới trong một stripe còn các cột
được quét từ trái sang phải. Trong một cột, các mẫu được quét từ trên xuống
dưới.

Hình 2.4.2 Pass coding quét các mẫu trong code-block
Pass cleanup bắt buộc đòi hỏi mã hóa toán học (arithmetic coding) nếu
không có các pass khác nó cũng có thể đòi hỏi việc mã hóa thô (raw coding).
Đối với khả năng phục hồi lỗi, quy trình mã hóa toán học, mã hóa thô sẽ đảm
bảo cho các mẫu bit nào đó bị cấm trong đầu ra.

14


Hình 2.4.3 Ví dụ về Code block, bit-plane, pass coding
Đối với việc chọn ngữ cảnh, thông tin trạng thái cho các láng giềng -4 và láng
giềng -8 được đặt trong tài khoản.

Hình 2.4.4 a) láng giềng -4, b) láng giềng-8

15


Ngữ cảnh phụ thuộc vào các bit đã được mã hóa sẽ phân loại các bit và
các tín hiệu (signs) thành các lớp khác nhau cần cho sự phân bổ xác suất đồng
dạng độc lập.

Cho số lớp bằng N và có trong lớp i, với xác suất của các bit, để lấy được
giá trị “1”, là thì entropy (H) của mảng bit theo thuyết thông tin của Shannon
được tính bằng:
Mã hóa entropy sẽ biến đổi các cặp bit và ngữ cảnh này thành dòng bit đã
được nén với độ dài gần đạt đến lí tưởng, ví dụ giới hạn Shannon, là hoàn toàn
có thể được. Có rất nhiều bộ mã hóa (coder) như thế và JPEG2000 đã mượn bộ
mã hóa coder theo chuẩn JBIG2, ví dụ MQ[10].
5. Tổ chức dòng bit (Bit stream Organization)

Trong bước này, các thông tin của coding pass được đóng gói lại trong các
đơn vị dữ liệu gọi là các packets bởi quá trình packetization, quá trình này buộc
cách tổ chức riêng biệt thành dữ liệu coding pass trong dòng mã đầu ra (output
code stream) vì thế rất thuận lợi để đạt các đặc tính mã hóa mong muốn gồm có:
thay đổi tỉ lệ (rate scalability) và phục hồi lũy tiến với độ chính xác và độ nét.
Header của packet sẽ cho biết nó chứa coding pass nào, trong khi đó phần
thân chứa dữ liệu coding pass thực của chính nó.
Đối với việc thay đổi tỉ lệ (rate scalability) cho mỗi tile được tổ chức thành
một hoặc nhiều tầng, được đánh số từ 0 đến l-1, với l là số tầng. Các tầng thấp
hơn chứa các coding pass có dữ liệu quan trọng nhất, trong khi đó các tầng trên
có các coding pass chứa các chi tiết nên nó cho phép bộ giải mã xây dựng lại
ảnh với chất lượng được cải thiện với mỗi số gia.
Việc nén mất mát thông tin cần loại bỏ một số coding pass bằng cách loại bỏ
nó ở bất kì lớp (layer) nào trong khi nén không mất mát thông tin không được
loại bỏ bất kì coding pass nào.
Các code block được nhóm lại và được gọi là các precincts. Đối với mỗi kết
hợp thành phần-mức phân giải-lớp-khu (component-resolution-layer-precinct
combination), một gói sẽ được tạo ra ngay cả khi nó không truyền đi thông tin
gì cả : gói rỗng. Một phân khu precinct cho mỗi dải được lấy từ phân khu của
dải LL cha của nó. Mỗi mức phân giải có kích thước precinct định danh riêng
và nó phải là lũy thừa của 2 nhưng không vượt quá . Kích thước của precinct

nhỏ hơn sẽ giảm lượng dữ liệu được chứa trong mỗi gói vì thực tế là dữ liệu của
coding pass của các precinct khác nhau được mã hóa trong các gói riêng biệt.
Do đó với dữ liệu ít hơn trong mỗi gói sẽ dẫn đến mất mát ít thông tin hơn, khả
16


năng phục hồi lỗi tốt hơn với cùng chi phí cho hiệu suất mã hóa vì mật độ gói
được tăng lên.

Hình 2.4.5 Mối liên quan giữa không gian và sự tổ chức dòng bits

III.

DEMO JPEG 2000

Thực hiện trên matlap gọi thư viện của Java (jj2000-5.1.jar)
Chương trình sẽ nhận tham số đầu vào
-

image: đường dẫn của ảnh
bpp: tỉ số nén

Đầu ra của chương trình sẽ là 1 hình ảnh so sánh giữa ảnh gốc và ảnh nén với
sai số MSE và PSRN
Ví dụ: Nhập vào dòng lệnh sau trong matlap, với đường dẫn của ảnh là
“Lena512.png” và tỉ số nén bpp = 0.145
17


>> nenanhjpeg2000('Lena512.png', 0.145)

Thì chương trình sẽ có kết quả như sau.

Tham khảo:
-

IV.

Thông tin mã nguồn của Java: />
SO SÁNH CHUẨN JPEG 2000 VÀ CHUẨN JPEG

Dựa vào demo nén ảnh với JPEG 2000, có thể so sánh JPEG 2000 với JPEG
ở một số tính năng sau:
Một tính năng quan trọng và là ưu điểm rõ nét nhất của JPEG 2000 so với
JPEG là JPEG 2000 đưa ra cả hai kĩ thuật nén ảnh có tổn thất và không tổn thất
theo cùng một cơ chế mã hóa, nghĩa là JPEG 2000 thực hiện tất cả các dạng
thức của JPEG chỉ bằng một cơ chế mã hóa duy nhất. JPEG 2000 sử dụng biến
đổi wavelet thuận nghịch 5/3 trong bước biến đổi DWT. Nếu xét về sự tồn tại
của 2 kĩ thuật này thì JPEG cũng có khả năng nén ảnh có tổn thất và không tổn
thất thông tin. Tuy nhiên với JPEG thì cơ chế mã hóa với hai dạng này là khác
nhau và rất khó để sử dụng cả hai dạng này cùng lúc cho cùng một ứng dụng, cụ
18


thể là ở kĩ thuật nén có tổn thất sử dụng biến đổi DCT còn ở kĩ thuật nén không
tổn thất sử dụng phép tiên đoán. Do đó, có thể thấy rằng JPEG2 000 có tính
mềm dẻo hơn bất kì chuẩn nén ảnh tĩnh nào trước đây.
Hơn thế, những thống kê thực tế cho thấy với cùng một tỉ lệ nén và một
loại ảnh thì ảnh được nén bởi JPEG 2000 luôn có chất lượng tốt hơn so với
JPEG. Chúng ta xem xét hai ảnh dưới đây để thấy rõ điều này, ảnh bên trái được
nén theo JPEG còn ảnh bên phải được nén theo JPEG 2000.


Hình 4.1: So sánh ảnh JPEG và ảnh JPEG2000
Có được điều này bởi vì kỹ thuật nén JPEG sử dụng phép biến đổi DCT sẽ làm
mất mát thông tin lúc giải nén, cụ thể là quá trình lượng tử hóa sẽ giảm số lượng
bit 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ố
xuống. Do đó càng nén với hệ số cao thì thông tin càng mất nhiều khi bung.
Ảnh đầu vào được phân chia thành nhiều khối độc lập, sau đó được thực hiện
biến đổi DCT riêng cho nên vẫn có tương quan ở dọc đường biên của các khối.
Điều này làm ảnh khôi phục bị ảnh hưởng bởi nhiễu khối. Trong khi đó, kĩ thuật
nén trong JPEG 2000 phân chia ảnh thành nhiều dải tần số con và được mã hóa
riêng biệt nhờ DWT. Vì vậy, trong mỗi gói sẽ dẫn đến mất mát thông tin ít hơn,
khả năng phục hồi lỗi tốt hơn. Nên ảnh khôi phục không bị ảnh hưởng bởi nhiễu
khối như với biến đổi DCT. Vì vậy, chất lượng ảnh của JPEG 2000 tốt hơn của
JPEG.
19


Một tính năng ưu việt của JPEG 2000 so với JPEG là trong dạng thức nén
có tổn thất thông tin, JPEG2000 có thể đưa ra tỉ lệ nén cao hơn nhiều so với
JPEG. Với JPEG 2000 thì tỉ lệ nén có thể lên tới 200:1. Với hai ảnh ở hình 4.1,
ta có bảng so sánh tham số PSNR sau (PSNR là một trong các thông số giúp
đánh giá chất lượng của ảnh ở đầu ra so với ảnh gốc có đơn vị đo logarit. Thông
thường nếu PSNR≥40 dB thì hệ thống mắt người gần như không phân biệt được
giữa ảnh gốc và ảnh khôi phục):

Với mỗi ảnh được nén ở các tỷ lệ khác nhau ( bit per pixel hay bpp lần
lượt là 0.125, 0.5, 2.0) cho thấy JPEG 2000 nén ảnh tốt hơn JPEG. Với tốc độ
dòng bit thấp, hiệu quả tỷ số nén ảnh của JPEG2000 tăng 30% so với ảnh JPEG
nén dựa trên DCT. Có được điều này vì kĩ thuật nén JPEG 2000 cho phép chia
dải tần số của ảnh thành nhiều dải tần con và mã hóa ở mỗi dải tần một số lượng

bit khác nhau phù hợp tăng hiệu quả tỷ số nén và đảm bảo chất lượng ảnh nén.
Qua phép biến đổi DWT, năng lượng của tín hiệu được tập trung vào các hệ số.
Phần lớn năng lượng chỉ tập trung vào một vài hệ số nhất định. Các hệ số mang
thông tin chi tiết của biến đổi wavelet thường rất nhỏ và có thể bỏ qua mà
không ảnh hưởng tới việc mã hóa dữ liệu. Thông qua việc loại bỏ một vài hệ số
không trọng yếu, khả năng nén dữ liệu được tăng cao hay tỉ lệ nén cao.
Một ưu điểm nữa của JPEG 2000 so với JPEG là chuẩn nén ảnh này có
thể hiển thị được các ảnh với độ phân giải và kích thước khác nhau từ cùng một
ảnh nén. Với JPEG thì điều này là không thể thực hiện. Tính năng này chính là
một lợi thế đặc biệt quan trọng của JPEG 2000, trong khi JPEG cũng như các
chuẩn nén ảnh tĩnh trước đây phải nén nhiều lần để thu được chất lượng với
từng lần nén khác nhau, thì với JPEG 2000 ta chỉ cần nén một lần còn chất
lượng và kích thước ảnh sẽ được quyết định tùy theo người sử dụng trong quá
trình giải nén ảnh theo JPEG 2000. Sở dĩ có được điều này là bởi trong phương
pháp nén ảnh của JPEG 2000 dựa trên biến đổi wavelet, ảnh gốc được xử lí và
chia thành các dải băng con mã hóa độc lập. Băng con có số thứ tự thấp chứa
những thành phần tần số cao mang thông tin chi tiết của ảnh, những băng con
cao hơn thì chứa những thành phần tần số thấp mang thông tin chính về ảnh.
Điều đó có nghĩa là hệ số chi tiết giảm dần từ băng con mức thấp xuống băng
20


con mức cao, tức là hệ số biến đổi từ thấp đến cao. Sau đó, áp dụng phương
pháp SPIHT (Set Partitioning In Hierarchical Trees - mã hóa phân cấp theo phân
vùng), các hệ số lớn và các bit có trọng số lớn nhất, chính là các giá trị mang
thông tin quan trọng của ảnh sẽ được truyền đi trước. Kết hợp với kĩ thuật
embedded coding, ảnh sau nén với kích cỡ lớn (tỉ lệ nén thấp) sẽ chứa chính dữ
liệu sau nén của ảnh đó có kích cỡ nhỏ (tỉ lệ nén cao). Vì vậy, bộ mã hóa chỉ
cần nén 1 lần nhưng có thể giải nén ra nhiều mức chất lượng khác nhau và quá
trình giải mã có thể dừng lại ở bất kì một bước nào tương ứng với giá trị ảnh

cần mã hóa yêu cầu.

Kích thước và phân giải đầy đủ

Half size

21


Phân giải 1/10
Hình 4.2: Ví dụ ảnh được phân giải khác nhau với các kích thước khác
nhau theo JPEG 2000
Một tính năng nổi bật nữa của JPEG 2000 là tính năng mã hóa ảnh theo
vùng ROI (Region of Interest). Thông thường trong một ảnh người ta chỉ quan
tâm đến một số vùng của ảnh. Đặc điểm này cho phép người sử dụng xác định
chính xác vùng quan tâm trong ảnh để mã hóa và truyền đi với chất lượng tốt
hơn và ít méo hơn so với các vùng còn lại. Nhờ sử dụng wavelet nên các dải tần
con chứa thông tin được mã hóa riếng biệt và không ảnh hưởng đến nhau,
JPEG2000 cho phép có thể chọn một khu vực nhất định của một hình ảnh để
xem ở chất lượng cao, trong khi vùng còn lại của hình ảnh ở chất lượng thấp
hơn. Nghĩa là người sử dụng có thể xem một phần cần thiết của hình ảnh thay vì
toàn bộ hình ảnh. Điều này làm giảm đáng kể số lượng bộ nhớ hình ảnh đòi hỏi,
và số lượng thời gian cần thiết để truy cập vào hình ảnh. Tính năng này có 2
phương pháp thực hiện là MAXSHIFT và Scale. Chất lượng của toàn bộ ảnh
cũng được thấy rõ trên hình 4.3, chất lượng của vùng ảnh được lựa chọn tăng
cao hơn khi vùng đó được áp dụng phương pháp nén ảnh ROI.

Hình 4.3: Minh họa tính năng ROI (bpp: 0.25; PSNR:20.006dB)
Ở phương pháp JPEG không làm được điểu này vì DCT được tính toán 1 cách
độc lập trên các khối pixel nên 1 số lỗi mã hóa sẽ gây ra sự không liên tục giữa

các khối thu được. Trong khi đó, JPEG 2000 sử dụng DWT sẽ thao tác trên toàn
bộ ảnh. Nó có thể tách ảnh thành các dải tần số khác nhau mà vẫn giữ được các
thông tin về không gian.

22


JPEG 2000 còn một tính năng đặc biệt ưu việt hơn JPEG, là khả năng
vượt trội trong khôi phục lỗi. Đó chính là khi một ảnh được truyền trên mạng
viễn thông thì thông tin có thể bị nhiễu, với các chuẩn nén ảnh như JPEG thì
nhiễu này sẽ được thu vào và hiển thị, tuy nhiên với JPEG 2000, do đặc
trưng của phép mã hóa có thể chống lỗi, JPEG 2000 có thể giảm thiểu các lỗi
này với mức hầu như không có. Cụ thể trong bước mã hóa tier-1 coding, khi
mỗi dải chia thành các packet, mỗi packet lại chia thành nhiều codeblock,chũng
sẽ được mã hóa 1 cách độc lập bằng cách dùng mã hóa theo bit-plane. Do đó,
codeblock không phụ thuộc vào dải bên trong, mỗi codeblock được chứa hoàn
toàn trong 1 dải đơn, và được mã hóa hoàn toàn độc lập với các codeblock khác,
nên nhờ đó JPEG 2000 có khả năng phục hồi lỗi. Và khi phân tích biến đổi
wavelet ở hệ số bậc cao chứa thành phần chi tiết ảnh và nhiễu, ta có thể dễ dàng
loại bỏ nhiễu bằng cách áp dụng ngưỡng loại bỏ tương ứng với bậc cao hơn hệ
số wavelet. Cụ thể thuật toán sẽ mã hóa các hệ số theo tứ tự giảm dần. Nó sẽ
dùng một giá trị gọi là ngưỡng và sử dụng ngưỡng này để tiến hành mã hóa các
hệ số biến đổi. Chỉ những hệ số có giá trị tuyệt đối lớn hơn hoặc bằng ngưỡng
thì mới được mã hóa. Tiếp theo giảm ngưỡng và tiếp tục làm như vậy cho tới
khi ngưỡng đạt tới giá trị nhỏ hơn giá trị của hệ số nhỏ nhất.

TÀI LIỆU THAM KHẢO

V.
-


-

The JPEG 2000 Still Image Compression Standard - Athanassios
Skodras, Charilaos Christopoulos, and Touradj Ebrahimi.
Image Compression - the Mechanics of the JPEG 2000 - Jin Li
An Introduction to Image Compression - Wei-Yi Wei
An overview of the JPEG2000 still image compression standard-Majid
Rabbani*, Rajan Joshi-Eastman Kodak Company, Rochester, NY 14650,
USA
Thông tin mã nguồn của Java: />
23



×