Tải bản đầy đủ (.pptx) (24 trang)

Kỹ thuật nén ảnh 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 (1.35 MB, 24 trang )

Đề 10 : Kỹ thuật nén ảnh
JPEG-2000
Giảng viên hướng dẫn: PGT.TS Nguyễn Thị Hoàng Lan
Sinh viên thực hiện : Ngô Quang Anh
Nguyễn Hiển Tường
Nguyễn Huy Hoàng


Phân chia công việc
• Nguyễn Hiển Tường
- Tìm hiểu khái quát chung về chuẩn JPEG-2000
- Tìm hiểu sơ đồ nén ảnh JPEG-2000
• Nguyễn Huy Hoàng
- Tìm hiểu một thuật toán mã hóa trong nén ảnh JPEG2000
• Ngô Quang Anh
- Xây dựng, cài đặt thử nghiệm thuật toán trên trong
nén ảnh JPEG-2000 và đo lường, đánh giá hiệu năng nén
( tỷ số nén, độ tổn hao ) của giải pháp thử nghiệm, đánh
giá hiệu năng của phương pháp này.


Khái quát và sơ đồ nén ảnh
theo chuẩn JPEG2000

Nguyễn Hiển Tường


Khái quát về chuẩn JPEG-2000
• JPEG-2000 (ISO/IEC15444) : ra đời và thành chuẩn
năm 2000.
• Là phương pháp nén ảnh dựa trên phép biến đổi sóng


con ( Wavalet).
• Chất lượng ảnh tốt hơn ảnh JPEG
• Bao gồm cả nén tổn hao và nén không tổn hao
• JPEG-2000 có thể kết hợp với xử lý vùng ảnh quan tâm
và dễ dàng thực hiện phương pháp nén lũy tiến
( Progressive decoding ).


Sơ đồ nén ảnh theo chuẩn JPEG-2000

DWT
Tiền xử lí
• Chia khối
• Đổi hệ
màu

• Xử lý
wavelet
rời rạc

Lượng tử
hóa
• Uniform
quantizin
g with
deadzone

Mã hóa
entropy
• EZW

• SPIHT

Tổ chức
dòng bit
• Sắp xếp
đơn giản


Xử lý trước biến đổi


Xử lý trước biến đổi
• Chia ảnh gốc thành các ô vuông nhỏ không chồng lên
nhau gọi là các Title
• Cách xử lý : Chuyển hệ màu, Biến đổi Wavalet, lượng tử
hóa, mã hóa Entropy được thực hiện độc lập trên các
Tile.
• Chuyển hệ màu RGB -> YCbCr


Biến đổi liên thành phần


Biến đổi DWT
(Discrete Wavelet Transform)
• Các thành phần sẽ được phan chia thành các băng tần
số khác nhau và mỗi băng sẽ được mã hóa riêng rẽ
• DWT sẽ phan tách ảnh ra thành nhiều dải tần số gọi là
các subband.
• Mỗi mức DWT sẽ được tác động 2 lần : 1 lần duyệt theo

chiều dọc và một lần duyệt theo chiều ngang. Ta thu
được 4 dải tần :
1. horizontally and vertically lowpass (LL)
2. horizontally lowpass and vertically highpass(LH)
3. horizontally highpass and vertically lowpass (HL)
4. horizontally highpass and vertically highpass (HH)


Biến đổi DWT
(Discrete Wavelet Transform)


Lượng tử hóa
• Sau khi thực hiện biến đổi Wavelet, tất cả các hệ số
Wavelet được lượng tử hóa
• Quá trình này làm mất mát thông tin
• Hệ lượng tử hóa được mã hóa từng bit bắt đầu từ bit
MSB đến bit LSB (Most đến Least Significant Bit).



Mã hóa
• Thuật toán mã hóa EZW ( embedded Zerotree Wavelet),
SPIHT ( Set Partitioning in hierarchial tree)
• Một mặt phẳng bit được mã hóa riêng bằng mã số học
thích nghi
• Mã hóa mỗi mặt phẳng bit được chia thành các khối
• Mỗi mặt phẳng bit được chia thành các khối



Thuật toán nén ảnh trong
JPEG2000
Thuật toán EZW
(Embeded Zerotree Wavelet)


• Hình vẽ: cây tứ phân:
Sau khi thực hiện phép biến đổi Wavelet thì ta thu nhận được các hệ số
ở các băng tần con khác nhau và có thể được sắp xếp lại một cách khái
quát như hình trên, trong đó dữ liệu (hình ảnh) gốc được chia đều làm
bốn phần tương ứng với các băng tần LL, HL, LH, HH. Đặc điểm của
các hệ số này là giá trị rất lớn tập trung ở băng tần thấp (LL), ngoài ra
các băng tần còn lại chứa các hệ số có giá trị thấp hơn, đặc biệt ở HH
các giá trị rất nhỏ và gần 0.




Cây không (zerotree)

Phương pháp này được xây dựng dựa trên nhận xét: nếu coi cấu trúc các băng tần
con sau biến đổi Wavelet có dạng hình cây mô tả như hình vẽ thì nếu nút cha có
giá trị không đáng kể thì các nút con cũng có giá trị không đáng kể; ngoài ra nếu
nút cha là 0 thì các nút con cũng hầu hết là 0, nghĩa là không tạo ra sự khác biệt
lớn nếu chỉ được lưu là 0 hay lưu chi tiết hơn.


