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

Mã hóa nén ảnh JPEG LS và ứng dụng

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.31 MB, 24 trang )

Xử lý dữ liệu đa phương tiện

Đề tài :


Nội dung trình bày



Phân tích sơ đồ thuật toán.



Ứng dụng và đánh giá kết quả.


MSSV

Họ và Tên

Công việc

20114630

Trần Trọng Dũng

Sơ đồ khối chức năng của kỹ thuật nén ảnh JPEG-LS

20112140

Nguyễn Thanh Tùng



Giải thuật LOCO-I và giải thuật mã hóa không tổn hào Rice-Golomb

Đinh Hông Đạt

Mã hóa loạt dài RLE

Hoàng Đình Hiệp

Ứng dụng


Sơ đồ thực hiện của kỹ thuật nén ảnh JPEG-LS




Khối Gradient

Các gradient được định nghĩa như sau :

g1= d-b , g2=b-c , g3=c-a




Khối Flat Region





Khối Run Counter




Khối Run Coder




Khối Fixed Predictor




Khối Adaptive Correction




Khối Context Modeler




Khối Golomb Coder


JPEG-LS





JPEG-LS có 2 quá trình cơ bản là dự đoán và mã hóa.



Quá trình mã hóa được thực hiện trong khối Golomb Coder, sử dụng mã hóa
không tổn hao Rice-Golomb.

Quá trình dự đoán được thực hiện trong khối Predictor, sử dụng thuật toán
LOCO-I.


LOCO-I



Loco-I: LOw COmplexity LOssless COmpression for Images – Nén ảnh
không tổn hao với độ phức tạp thấp.



Được đề xuât bởi HP Labs năm 1996, do M.J. Weinberger, G. Seroussi
và G. Sapiro phát triển.



Là thuật toán có độ phức tạp thấp, dựa trên bối cảnh và là thuật toán nén

ảnh không tổn hao.


LOCO-I



Quá trình dự đoán giá trị của pixel X sẽ dựa trên 3 giá trị
 pixel lân cận đã biết là A, B và C



Giá trị của X (Px) được dự đoán như sau:

Px =



Giá trị Px được dùng cho khối Adaptive Correction tính toán
sai khác so với giá trị X thực của ảnh ban đầu. Gọi giá trị sai
khác này là ΔX.



Giá trị sai khác ΔX sẽ được mã hóa trong khối Golomb
Coder.


Thuật toán Rice-Golomb




Giá trị của ΔX là một số thập phân, sử dụng một tham số m để chia ΔX
thành 2 phần:
- Q (quotient): thương của phép chia ΔX cho m.
- R (remainder): số dư trong phép chia trên



Khi đó ΔX sẽ được biểu diễn dưới dạng:
<Mã Quotient><Mã Remainder>


Quá trình mã hóa.
Các kí hiệu:
- m: tham số mã hóa.
- q: phần thương của s chia cho m.
- r: phần dư của s chia cho m.
- s: giá trị biến cần mã hóa.
- k: số bit dùng để mã hóa phần dư r.
Đầu vào: Số nguyên s cần mã hóa và tham số mã hóa m.
Đầu ra: Chuỗi nhị phân là giá trị mã hóa của s.


Quá trình mã hóa.
Thuật toán:







B1: Tính k = ⌈log2(m)⌉ (số nguyên bé nhất không bé hơn log2(m)).




B5: Nếu r < t thì mã hóa r dưới dạng nhị phân sử dụng k-1 bit.



Kết quả mã hóa số nguyên s là <mã q><mã r>.

B2: Tính r = s mod m (số dư của s chia cho m).
B3: Tính t = 2k – m.
B4: Mã hóa phần thương q sử dụng mã unary (Mã unary của một số
nguyên N được biểu diễn dưới dạng N bit 1 và kết thúc bằng 1 bit 0)
Ngược lại tính r = r + t sau đó mã hóa r dưới dạng nhị phân sử dụng
k bit.


Quá trình mã hóa.
Ví dụ:
Mã hóa số s = 37 với tham số m = 7.








