Đề 1 : Mã hóa dự đoán - Kỹ thuật DPCM và ứng dụng
trang 1
Đề 2: Lượng tử hóa vectơ (Vector Quantization -VQ) và áp dụng trong nén ảnh
19
Đề 3. Phương pháp mã hóa nén dựa trên phép biến đổi (Transform Coding)
29
Đề 4 : Phương pháp mã hóa các dải tần con (Subban coding –SBC)
37
Đề 5. Tìm hiểu các phép biến đổi trong xử lý dữ liệu đa phương tiện
51
Đề 6: Các phương pháp mã hóa nén ảnh
56
Đề 7 : Kĩ thuật nén ảnh Jpeg cơ bản
70
Đề 8 : Tìm hiểu về chuẩn JPEG không tổn hao (JPEG-LS)
93
Đề 9 : Nén ảnh dựa trên phép biến đổi Wavelet rời rạc và chuẩn JPEG-2000
98
Đề 10: Các kỹ thuật tín hiệu xử lý video và mã hóa dự đoán trong nén video
115
Đề 11: Nén ảnh video theo chuẩn MPEG
126
Đề 13: Phương pháp tiên tiến nén Video AVC
144
Đề 14: Kỹ thuật “Scalable Video Coding” trong nén video
159
Đề 15 : Nén âm thanh tiếng nói thoại theo chuẩn ITU
179
Đề 16 : Nén âm thanh tiếng nói dải rộng (audio HiFi)
192
Đề 18. Đồng bộAudio-Video theo chuẩn MPEG
201
Đề 20. Tìm hiểu các kỹ thuật xác thực bảo vê bản quyền nội dung số (Content ProtectionWatermarking)
216
Đề số 1 : Mã hóa dự đoán - Kỹ thuật DPCM và ứng dụng
Phần 1: TÌM HIỂU CHUNG VỀ PHƯƠNG PHÁP MÃ HÓA DPCM
Nguyên lý
I.
Điều xung mã sai phân (DPCM – Differentical Pulse Code Modulation) là phương pháp nén dữ liệu
có mất mát thông tin. Cơ sở của phương pháp này dựa trên mã hóa dự đoán, thường được sử dụng đối với
các tín hiệu lấy mẫu có độ tương quan mạnh (nghĩa là hai mẫu gần nhau là khá tương tự nhau), có quan hệ
lân cận giữa các mẫu, như tín hiệu ảnh video, tín hiệu tiếng nói… Như vậy sẽ có nhiều lợi ích khi mã hóa sự
khác nhau giữa các mẫu kế cận thay cho mã hóa giá trị tuyệt đối của mỗi mẫu.
Nguyên tắc của mã hóa dự đoán :
-
Mã hóa sự sai khác giữa các mẫu : mẫu dự đoán theo thời điểm trước và mẫu hiện tại.
Giá trị mẫu được giải mã dựa trên sự sai khác và giá trị dự đoán ở thời điểm trước nó.
Như vậy có thể thấy rằng thay vì truyền đi toàn bộ thông tin của các mẫu, ta chỉ truyền đi sự sai lệch
giữa các mẫu. Điều này cho phép đạt được hiệu quả nén cao hơn nhiều so với việc mã hóa và truyền đi giá
trị của từng mẫu riêng biệt
Hình 1 : Sơ đồ nguyên lý DPCM
1.1
Lấy mẫu ( Sampling)
Lấy mẫu chính là quá trình rời rạc hoá tín hiệu tương tự. Đây là bước chuyển tín hiệu mang thông tin
dạng liên tục thành tín hiệu mang thông tin rời rạc, bằng phương pháp lấy mẫu (Sampling). Sao cho tín hiệu
rời rạc phải mang đẩy đủ thông tin của tín hiệu tương tự, để tái tạo được thông tin một cách trung thực ở đầu
thu.
Quá trình lấy mẫu được phát biểu như sau:
Một tín hiệu X(t) liên tục theo thời gian có phổ hạn chế từ (0¸Fmax)Hz, được hoàn toàn xác định bởi
những giá trị X(k Dt) của nó lấy các khoảng thời gian t =1/2Fmax với Fmax là tần số cao nhất của phổ làm
Chúc anh chị em thi tốt!
Page 2
X(t).
Nếu gọi T1m là chu kỳ lẫy mẫu và F1m là tần số lấy mẫu ta có: T1m = 1/2Fmax.
Hình 2 Quá trình lấy mẫu tính hiệu
Ở đầu thu để phục hồi lại được tín hiệu ban đầu, người ta dùng bộ lọc. Tín hiệu rời rạc khi qua bộ
lọc thông thấp, với tần số cơ bản của tín hiệu sẽ cho ra tín hiệu ban đầu. Quá trình phục hồi đó được minh
hoạ ở hình 3
Hình 3 : Quá trình phục hồi tín hiệu
1.2
Lượng tử hóa
Là thay thế một tín hiệu tương tự đã được lấy mẫu bằng tập hữu hạn của các mức tín hiệu biên độ rời
rạc. Ưu điểm của lượng tử hóa tín hiệu đã lấy mẫu là giảm được ảnh hưởng của nhiễu.
Các mức tín hiệu rời rạc này gọi là mức lượng tử hoá, khoảng cách giữa hai mức lượng tử hoá gọi là
bước lượng tử hoá.
Chúc anh chị em thi tốt!
Page 3
Hình 4 : Sơ đồ mô tả quá trình lượng tử hóa
1.3
Bộ dự đoán
Do độ tương quan giữa các mẫu tín hiệu như tín hiệu tiếng nói, tín hiệu video,... là khá lớn nên có
thể thực hiện dự đoán một cách gần đúng một giá trị mẫu nào đó từ một số mẫu trước đó.
Bộ dự đoán được sử dụng để tính toán dự đoán ra các mẫu tín hiệu theo mẫu tại thời điểm trước (tín
hiệu tham chiếu). Trong quá trình dự đoán sẽ có sai số dự đoán(Pridection error). Cần phân biệt giữa sai số
dự đoán và sai số lượng tử. Hai khái niệm này có bản chất khác nhau :
1.4
•
Sai số dự đoán (prediction error) chỉ là sự chênh lệch giữa giá trị dự đoán và giá trị thực. Nó không làm tổn
thất thông tin dẫn đến suy giảm chất lượng ảnh. Giá trị sai số này quyết định tốc độ bit giảm đi nhiều hay ít,
tức ảnh hưởng đến hiệu suất nén.
•
Sai số lượng tử (quantization error) là sai số đặc trưng cho sự tổn thất dữ liệu dẫn đến làm suy giảm chất
lượng ảnh phục hồi.
Bộ mã hóa
Bộ mã hóa sẽ mã hóa các sai số dự đoán thành các từ mã nhị phân và được truyền đi qua kênh
truyền.
Ở đầu thu, bộ giải mã sẽ tiến hành giải mã các bit nhị phân nhận được , sau đó tiến hành lượng tử
hóa ngược và khôi phục lại tín hiệu ban đầu
II.
1.
Các phương pháp mã hóa DPCM
DPCM vòng mở (Open-loop DPCM)
Hình 5 Open-loop DPCM
Chúc anh chị em thi tốt!
Page 4
Gọi q là sai số lượng tử hóa, ta có d^ [n] = d[n] + q[n]
Mã hóa : d[n] = x[n] - x[n-1]
Như vậy có thể thấy với kỹ thuật Open-Loop DPCM, sau mỗi vòng lặp sai số lượng tử
hóa q[i] lại được cộng thêm vào (Quantization error Accumulation) :
Tức là sai số lượng tử hóa sau khi mã hóa sẽ rất lớn.
2.
DPCM vòng đóng ( Closed-loop DPCM)
Hình 7 Closed-loop DPCM
Chúc anh chị em thi tốt!
Page 5
Với cách bố trí như trong sơ đồ ta có
Như vậy sai số lượng tử hóa đã không có sự tích lũy (accumulation) sau mỗi vòng lặp =>
giảm được đáng kể sai số lượng tử hóa.
3.
DPCM tuyến tính (bộ dự đoán tuyến tính)
Hình 7 : DPCM với Linear Pridiction
Cả 2 phương pháp Open-loop DPCM và Closed-loop DPCM ở trên đều có chung một cách tính sự
sai khác. Đó là tính sự sai khác của mẫu hiện tại chỉ dựa trên mẫu dự đoán của tín hiệu đứng ngay trước nó.
Nếu như có thể tính sự sai khác từ tất cả các mẫu dự đoán trước mẫu hiện tại thì sai số lượng tử hóa còn
Chúc anh chị em thi tốt!
Page 6
được giảm xuống nữa. Như vậy sẽ đạt được độ nén cao hơn. Đây chính là ý tưởng của phương pháp DPCM
dùng bộ dự đoán tuyến tính (Linear Pridection).
DPCM sử dụng hàm P(Z) được xác định bẳng tổng của tất cả các mẫu dự đoán tính đến thời điểm
đang xét. Vì sử dụng hàm tuyến tính nên P(Z) sẽ có dạng
PHẦN 2:
VAI TRÒ VÀ CÔNG NGHỆ
CÁC BỘ DỰ ĐOÁN VÀ CÁC BỘ LƯỢNG TỬ HÓA
I.
Bộ dự đoán
1.
Bộ dự đoán sai số
Chúc anh chị em thi tốt!
Page 7
Công nghệ DPCM thực hiện loại bỏ tính có nhớ và các thông tin dư thừa của nguồn tín hiệu bằng
một bộ lọc đặc biệt có đáp ứng đầu ra là hiệu số giữa mẫu đầu vào và giá trị dự đoán của chính nó. Rất nhiều
giá trị vi sai này gần 0 nếu các điểm ảnh biến đổi đồng đều. Còn với ảnh có nhiều chi tiết, giá trị sai số dự
đoán có thể lớn. Khi đó có thể lượng tử hoá chúng bằng bước lượng tử cao hơn do đặc điểm của mắt người
không nhạy cảm với những chi tiết có độ tương phản cao, thay đổi nhanh. Sự giảm tốc độ bit ở đây thu được
từ quá trình lượng tử hoá và mã hoá.
2.
Kỹ thuật dự đoán
Nếu trực tiếp lượng tử hoá và mã hoá các mẫu của một nguồn ảnh với đầy đủ thông tin dư thừa và
quan hệ tương hỗ giữa các điểm ảnh thì hiệu suất nén sẽ rất thấp do lượng thông tin của nguồn quá lớn. Do
vậy trong các công nghệ nén, cần loại bỏ đi tính có nhớ của nguồn tín hiệu, tức thực hiện “giải tương hỗ”
(deccorelation) giữa các mẫu điểm lân cận nhau. Trong công nghệ nén “điều xung mã vi sai” DPCM, quá
trình giải tương hỗ được thực hiện bằng một bộ lọc có đáp ứng đầu ra là hiệu số giữa các mẫu điểm liên tiếp
đầu vào và một giá trị “dự đoán” của mẫu điểm đó tạo được dựa trên giá trị các mẫu lân cận theo một qui
luật nhất định.
Sai số dự đoán: Bộ tạo dự đoán có nhiệm vụ tạo ra giá trị điểm tiếp theo từ giá trị các điểm đã truyền tải
trước đó được lưu trữ. Quá trình tạo dự đoán càng tốt thì sự sai khác giữa giá trị thực của mẫu hiện hành và
trị dự đoán cho nó (gọi là sai số dự đoán) càng nhỏ. Khi đó, tốc độ dòng bit càng được giảm nhiều. Phân biệt
giữa sai số dự đoán và sai số lượng tử như đã trình bày ở phần trên
3.
Ảnh hưởng của bộ dự đoán đến chất lượng nén
Kỹ thuật nén ảnh số đang đóng một vai trò cực kỳ quan trọng trong các hệ thống viễn thông và multimedia
để giải quyết vấn đề băng thông của đường truyền.
Các kỹ thuật nén video đều cố gắng làm giảm lượng thông tin cần thiết cho một chuỗi các bức ảnh
mà không làm giảm chất lượng của nó đối với người xem. Nói chung, tín hiệu video thường chứa đựng một
lượng lớn các thông tin thừa, chúng thường được chia thành hai loại: thừa tĩnh bên trong từng frame
(statistical) và thừa động giữa các frame (subjective). Mục đích của nén video là nhằm làm giảm số bit khi
lưu trữ và khi truyền bằng cách phát hiện để loại bỏ các lượng thông tin dư thừa này và dùng các kỹ thuật
Entropy mã hoá để tối thiểu hoá lượng tin quan trọng cần giữ lại. Và bộ dự đoán là một phần quan trọng
trong việc tối ưu hóa chất lượng nén video
Như đã giới thiệu trong kỹ thuật nén video DPCM, ảnh hưởng của bộ dự đoán đến chất lượng nén
video chính là sai số dự đoán (prediction error) mà bộ dự đoán tạo ra. Sai số này quyết định hiệu suất cũng
như chất lượng nén.
Video về bản chất là những khung ảnh có quan hệ về thời gian, vậy nên xử lý nén video cũng là xử
lý trên từng khung hình riêng biệt. Giá trị của điểm ảnh có thể được dự đoán từ giá trị hàng xóm lân cận.
Các kỹ thuật dự đoán thường dùng là dự đoán một chiều (1-dimensional prediction) và dự đoán hai
chiều (2- dimensional prediction).
Chúc anh chị em thi tốt!
Page 8
Trong dự đoán một chiều, thứ tự của các điểm ảnh có giá trị tượng tự sẽ được tìm thấy cùng một
hàng hay cột của hình ảnh. Còn trong dự đoán 2 chiều sẽ gồm có dự đoán hàng và cột.
Sự ảnh hưởng tới chất lượng ảnh của các kiểu dự đoán trên có thể được thấy khá rõ qua các ví dụ
dưới đây:
Chúc anh chị em thi tốt!
Page 9
Ta thấy như ảnh trên thì giá trị điểm ảnh ban đầu được ký hiệu s[x,y]. Với dự đoán một chiều theo
chiều ngang (horizontal – uH[x,y]) có thể thấy dự đoán này cho giá trị tốt với phần ảnh có rìa theo chiều
ngang. Phần ảnh có rìa đứng (theo chiều ngang giá trị điểm ảnh biến đổi nhiều) thì sai số tạo ra sẽ lớn (nổi rõ
hơn và khác nhiều hơn so với phần ảnh có rìa theo chiều ngang).
Cũng tương tự khi quan sát ảnh được dự đoán một chiều theo chiều dọc (vertical –
uV[x,y]), các phần ảnh có rìa theo chiều dọc mờ hơn và gần đúng với giá trị ảnh gốc hơn là các phần ảnh có
rìa hướng theo chiều ngang.
Cuối cùng là ảnh dự đoán hai chiều (2-dimensional – uD[x,y]), ta có thể thấy được sự đồng
nhất tương đối giữa cả phần ảnh chiều ngang và dọc.
Ví dụ với một bức ảnh khác:
Chúc anh chị em thi tốt!
Page 10
Quá trình tạo dự đoán luôn tồn tại một sai số dự đoán nào đó.
Chất lượng nén không đơn thuần dựa vào sai số dự đoán trong quá trình mã hóa, nó còn phụ thuộc
quá trình tái tạo các tín hiệu dự đoán ở bộ giải mã. Quá trình nén còn được thực hiện cả trong quá trình
lượng tử hóa và hiệu quả nén cũngđược quyết định bởi cách lượng tử hóa mẫu tín hiệu ban đầu.
Khả năng dự đoán tốt sẽ giảm số bít phải truyền đi, ngược lại khả năng dự báo kém sẽ khiến cho số
lượng bít phải truyền tăng lên, ảnh hưởng tới hiệu suất nén. Một số lỗi với sai số dự đoán làm giảm chất
lượng ảnh sau sau khi khôi phục:
Hình 22. Nhiễu hạt
Chúc anh chị em thi tốt!
Page 11
Hình 23: Nhiễu quá tải
Với số bit khác nhau: Prediction error 1bits/pixel và Prediction error 2 bits/pixel.
II.
Bộ lượng tử hóa và ảnh hưởng của bộ lượng tử hóa đến chất lượng nén video
Lượng tử hóa là ánh xạ không tuyến tính có tổn hao từ khoảng biểu diễn liên tục biên độ tín hiệu vào
khoảng biểu diễn bởi các giá trị rời rạc của các mức giá trị hay các từ mã.
Với R bits chúng ta có thể biểu diễn 2R mã khác nhau trên mỗi mẫu, mỗi mã có thể biểu diễn một
mức biên độ của tín hiệu. Biên độ của tín hiệu có cả giá trị âm và dương do đó chúng ta phải định nghĩa mã
để miêu tả cả giá trị biên độ âm và dương. Chúng ta chọn các giá trị điển hình sao cho ở đó có sự cân bằng
các mức lượng tử cho cả giá trị âm và dương. Có hai cách chọn: Chọn sử dụng có mức lượng tử bằng không
(midtread) hoặc không có mức lượng tử bằng không (midrise). “Midrise” không có mức không do vậy với
một tín hiệu đầu vào sẽ cho một số chẵn mức lượng tử ở đầu ra. Ngược lại lượng tử hóa “midtread” sẽ cho ra
một số lẻ mức lượng tử ở đầu ra. Với R bits thì lượng tử hóa “midtread” sẽ cho 2 R-1 giá trị khác nhau ngược
lại lượng tử hóa “midrise” cho 2R mã. Mặc dù cho số mức lượng tử nhỏ hơn nhưng lượng tử hóa “midtread”
trong quá trình xử lý tín hiệu audio cho kết quả tốt hơn
1.
Lượng tử hóa tuyến tính
Lượng tử hóa tuyến tính là một kiểu lượng tử hóa đơn giản nhất. Lượng tử hóa tuyến tính là lượng tử
với các mức lượng tử bằng nhau. Trong một kiểu lượng tử, phạm vi giá trị đầu vào là một số được biểu diễn
bằng ký pháp nhị phân và mã cho một tín hiệu đầu ra là một số nhị phân trong khoảng mà giá trị đầu vào rơi
vào.
Để định nghĩa phạm vi và mức lượng tử chúng ta cần các thông tin sau:
- lượng tử hóa theo kiểu “midtread” hay “midrise”
- giá trị lớn nhất của giá trị đầu vào xmax
- mức lượng tử Δ
Thành phần dữ liệu thứ ba định nghĩa số bits cần thiết để biểu diễn một mã ví dụ như R bít cho phép
chúng ta biểu diễn 2mũR mã khác nhau. Với kiểu lượng tử hóa “midrise”, R bits cho phép chúng ta một tập
các phạm vi đầu vào là Δ=2*xmax/2R
Chúc anh chị em thi tốt!
Page 12
Kiểu lượng tử hóa “midtread” sẽ có phạm vi lớn hơn một chút là =2*x max/(2R -1)
Khoảng giá trị đầu vào là tử -xmax đến xmax, vậy điều gì sẽ xẩy ra khi giá trị đầu vào vượt quá
khoảng này? Với các giá trị cao hơn giá trị cao nhất của khoảng thì sẽ được gán giá trị bằng giá trị cao nhất
của khoảng, còn các giá trị nhỏ hơn giá trị nhỏ nhất của khoảng thì sẽ được gán giá trị bằng giá trị nhỏ nhất
của khoảng.
Midrise quantizers
Hình trên minh họa lượng tử hóa tuyến tính kiểu “midrise” 2 bits. Phía tay trái của hình biểu diễn
khoảng biên độ đầu vào từ -1 đến 1. Từ 2 bits lượng tử hóa midrise, chúng ta có thể chia khoảng giá trị đầu
vào thành 4 mức. Như đã biết thì 4 mức này sẽ có độ rộng bằng nhau. Mỗi mức được biểu diễn bằng giá trị
nhị phân tương ứng: [11], [10], [00], [01] lần lượt tương ứng với các giá trị -1, -0. +0, +1.
Chúng ta đã lượng tử hóa tín hiệu đầu vào với 2 bits mã, chúng ta cũng có thể chuyển đổi chúng về
dạng biên độ của tín hiệu. Ví dụ với mức [00] là mức nằm trong khoảng biên độ từ 0.0 đến 0.5 của tín hiệu
đầu vào. Giả sử rằng các giá trị biên độ được phân bố đều trong mỗi khoảng, chọn mức đầu ra với mức
lỗi nhỏ nhất sẽ là giá trị trung tâm của khoảng nghĩa là 0.25. Do đó các mã [11], [10], [00], [01] sẽ lần
lượt là -0.75, -0.25, 0.25, 0.75
Lượng tử hóa tuyến tính kiểu midrise với nhiều hơn 2 bits cũng được làm tương tự.
Giải thuật lượng tử hóa và lượng tử hóa ngược đối với lượng tử hóa tuyến tính kiểu
Midrise R bit
Ví dụ: biên độ đầu vào là 0.6 thì sau quá trình lượng tử 2 bits sẽ là
INT (2*0.6) = INT (1.2) =1
Chúc anh chị em thi tốt!
Page 13
Ta chuyển đổi ngược lại sẽ là
(1+ 0.5)/2 = 1.512 = 0.75
Như vậy ta thấy có một khoảng chênh lệch giữa biên độ của tín hiệu ban đầu và biên độ của tín hiệu
sau khi được khôi phục lại.
Midtread quantizers
Hình trên minh họa lượng tử hóa tuyến tính kiểu midtread 2 bits. Với 2 bits chúng ta chỉ biểu diễn
được 3 mức biên độ của tín hiệu đầu vào. Có nghĩa là chúng ta chỉ có thể chia khoảng giá trị đầu vào thành 3
mức đo đó sẽ có độ rộng lớn hơn so với trường hợp của midrise. Các mức chúng ta có là [11], [00], [01] lần
lượt tương ứng với các giá trị -1, 0, +1, và mã [10] không được sử dụng. Giá trị lượng tử hóa ngược vẫn là
trung tâm của khoảng giá trị trong trường hợp này sẽ lần lượt là -2/3, 0, và +2/3. Chú ý rằng giá trị 0 vẫn
được giữ. Tín hiệu audio thường có khoảng lặng do đó lượng tử hóa có thể biểu diễn tín hiệu với biên độ
bằng 0 rất phù hợp trong xử lý tín hiệu audio.
Giải thuật lượng tử hóa và lượng tử hóa ngược đối với lượng tử hóa tuyến tính kiểu Midtread R
bit.
Ví dụ: biên độ đầu vào là 0.6 thì sau quá trình lượng tử 2 bits sẽ là
INT ((3*0.6+1)/2) = INT (1.4) =1
Ta chuyển đổi ngược lại sẽ là : 2*1/3 = 2/3
Như vậy ta thấy có một khoảng chênh lệch giữa biên độ của tín hiệu ban đầu và biên độ của tín hiệu
sau khi được khôi phục lại. Lượng tử hóa tuyến tính có giá trị làm tròn lỗi lớn nhất bằng nửa độ rộng của
Chúc anh chị em thi tốt!
Page 14
khoảng giá trị tại mọi nơi, mức đầu vào không tải chồng. Tuy nhiên lỗi này sẽ chở nên nghiêm trọng đối với
các tín hiệu có biên độ nhỏ.
2.
Lượng tử hóa phi tuyến
Lượng tử với các bước lượng tử không yêu cầu phải bằng nhau, với độ rộng của mỗi bước
thay đổi tương ứng với biên độ của tín hiệu đầu vào gọi là lượng tử hóa phi tuyến.
Lượng tử hóa phi tuyến thường sử dụng phương thức co giãn.
Trong phương thức co giãn, có một đầu vào x được truyền vào thông qua một hàm đơn điệu tăng
y = c(x)
x’=c -1(y’)
Lượng tử hóa ngược sẽ được thực hiện:
Trong đó hàm c(x) không đối xứng xung quanh x=0 do đó giá trị x âm sẽ được biểu diễn bằng giá trị
âm. Chúng ta có thể định nghĩa c(x) thông qua c(|x|). Nếu xét tín hiệu đầu vào và lượng tử hóa tuyến tính thì
tín hiệu thuộc khoản -1.0 đến 1.0, sau đó dùng hàm co giãn c(|x|) sẽ cho một biểu đồ đầu vào từ 0 đến 1.0
trên khoảng từ 0 đến 1.0. Với yêu cầu c(x) đơn điệu tăng do đó c(x) dễ dàng có thể đảo ngược lại.
Để có một hình dung về sự co giãn ảnh hưởng như thế nào đến lượng tử hóa, chúng ta xem kích cỡ
của các bước lượng tử thay đổi như thế nào đối với mức tín hiệu đầu vào x.
Như chúng ta đã biết các bước lượng tử trong lượng tử hóa tuyến tính là đều nhau. Nếu chúng ta
lượng tử sử dụng một lượng lớn các bít thì bước lượng tử sẽ nhỏ, y=c(x) xấp xỉ tuyến tính và chúng ta có
y(x) ≈ c(x0) + dc/dx(x-x0)
Với x0 cố định trong mỗi mức. Độ rộng trong x của một mức lượng tử được thu nhỏ bởi tỷ số giữa
dc và dx từ độ rộng trong y. Ví dụ, nếu chúng ta chọn một hàm c(x) có độ dốc cao cho giá trị x nhỏ thì chúng
ta có lượng tử hóa nhiễu nhỏ hơn so với lượng tử hóa tuyến tính. Tuy nhiên, hàm c(|x|) phải chạy tuyến tính
từ 0 đến 1.0, độ dốc cao cho giá trị x thấp bao hàm độ dốc thấp hơn và nhiều hơn lượng tử hóa nhiễu cho các
giá trị x cao hơn. Do đó, chúng ta có sử dụng hàm co giãn để di chuyển lượng tử hóa nhiễu từ biên độ đầu
vào thấp đến biên độ đầu vào cao hơn. Lượng tử hóa phi tuyến có thể được sử dụng để làm giảm tỷ lệ nhiễu
trên tạp âm (SNR).
Phần 3:
I.
1.
DPCM TRONG NÉN ẢNH, NÉN AUDIO VÀ NÉN VIDEO
DPCM trong nén Image sử dụng thuật toán LMS
Nguyên tắc
Trong DPCM chúng ta không chỉ truyền tín hiệu hiện tại x(n) mà cả e(n) (sai khác giữa x(n) và và trị dự
đoán của nó y(n)). Tại bộ thu, chúng ta sinh ra y(n) từ giá trị mẫu trước đó. Tuy nhiên có một khó khăn với
lược đồ trên. Tại bộ thu, thay vì các mẫu trước đó x(n-1), x(n-2),… cũng như e(n), chúng ta có được các tín
hiệu đã được lượng tử hóa xs(n-1), xs(n-2),... nó sẽ làm tăng sai số trong quá trình xây dựng lại tín hiệu.
Chúc anh chị em thi tốt!
Page 15
Trong trường họp này, cách tốt nhất để xác định y(n) (dự đoán từ x s(n)) cũng như từ các mẫu lượng tử
hóa xs(n-1), xs(n-2),… tại bộ thu, giá trị sai khác e(n) = x(n) – y(n) sẽ được truyền qua PCM. Tại bộ thu,
chúng ta có thể sinh ra y(n) và từ e(n) ta có thể xây dựng lại x s(n).
Sơ đồ khối cơ bản của DPCM với thuật toán LMS trong hệ thống nén ảnh
Hình trên biểu diễn bộ dự đoán DPCM trong nén ảnh. Đầu vào dự đoán là xs(n) và đầu ra là y(n). Sự sai khác
của dữ liệu ảnh gốc x(n) và dữ liệu ảnh dự đoán y(n) được gọi là sai số dự đoán e(n).
Vì thế e(n) = x(n) – y(n) được lượng tử hóa thành eq(n) = e(n) + q(n) với q(n) là sai số lượng tử hóa, e(n) là
tín hiệu được lượng tử hóa. Khi đó q(n) = eq(n) - e(n).
Đầu ra dự đoán y(n) sẽ quay lại bộ dự đoán thành đầu vào nên
xs(n) = y(n) + eq(n) = x(n) - e(n) + eq(n) = x(n) + q(n)
Đầu vào dự đoán đúng là xs(n) như giả thiết. Tín hiệu lượng tử hóa eq(n) lúc này sẽ được truyền qua kênh.
2.
Quy trình công nghệ
Khối LMS được biểu diễn trong hình trên. Tín hiệu y(n) khi qua khối LMS được biểu diễn như sau:
hay
y(n)= wT(n)xs(n)
wk(n) là N hiệp phương sai bộ dự đoán thích nghi, xs(n) là dữ liệu ảnh xây dựng lại và k là giá trị lựa chọn
từ các pixel ảnh trước đó dựa vào dự đoán hiện tại. e(n) được tính bằng e(n) = x(n) – y(n). Lượng tử hóa sai
số này sẽ được gửi tới bộ thu và được xác đinh bởi eq(n) = e(n) + q(n).
Chúc anh chị em thi tốt!
Page 16
Quá trình DPCM trong nén ảnh JPEG
Hình trên là một ví dụ về DPCM trong nén ảnh JPEG. Khối DPCM được dùng để mã hóa các thành phần
DC của khối DC sau quá trình lượng tử hóa.
II.
1.
ADPCM trong nén âm thanh (theo chuẩn G.726)
Nguyên tắc
Điều chế mã sung vi sai thích ứng (ADPCM) là một biến thể của DPCM cho phép thay đổi kích thước
của các bước lượng tử, cho phép giảm thêm nữa trong những băng thông cần thiết với một tỷ lệ signal-tonoise cho trước.
Về cơ bản, sự thích nghi với các thống kê về tín hiệu trong ADPCM đơn giản bao gồm một hệ số mức
thích nghi trước khi lượng tử hóa sự sai khác trong bộ mã hóa DPCM.
ADPCM được phát triển vào đầu những năm 1970 tại phòng thí nghiệm Bell Labs để mã hóa tiếng nói.
2.
Quy trình công nghệ
Hình 9: Lược đồ của DPCM trong nén audio chuẩn G.726
Chúc anh chị em thi tốt!
Page 17
Hình 10: Sơ đồ khối nén audio chuẩn G.926
Đầu tiên các tín hiệu vào sẽ được mã hóa bằng phương pháp điều chế xung mã PCM, mã hóa trực tiếp tín
hiệu lấy mẫu tiếng nói, âm thanh với các luật lượng tử hóa µ-law và a-law. Các tín hiệu điều chế bởi PCM
s(k) sẽ được chuyển đổi thành tín hiệu PCM đồng đều sl(k).
Các tín hiệu PCM đồng đều sẽ được mã hóa bởi ít bit hơn để có thể nén. Để làm được điều này, chúng ta
sẽ mã hóa các tín hiệu sai khác, thay vì mã hóa tín hiệu tín hiệu gốc. Các tín hiệu sai khác này sẽ được tính
toán và được lượng tử hóa. Tín hiệu sai khác là sự chênh lệch giữa mẫu hiện tại và mẫu trước đó. Tín hiệu
sai khác là sự chênh lệch giữa mẫu hiện tại và mẫu trước đó sẽ được tính theo công thức d(k) = s l(k) - se(k)
Bộ lượng tử hóa có thể là bộ lượng tử hóa tuyến tính hoặc phi tuyến tính. Bộ lượng tử hóa tuyến tính ít
được sử dụng hơn vì các tín hiệu audio thường biến thiên rời rạc. Cũng do sự biến thiên tín hiệu audio là
không đồng đều nên bộ lượng tử hóa phi tuyến tính thích nghi sẽ được chia thành các bộ lượng tử hóa thích
nghi mức 31, 15, 7, 4. Các bộ lượng tử hóa này tương ứng sẽ lượng tử hóa cho các tín hiệu sai khác hoạt
động ở 40, 32, 24 hay 16 Kbps. Tín hiệu ra của d(k) qua bộ lượng tử hóa là I(k).
Tín hiệu sai khác sau khi được lượng tử hóa I(k) sẽ được đưa vào bộ lượng tử hóa thích nghi nghịch đảo
nhằm chuyển đổi về dạng ban đầu dq(k).
Bộ dự đoán thích nghi sẽ dự đoán mẫu dự đoán se(k) từ tín hiệu sai khác dq(k) và tín hiệu xây dựng lại
sr(k). Nó tiếp tục sẽ là đầu vào để tính toán sự chênh lệch tín hiệu so với đầu vào hiện tại.
Quá trình dự đoán kết thúc sau khi xử lý xong tín hiệu đầu vào.
III.
1.
DMPC trong nén video (chuẩn MPEG)
Nguyên tắc
Trên lý thuyết, video là tập hợp các ảnh hiện thị liên tiếp nhau về mặt thời gian gọi là các frame. DCPM
sử dụng trong nén video chủ yếu là dùng để mã hóa dự đoán các frame I, B, P.
2.
Quy trình công nghệ
-
Nén frame I: DPCM trong nén frame I chính là DPCM trongn nén JPEG
Chúc anh chị em thi tốt!
Page 18
-
Nén frame P, B:
Mã hóa dự đoán DPCM trong nén frame P và frame B được sử dụng trong quá trình đánh giá ước
lượng chuyển động.
Chúc anh chị em thi tốt!
Page 19
Đề số 2: Lượng tử hóa vectơ (Vector Quantization -VQ) và áp dụng
trong nén ảnh
I. TÌM HIỂU CHUNG VỀ KỸ THUẬT VQ
Lý thuyết lượng tử hóa
Lượng tử hóa là quá trình ánh xạ một tập dữ liệu lớn sang một tập dữ liệu nhỏ hơn. Do đó, nó được
làm nền tảng trong rất nhiều thuật toán nén dữ liệu. Trong xử lí tín hiệu số nó chính là quá trình rời rạc hóa
về mặt biên độ sau khi rời rạc hóa về mặt thời gian bằng cách xấp xỉ giá trị tín hiệu ban đầu về một giá trị
đơn giản hơn đã lựa chọn từ trước. Quá trình lượng tử hóa tín hiệu hoặc dữ liệu ban đầu sẽ gây ra một sai số
gọi là sai số lượng tử hóa. Thiết bị hoặc một hàm thuật toán dùng để lượng tử hóa được gọi là bộ lượng tử
hóa (quantizer).
Do lượng tử hóa là một phép ánh xạ từ một tập lớn sang một tập nhỏ hơn nên nó là một quá trình
không tuyến tính và không có tính thuận nghịch- tức là với dữ liệu đầu ra ta không thể thu lại (recover) một
cách chính xác dữ liệu ban đầu.
Trong lượng tử hóa, tập dữ liệu đầu vào có thể là vô hạn,liên tục và không đếm được còn tập dữ liệu
đầu ra có thể hữu hạn hoặc vô hạn đếm được.
Lượng tử hóa được chia làm hai loại :
Chúc anh chị em thi tốt!
Page 20
- Rounding quantization (lượng tử hóa làm tròn): dạng lượng tử hóa này được sử dụng trong
nhiều ứng dụng cho phép việc sử dụng một đại diện xấp xỉ đơn giản nào đó đối với một tập số lượng dùng để
đo và để sử dụng trong các tính toán khác. Dạng này bao gồm cả các phép lấy xấp xỉ làm tròn đơn giản được
sử dụng trong số học hàng ngày. Nó cũng có trong kĩ thuật chuyển đổi từ tín hiệu tương tự sang tín hiệu số
trong hệ thống xử lý tín hiệu số và trong các phép toán được thực hiện trong hầu hết các quá trình xử lý lọc
số. Mục đích chủ yếu của kĩ thuật này cũng như trong các ứng dụng của nó là giữ lại được đa số tín hiệu ban
đầu một cách chính xác nhất có thể trong khi loại bỏ đi các tín hiệu không cần thiết và giữ cho tín hiệu ra gần
đúng với thực tế.
- Rate-distortion optimized quantization (lượng tử hóa với độ lệch tối ưu): loại này sử dụng
trong mã nguồn của các thuật toán nén dữ liệu có gây mất mát (“lossy” data compression) với mục đích quản
lí độ lệch trong giới hạn của tốc độ bit được hỗ trợ bởi một kênh truyên thông hoặc một phương tiện lưu trữ
nào đó. Mức độ lệch có thể được quản lý cẩn thận bởi các kĩ thuật rất phức tạp và có thể đưa ra các mức độ
lệch đáng kể không thể tránh khỏi. Bộ lượng tử hóa dạng này được thiết kế với mục đích có thể hoàn toàn
khác và phức tạp hơn đối với phép lượng tử hóa làm tròn.
Việc phân tích về lượng tử hóa liên quan đến việc nghiên cứu về mức dữ liệu (the amount of data)
trong đầu ra của bộ lượng tử hóa, và nghiên cứu về sự mất chính xác trong quá trình lượng tử. Các lĩnh vực
chung của các nghiên cứu này thường là về tỉ lệ và độ lệch (sai số) và được gọi là rate-distortion theory
(thuyết sai số).
Lượng tử hóa vector (VQ)
Các khái niệm
Lượng tử hóa vector là cách thức nén dữ liệu có gây mất mát dựa trên nguyên tắc mã hóa khối. Đây
là kĩ thuật được sử dụng trong nhiều ứng dụng như nén ảnh, nén âm thanh, nhận dạng âm thanh… Trước đây
việc thiết kế một bộ lượng tử hóa vector được xem là một vấn đề nan giải do cần phải tích hợp đa chiều. Vào
năm 1980, Linde, Buzo và Gray đã đưa ra thuật toán thiết kế bộ lượng tử hóa vector (LBG) dựa trên một tập
học nhờ đó tránh được việc phải tích hợp đa chiều.
Phép lượng tử hóa vector là một phép ánh xạ các vector k chiều trong không gian vector k chiều
sang một tập xác định các vector Y = {yi: i=1, 2,…, N}. Mỗi vector yi được gọi là một codevector hay còn
gọi là một codeword và tập các codevector này gọi là một codebook.
Đối với mỗi một codeword yi, các vector nằm gần nó nhất so với tất cả các codeword còn lại tạo
thành một vùng (Vi) gọi là vùng được mã hóa (encoding regions hay voronoi region):
Chúc anh chị em thi tốt!
Page 21
Tập các encoding region được gọi là phân vùng không gian Rk:
Một phân vùng không gian
Như vậy có thể thấy, phép lượng tử hóa vector gần như là một cách lấy xấp xỉ các giá trị đầu vào. Ví dụ
ta xét một phép lượng tử hóa vector 1 chiều:
Ở đây, các giá trị xấp xỉ được mã hóa bằng 2 bit, các số nhỏ hơn -2 được lấy xấp xỉ là -3 và được
mã hóa là 00 , các số thuộc khoản từ -2 đến 0 được lấy xấp xỉ bằng -1 và được mã hóa là 01, các số nằm
trong khoảng từ 0 đến 2 được lấy xấp xỉ là 1 và được mã hóa là 10, các số trong khoảng còn lại lấy xấp xỉ là
3 và được mã hóa là 11.Tập các số nguyên trên trục số là tập các vector đầu vào 1 chiều; -3,-1,1,3 là các
Chúc anh chị em thi tốt!
Page 22
codeword và tập {-3,-1,1,3} là codebook. Không gian xét ở đây chính là tập các số nguyên Z. Đây gọi là
phép lượng tử hóa vector 2bits, 1 chiều (1-dimensional, 2-bit VQ).
Một ví dụ về phép lượng tử hóa vector 4 bits, 2 chiều:
Các ngôi sao (chính là các codeword) là kết quả của việc lấy xấp xỉ các cặp số trong các khu vực
(encoding region) chứa nó trên hình vẽ. Mỗi ngôi sao này sẽ được mã hóa bằng 4 bit (16 ngôi sao).
Vấn đề thiết kế bộ lượng tử hóa vector (vector quantizator)
a. Đặt vấn đề
Như đã trình bày trong phần lý thuyết về lượng tử hóa thì mục đích của các bộ lượng tử là các giá trị
đầu ra phải có độ lệch trong giới hạn có thể tái hiện lại nguồn ban đầu, độ lệch càng bé thì tín hiệu ra càng
giống tín hiệu nguồn. Để đạt được điều này thì các sai số trong quá trình lượng tử cũng phải được quan tâm.
Đối với phương pháp VQ thì mục đích là phải chọn ra được các codevector sao cho độ lệch trung bình giữa
codevector với các vector trong cùng một vùng mã hóa được định ra bởi codevector đó là thấp nhất.
Xét một tập học T gồm M phần tử:
Tập học này có thể thu được từ một số cơ sở dữ liệu lớn .Ví dụ nếu nguồn là một tín hiệu tiếng nói,
khi đó tập nguồn có thể thu được từ việc ghi âm một vài cuộc hội thoại dài trên điện thoại. Ở đây, M được
giả thiết là đủ lớn để tập T thể hiện được hết các thuộc tính của nguồn và giả thiết rằng các vector nguồn có k
chiều.
Chúc anh chị em thi tốt!
Page 23
Gọi N là số lượng codevector, tập codebook là C:
Trong đó, cn (n=1,2,…,N) là một codevector k chiều:
Số vùng mã hóa là N. Gọi Sn (n=1,2,…,N) là một encoding region được định ra từ codevector cn , P
là phân vung không gian chứa các Sn.
Như vậy tất cả các vector xn nằm trong vùng Sn được lấy xấp xỉ gần đúng bởi cn. Ta có hàm lượng
tử hóa:
Và độ lệch trung bình của phép lượng tử là:
Như vậy, vấn đề ở đây là khi cho tập học T và định ra số lượng các codevector là N, cần phải tìm ra
tập C, P để Dave có giá trị nhỏ nhất.
b. Tiêu chuẩn tối ưu
Các tập C, P thỏa mãn vần đề nêu trên phải thỏa mãn 2 điều kiện sau:
- Nearest Neighbor Condition:
Khoảng cách giữa các vector nằm trong vùng Sn với codevector cn so với các codevector khác phải
là nhỏ nhất.
- Centroid Condition:
Chúc anh chị em thi tốt!
Page 24
Codevector cn có giá trị bằng giá trị trung bình của các vector nằm trong vùng Sn. Trong thực
nghiệm, mỗi vùng sẽ có ít nhất một vector trong tập học ban đầu (do đó mẫu của biểu thức trên luôn khác 0).
Quá trình lượng tử hóa vector
2 giai đoạn(2 pha):
o
Giai đoạn 1: Huấn luyện (trainning)
Giai đoạn 2: Thực hiện mã hóa và giải mã
Huấn luyện
Huấn luyện dựa theo mô hình toán học, các bước thực hiện:
•
Không gian dữ liệu nguồn k chiều:
• X= {x1, x2, … , xi} với xi là vector k chiều
• Chọn ra tập dữ liệu huấn luyên T ( T là con của X):
T={x1, … , xn}
•
•
Theo thuật toán huấn luyên , tạo codebook :
• C={C1,C2,….CN} với Ci = {Ci1, Ci2, …, Cik} (code-vector)
Phân hoạch P chia tập T thành N tập con:
• P={S1, S2, … , SN}
Yêu cầu thỏa mãn 2 tiêu chuẩn tối ƣu:
•
•
Láng giềng gần nhất
Sn là tập các vector x gần với code-vector cn hơn các code- vector khác
Điều kiện trọng tâm:
Cn là trọng tâm của phân hoạch Si
o
Thực hiện mã hóa và giải mã
o
Sơ đồ mã hóa và giải mã:
Chúc anh chị em thi tốt!
Page 25