-

Nguyên lý hoạt động của thuật toán:

Thuật toán sẽ mã hóa các hệ số theo thứ tự giảm dần.

-

Sử dụng một giá trị, gọi là ngưỡng để tiến hành mã hóa các hệ số biến đổi, theo
thứ tự từ vùng tần số thấp đến vùng tần số cao. Và 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 (giá trị giảm xuống 1 nửa) 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. Bộ giải mã phải
biết các mức ngưỡng này thì mới có thể giải mã ảnh thành công.


• Ngưỡng đầu tiên được tính theo công thức:

• Với một ngưỡng nào đó, đưa các hệ số qua hai vòng kiểm soát (pass), cụ thể:
- Significant pass: Các hệ số được xác định tính đáng kể sau đó sẽ được mã hóa
thành một trong 4 kí tự ‘p’, ‘n’, ‘t’, ‘z’, trong đó:
‘p’ – positive significant: giá trị tuyệt đối của hệ số dương lớn hơn ngưỡng đang xét.
‘n’ – negative significant: giá trị tuyệt đối của hệ số âm lớn hơn ngưỡng đang xét.
‘z’ – insignificant with significant descendants: giá trị tuyệt đối của hệ số nhỏ hơn
ngưỡng đang xét, nhưng trong các con của nó có hệ số có trị tuyệt đối lớn hơn, tức là
có ít nhất một con là đáng kể.
‘t’ – zerotree root: gốc cây không, tức là trị tuyệt đối giá trị hệ số ở đây không đáng kể
và các con của nó cũng thế.
- Refinement pass: Các hệ số đã được mã hóa ‘p’ hay ‘n’ sẽ được xét giá trị cụ thể
và cho ra ‘0’ hoặc ‘1’





Sử dụng một thuật toán quét (scan) các giá trị hệ số bảo đảm yêu
cầu:

-

Hệ số ở mức thực hiện Wavelet cao hơn được quét trước

-

Mức Wavelet thấp hơn được quét sau

-

Hệ số ở băng tần thấp được quét trước rồi tới hệ số băng tần cao.
Thông thường có thể áp dụng Morton Scan là hình chữ Z:


Ví dụ
Cmax= 57
To = 2^5 = 32

A3 = 57 > 32 => A3= P
H3 = -35 |-35| > 32 => H3= N
V3 = -29 |-29| < 32 nhưng có con ở trong V1 có giá trị là 47 > 32 => V3= Z
D3 = 25 < 32 nhưng không có giá trị nào trong các con D2 và D1 > 32 => D3 = T
⇒ [A3, H3, V3, D3] = PNZT
Tương tự ta có H2 = PTTT, V2 = TZTT

D2 không cần mã hóa do D3 đã là cây zero
Tiếp tục mã hóa ở bước này ta sẽ được dãy: PNZT PTTT TZTT TTTT TPTT


Tiếp theo ta mã hóa các giá trị P và N, ta sẽ lấy dọc theo bit
thứ 2 của các giá trị
Sau khi hoàn thành ta thu được




Bước thứ 2 ta giảm ngưỡng xuống 1 nửa là còn 16



Ta sẽ thu được P2 = ZTNPTTTTTTTT



Các giá trị vượt ngưỡng sẽ là : 57 35 52 47 29 25, các giá trị ở
bước 2 này sẽ lần lượt được ghi sau các giá trị ở bước 1



Mã hóa các giá trị lần này sẽ lấy dọc các bit thứ 3 ta dc S2 =
100111



Cứ tiếp tục đến khi ngưỡng đạt giá trị thấp nhất ta được



Giải mã

P sẽ nhận giá trị Tn, N sẽ nhận giá
trị -Tn
Z và T sẽ không nhận giá trị nào cả

Cứ mỗi lần cộng thêm S, giá trị Tn
sẽ giảm đi 1 nửa
1 sẽ nhận giá trị Tn, 0 thì không có j
cả



Xét P1, các giá trị P = To = 32, N = -To = -32, Z = T = 0



Các giá trị được điền theo mô hình Morton Scan như khi mã hóa



Xét S1, các giá trị 1,0,1,0 sẽ được cộng vào các giá trị P và N tương ứng ở P1



1 = 1/2To = 16, Thêm 16 nếu là P và – 16 nếu là N




Các giá trị 0 thì không thêm gì




Ngưỡng ở P2 vẫn là 16



Ngưỡng ở S2 giảm 1 nửa còn lại 8



Cứ tiếp tục như vậy đến khi ta giải mã xong


Thử nghiệm nén ảnh JPEG2000
với Matlab
Ảnh gốc

Biến đổi
thuận thành
phần

Lượng tử hóa

Biến đổi DWT
SPIHT
Ảnh mã

hóa

Giải mã hóa

Mã hóa

Ảnh sau khi
mã hóa

Biến đổi EZW

Giải lượng tử
hóa

Biến đổi
ngược thành
phần

Ảnh
khôi phục



×