B1: k = ⌈log2(m)⌉ = ⌈log2(7)⌉ = 3.



Như vậy mã Golomb của s = 37 với tham số m = 7 là 111110011.

B2: r = 37mod7 = 2.
B3: t = 23 – 7 = 1.
B4: q = 32div7 = 5. Mã unary giá trị q = 5 là 111110.
B5: r = 2 > t => r = r + t = 2 + 1 = 3. Mã nhị phân của r = 3 sử dụng k = 3
bit là 011.


Quá trình giải mã
Đầu vào: Chuỗi nhị phân cần giải mã và tham số mã hóa m.
Đầu ra: Giá trị giải mã được (s).
Thuật toán:





B1: Tính k = ⌈log2(m)⌉ (số nguyên bé nhất không bé hơn log2(m)).



B4: Gán cho x giá trị bằng giá trị thập phân của (k – 1) bit tiếp theo trong
giá trị đầu vào.







B5: Nếu x < t thì s = s×m + x.

B2: Tính t = 2k – m.
B3: Đặt s = số lượng các bit 1 liên tiếp đầu tiên cho đến khi gặp bit 0
trong giá trị đầu vào.

B6: Ngược lại thì:
x = x×2 + bit tiếp theo trong đầu vào.
s = s×m + x – t.


Quá trình giải mã
Ví dụ:













Giải mã 111110011 với tham số m = 7.
B1: k = ⌈log2(m)⌉ = ⌈log2(7)⌉ = 3.
B2: t = 2k – m = 23 – 7 = 1.
B3: s = 5 (111110011)
B4: x = 012 = 110
B5: x = 1 <≮ t = 1.
B6:
x = 1×2 + 1 = 3.
s = 5×7 + 3 – 1 = 37.
Như vậy giả mã giá trị 111110011 ta được giá trị ban đầu là s = 37.


Khối run coder
1 . Kỹ thuật RLE

- Nén dữ liệu hàng loạt RLE là phương pháp nén không mất dữ liệu. RLE hoạt động bằng cách
tìm loạt dữ liệu liền nhau lặp lại trong chuỗi dữ liệu thành một dữ liệu đại diện khác, mục đích là
để giảm kích thước dữ liệu gốc.
2 . RLE trong nén ảnh
- RLE là ứng viên tự nhiên trong việc nén dữ liệu đồ họa
a, Nguyên tắc
- Phát hiện một loạt các điểm ảnh lặp lại liên tiếp .


VD : Cho một chuỗi nguồn d :
d= 5555555555191919191900000002323232323232323
Ta có chuỗi mới (10 5) (5 19) (7 0) (8 23)
Tỷ số nén = 30/8 =2.5

 Với loạt ảnh đen trắng chỉ sử dụng 1 bit để biểu diễn 1 điểm ảnh

VD : Cho một nguồn d :
000000000000000111111111100000000001111111111000000000000000

 Ta có chuỗi mới: (15, 10, 10, 10, 15)
 Tỷ số nén = 60 bit / (5*4 bit) = 3 (chỉ sử dụng 4 bit để thể hiện độ dài loạt và không thể
hiện giá trị loạt vì ảnh đen trắng chỉ có 2 giá trị bit là 0 hoặc là 1 )


Ưu điểm
- Đối với các dữ liệu có sự lặp đi lặp lại nhiều lần của một kí tự thì thuật toán này cực kì phù hợp. Nó
giảm được đáng kể dung lượng của dữ liệu
Nhược điểm
- Với những loại dữ liệu mà thông tin ít lặp thì việc sử dụng RLE không thật sự hiệu quả. Nó tạo ra dữ
liệu sau khi nén có dung lượng lớn ơn cả dữ liệu "nguyên thuỷ". Đây được gọi là hiệu ứng ngược.
Xét ví dụ sau:
- Cho đoạn dữ liệu: abcdefgh #8byte
- Sau khi nén bằng RLE sẽ là: a1b1c1d1e1f1g1h1 #16 byte
- Phương pháp này không cho kết quả ổn định .



×