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
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 BÀI TẬP LỚN
XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN
Đề tài: Mã hóa dự đoán Kỹ thuật DPCM và ứng dụng
Giáo viên hướng dẫn: PGS.TS Nguyễn Thị Hoàng Lan
Sinh viên: Vũ Ngọc Bình - 20111178
Nguyễn Thành Trung - 20112384 Đinh Hải Anh – 20111106
Nguyễn Huy Lăng – 20121966
Trang 2Hà Nội, 5-2016
MỤC LỤC
Trang 3Phần 1: Phương Pháp Mã Hóa DPCM
Đ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
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ô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.
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
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á
Trang 5• 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
4 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
Trang 6II Các phương pháp mã hóa DPCM
1 DPCM vòng mở (Open-loop DPCM)
Hình 5 Open-loop DPCMGọ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) :
Trang 8Như 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
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 được giảm xuống nữa Như vậy sẽ
Trang 9đạ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
Trang 10Phần 2: Bộ Dự Đoán Và Bộ Lượng Tử Hóa Trong DPCM
I Bộ dự đoán
1 Bộ dự đoán sai số
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
Trang 11liê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 12Trong 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 13Ta 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:
Trang 14Quá 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
Trang 15Khả 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 16Với số bit khác nhau:
Trang 17II 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 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
Để đị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”
Trang 18Thà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
Kiểu lượng tử hóa “midtread” sẽ có phạm vi lớn hơn một chút là =2*xmax/(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
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á
Trang 19trị 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à
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
Trang 20khoả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à
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
Để 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
Trang 21Như 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ó
sử dụng để làm giảm tỷ lệ nhiễu trên tạp âm (SNR)
Trang 22Phần 3: Thuật Toán DPCM Áp Dụng Mã Hóa
Thành Phần DC Trong Nén Ảnh JPEG
Quy trình nén ảnh JPEG:
b1: Biến đổi ảnh từ bộ màu RGB thành bộ màu YUV (hoặc YIQ) và chia ảnh thành các
block (khối điểm ảnh – ví dụ 8x8 như sơ đồ trên)
b2: Thực hiện biến đổi cosi rời rạc (DCT) trên các khối điểm ảnh.
b3: Lượng tử hóa và sắp xếp zig-zag ta thu được thành phần DC và thành phần AC mang
hầu hết thông tin chứa trong ảnh gốc Trong đó, DC là thành phần quan trọng nhất mang
độ chói trung bình của ảnh, thành phần AC chứa các thông tin về chi tiết của ảnh
- Thành phần AC được thực hiện mã hóa RLC
- Thành phần DC sẽ được thực hiện mã hóa theo DPCM
Nhận xét: Trong nén ảnh JPEG mã hóa dự đoán DPCM được áp dụng để mã hóa
thành phần DC của ảnh Phương pháp mã hóa này được sử dụng là do thành phần DC trong JPEG là lớn và khác nhau, các thành phần DC kế tiếp thường gần bằng nhau Vì vậy độ tương quan giữa mẫu hiện tại và mẫu ở thời điểm trước là lớn Nên áp dụng
Trang 23phương pháp mã hóa dự đoán DPCM để mã hóa thành phần DC sẽ mang lại tỉ số nén cao
II Thuật toán DPCM áp dụng mã hóa thành phần DC
Thuật toán sử dụng phương pháp mã hóa DPCM vòng mở (Open-loop DPCM) để mã hóa các thành phần DC
Đầu vào: thành phần DC
Đầu ra: các từ mã
Thuật toán DPCM áp dụng mã hóa thành phần DC được mô tả bởi các bước:
B1: Cho tín hiệu DC[1] đi qua
B2: d[1] = DC[1], gán i = 2
B3: Nếu i <= N(là số lượng thành phần DC) thì đi đến B4 Ngược lại i>N thì đi đến B6
B4: Tính sai khác giữa 2 mẫu liên tiếp d[i] = DC[i] – DC[i-1] đi đến B5
B5: i = i+1 quay lại B3
B6: Lượng tử hóa dãy d[n] đi đến B7
B7: Mã hóa và kết thúc.
Trang 24Sơ đồ khối thuật toán DPCM áp dụng mã hóa thành phần DC trong nén ảnh JPEG
III Đánh giá nhận xet thuật toán DPCM áp dụng trong nén ảnh