Bài tập lớn xử lý dữ liệu đa phương tiện. Mã hóa dự đoán - Kỹ thuật DPCM
Trang 1TRƯỜ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 MÔN XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN
Đề tài: Mã hóa dự đoán – Kỹ thuật DPCM
Sinh viên thực hiện:
Nguyễn Đình Tài
Phạm Văn Tiệp
Hồ Thị Chắt
Giáo viên hướng dẫn:
PGS.TS Nguyễn Thị Hoàng Lan
Hà Nội, 5-2015
Trang 3Phần 1: TÌM HIỂU CHUNG VỀ PHƯƠNG PHÁP
MÃ HÓA DPCM
I Nguyên lý
Đ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âncậ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ềulợ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
Trang 4Lấ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ôngtin 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 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
Trang 5Cá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á.
Hình 4 : Sơ đồ mô tả quá trình lượng tử hóa
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ẫutạ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 :
• 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 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 Các phương pháp mã hóa DPCM
1 DPCM vòng mở (Open-loop DPCM)
Trang 6Hình 5 Open-loop DPCMGọi q là sai số lượng tử hóa, ta có d^ [n] = d[n] + q[n]
Trang 7Tứ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 DPCMVớ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
Trang 8Hì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 được giảmxuống nữa Như vậy sẽ đạt được độ nén cao hơn Đây chính là ý tưởng của phươngphá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
Trang 92 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ấtthấ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
Trang 10ứ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)
Trang 11Trong 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:
Trang 12Ta 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 (theochiề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:
Trang 13Quá 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ìnhné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
Trang 14Khả 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
Trang 15Với số bit khác nhau:
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
Trang 16Lượ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êntụ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 2R-
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
Trang 17Thà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à
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ì 4mứ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
Trang 18Chú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ằmtrong 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à
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
Trang 19Hì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ếntí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 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)
Lượng tử hóa ngược sẽ được thực hiện:
x’=c-1(y’)
Trang 20Trong đó 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)