Các phương pháp chung

Một phần của tài liệu Bài giảng Xử lý Audio và Video doc (Trang 136 - 145)

Một số phương pháp nén chung cùng tồn tại, song các thuật toán chỉ sử dụng một trong sốđó. Phần này sẽđề cập đến một trong những phương pháp chung này

5.3.1. Các phương pháp không tổn hao

Mặc dù nén không tổn hao không thường được sử dụng cho audio hay video song những phương pháp như thế vẫn được sử dụng như một phần của thuật toán tổn hao. Mọi phương pháp không tổn hao đều phụ thuộc vào những con số thống kê dữ liệu nào đó mặc dù chúng không cần biết rõ sẽ biểu thị dữ liệu nào. Phụ thuộc vào các ứng dụng, do vậy nhiều phương pháp không tổn hao đôi khi gay ra tổn hao cách lấy xấp xỉ trong các tính toán của mình.

5.3.1.1 Mã độ dài thay đổi

Dữ liệu nói chung có thể có chứa các giá trị lặp lại một số lần, ví dụ như trong một hình được ghi biểu đồ mẫu có một vùng đồng màu. Các pixel kề nhau trong vùng này sẽ có cùng giá trị. Dữ liệu này có thể được nén bằng cách nhận biết khi nào thì một chuỗi các giá trị lặp lại xảy ra và truyền giá trị một lần cùng với mã thứ

hai biểu thị việc tính toán số lần giá trị lặp lại. Đây được gọi là mã có độ dài thay

đổi (RLE). RLE phải có phương tiện để nhờ đó bộ giải nén có khả năng nhận biết khi nào giá trị RLE xảy ra. Điều này thường được thực hiện bằng cách tạo ra một giá trị dự trữ, giá trị này không bao giờ hoặc hiếm khi xuất hiện trong các giá trị của dữ liệu. Ví dụ, giá trị 25510 trong một hệ thống 8 bit có thể được dự trữ với mục

đích này. Giá trị dự trữđó được gọi là mã thoát. Khi bắt gặp mã thoát, bộ giải nén sẽ

biến hai giá trị tiếp theo biểu thị một giá trị pixel và số lần lặp lại của nó. Điều này

được minh họa trên hình 5.2.

010 022 079 000 010 063 063 063 063 063 063 241 254 198 087 010 022 079 000 010 255 063 006 241 254 198 087 6 giá trị lặp Đếm lặp Giá trị Mã thoát Hình 5.2. Ví dụ về mã độ dài thay đổi

Do vậy, một đối tượng đơn lặp lại sẽ lấy ba từ dữ liệu để truyền, vì vậy sẽ

không có độ tăng ích khi sử dụng phương pháp này cho đến khi có hơn ba từ lặp lại. Lưu ý là không cần thiết phải ngăn dữ liệu đầu vào có chứa giá trị mã giải thoát đã dự trữ. Nếu điều này xảy ra, hai mã thoát có thểđược truyền cùng nhau để ấn định là từ dữ liệu có giá trị thoát.

Nén dữ liệu cũng có thể thực hiện bằng cách quan tâm đến việc thống kê của dữ liệu đầu vào. Nếu biết chắc chắn các giá trị từđược sử dụng nhiều hơn giá trị từ

khác, người ta có thể thiết lập một hệ thống mã để chuyển các giá trị sự kiện xuất hiện nhiều với một mã ngắn (ít bit), ngược lại các giá trị xuất hiện ít hơn có thể sử

dụng các mã bit dài hơn. Một hệ thống mã sử dụng nguyên lý này là mã Morse trong điện báo. Trong các hệ thống số, phương pháp phổ biến nhất là nguyên lý này là dùng mã Huffman, nó được sử dụng rộng rãi trong các thuật toán nén video. Mã Huffman hoạt động ở mức bit, một ví dụ trên hình 5.3. Hiệu quả của mã phụ thuộc vào khả năng nhận biết trước xác suất xuất hiện của sự kiện PScủa mỗi giá trị dữ

liệu. Một cây nhị phân được tạo từ các giá trị sắp xếp theo bậc giảm dần của xác suất. Các mã được tạo bằng cách đọc từđầu ra của cây nhị phân (từđiểm A) ngược trở lại đầu vào của cây nhị phân, và lấy các giá trị bit từ mỗi nhánh. Giống như

phương pháp thích ứng mô hình, bộ nén phải thiết lập một bảng các thông số hay bảng tra cứu và gửi kèm theo dữ liệu tới bộ giải nén. Mã thống kê cũng được gọi là mã entropy.

Hình 5.3. Ví dụ mã hóa Huffman giá trị 3 bit

0 0,04 1 0,15 2 0,10 3 0,10 4 0,08 5 0,07 6 0,05 7 0,05 Giá trị Ps 0 100 101 1100 1101 1110 11110 11111 Mã Giá trị 3 4 0 0 0 1 0 21bit Mã 110011010001000 15bit

Hình 5.3. Ví dụ mã Huffman giá trị 3 bit

5.3.2 Các phương pháp tổn hao

Các phương pháp nén tổn hao vốn cần phải quan tâm tới định dạng dữ liệu cũng như ý nghĩa ứng dụng của tất cả các bit hoặc từ trong dữ liệu. Việc quan tâm

định cũng rất cần thiết. Ví dụ, nếu video chỉ được xem ở tỉ lệ nhìn rộng, một số

thông tin chi tiết có thể bị khử một cách cẩn thận mà người xem không thể nhận biết

được. Mặc khác, nếu các điều kiện nghe và nhìn được yêu cầu nhiều hơn, rất ít thông tin bị mất mà không được báo. Trong trường hợp đó phải cần đến các phương pháp nén tinh xảo hơn.

5.3.2.1 Cắt bỏ

Trong các phương pháp khử dữ liệu không cần thiết gồm có hai phương pháp là cắt bỏ và lấy mẫu con. Cắt bỏ là xóa đi một vài trong số những bit kém hiệu quả

nhất từ các mẫu. Đây chính là tái lượng tửđã được đề cập trong chương trước và nó phải được thực hiện riêng để duy trì càng nhiều thông tin càng tốt.

Với những điều kiện lý tưởng, các mẫu thành phần video phải có tối thiểu là 8 bit/pixel, nhưng dưới những điều kiện xem kém lý tưởng hơn, phải giảm tới 6 bit/pixel mà không gây ra sự suy giảm đáng kể nào. Bởi vì SNR lượng tử sẽ giảm 6dB trong mỗi bit được khử, cho nên việc cắt bỏ không phải là một giải pháp tốt, hơn nữa giảm dữ liệu sẽ kéo theo chỉ tiêu giảm.

Quá trình lấy mẫu audio chất lượng cao cần đến ít nhất là 16 bit/mẫu. Tuy nhiên, rất nhiều hệ thống audio có thể hoạt động hiệu quả với mức thấp như 8 bit/mẫu, đặc biệt đối với lời nói, tại đó dải thông có thể bị hạn chế và tiêu chuẩn chính đề ra là dễ hiểu.

5.3.2.2. Lấy mẫu con

Các mẫu được sử dụng rộng rãi cho thành phần độ chói nhiều hơn là cho các thành phần video hiệu màu. Kỹ thuật này dựa trên cơ sở thực tế là mắt người có độ

phân giải với màu sắc kém hơn với độ chói, vì vậy dải tần tín hiệu màu (tỷ lệ lấy mẫu) có thể được giảm mà người xem không nhận thấy được sự suy giảm. Đây

được gọi là lấy mẫu con hoặc là giảm tỷ lệ lấy mẫu và như trong truyền hình analog,

đó là một phần của hầu hết các hệ thống nén video số. Lấy mẫu con giảm giới hạn Nyquist tới giá trịđược biểu thị bởi tỷ lệ lấy mẫu con và cũng phải cần đến quá trình lọc riêng để tránh chồng phổ.

5.3.2.3 Các bảng màu

Đối với một vài mục đích của video, có thể giảm số lượng bit/pixel bằng cách biến bản thân giá trị pixel thành một chỉ số trong bảng các giá trị màu được chọn lọc từ một số lượng bit/pixel rất lớn. Ví dụ, tiêu chuẩn PC VGA cung cấp một chếđộ 8 bit/pixel có khả năng lựa chọn 256 màu sắc từ một bảng màu 18 bit. Các hệ thống khác sử dụng các số bit khác nhau, 256 màu sẽ làm cho việc tái tạo ảnh tự nhiên kém hơn nhưng, dưới những điều kiện thích hợp, việc tái tạo có thể có kết quả tốt

cho từng ảnh một. Có thể cải thiện được ảnh tốt hơn bằng cách sử dụng kỹ thuật dithering để tạo được các màu không có trong bảng bằng cách thay đổi màu sắc ở

các pixel kề nhau. Nếu người xem ở khoảng cách xa vừa đủ, họ sẽ không nhận thấy các pixel độc lập, mắt sẽ tổng hợp các pixel kề nhau thành những màu sắc phối hợp. Tuy nhiên các bảng màu có những hạn chế rất nghiêm trọng nếu áp dụng cho

ảnh động, bởi vì chuyển động của các ảnh tự nhiên sẽ tạo ra các hiệu ứng giả mà người xem có thể nhận thấy rõ (ví dụ như hiệu ứng đường viền). Đối với ảnh động, tốt hơn hết là sử dụng màu trực tiếp với nhiều số bit/pixel hơn (ví dụ 16) và sử dụng các phương pháp nén khác.

5.3.2.4. Mã vi sai

Đối với cả audio và video, lượng thay đổi biên độ từ mẫu này tới mẫu khác khiến sự phân bổ xác suất giảm theo biên độ. Nếu tính đến điều này thì người ta có thể nén bằng cách ghi mã vi sai giữa các mẫu hơn là bản thân chúng. Nếu các vi sai biên độ lớn ít xảy ra, các giá trị vi sai có thể được truyền với số bit nhỏ hơn số bit chứa trong mẫu ban đầu. Quá trình ghi mẫu này được gọi là PCM vi sai (DPCM) và là thành viên của một mã lớn hơn đó là mã dựđoán. Trong DPCM đơn giản, việc dự

báo một mẫu được dựa trên mẫu trước cộng với một số gia.

47 53 58 60 57 50 40 30 26 26 26 26 26 27 27 28 29 30 32 47 80 96 90 61 0 50 Khác biệt 6 5 2 -3 -7 -10 -10 -4 0 0 0 0 1 1 1 2 15 23 16 -6 -29 Làm tròn 4 bit 6 5 2 -3 -7 -7 -7 -7 -2 0 0 0 1 1 1 2 8 8 8 8 8 47 53 58 60 57 50 42 35 28 26 26 26 26 27 27 28 29 30 32 40 48 56 64 72 0 50 Quá tải Banđầu

Trong DPCM, khi một giá trị vi sai lớn xuất hiện, hệ thống DPCM sẽ bị quá tải (slope overload), có thể gây ra hiện tượng méo nhất thời khá nghiêm trọng, xem hình 5.4(b). Lưu ý là một vài giá trị vi sai đã được sửa để giúp hệ thống khôi phục lại từ hiện tượng quá tải. Điều này được thực hiện bằng kiến trúc dự đoán được miêu tả dưới đây.

Một dạng tiến bộ hơn của DPCM đã được phát triển nhằm cải thiện chỉ tiêu kỹ

thuật với các giá trị vi sai thay đổi, mối quan hệ giữa các bit của giá trị vi sai và vi sai thực mà chúng biểu diễn được điều chỉnh dựa vào mức độ các giá trị vi sai lớn tín hiệu. Ví dụ, một hệ thống tiêu biểu có thể có 4 bit cho các giá trị vi sai, nó có khả

năng cho phép 16 bước tái tạo khác nhau. Tuy nhiên, nếu các vi sai tín hiệu hoạt

động ở các mức thấp 16 bước tái tạo vi sai này có thểđược làm nhỏ đi. Nếu các vi sai trong tín hiệu tăng, một cơ cấu thích ứng sẽ tăng kích cỡ của các bước lên, vì vậy các mức 16 bước có thể truyền vi sai lớn. Đây được gọi là DPCM thích ứng (ADPCM) thường được sử dụng cho nén audio. ADPCM có thể thực hiện nén theo tỉ lệ 4:1 trên các tín hiệu audio nói chung. Vẫn có thể có một vài hiện tượng méo xảy ra khi cơ cấu thích ứng dịch chuyển kích cỡ của các bước thực hiện, nhưng khi tính đến cấp độ nén, điều này có thể chấp nhận được cho nhiều mục đích.

5.3.2.5 Mã dựđoán

Hình 5.5 là một sơ đồ khối minh họa cách thức DPCM được sử dụng phổ biến như cơ cấu ghi mã dựđoán. Khối bộ dự đoán thực hiện quá trình dựđoán mẫu tiếp theo từ mẫu hoặc các mẫu trước. Kết quả của bộ dựđoán sau đó sẽđược so sánh với mẫu tiếp theo và vi sai được truyền đi. Bên thu, sau đó có thể tái tạo lại các mẫu bằng cách sử dụng các giá trị vi sai và một modul bộ dựđoán giống bên phát.

Bộ lượng tử Bộ dựđoán Đầu vào + Đầu ra - Bộ dựđoán Đầu vào + Đầu ra + a) b) Hình 5.5. Mã dựđoán: a) mã hóa, b) giải mã

Đối với DPCM, bộ dự đoán chỉ đơn giản là so sánh mẫu trước với mẫu tiếp theo để tạo ra giá trị vi sai, giá trị vi sai sẽ được truyền đi. Tuy nhiên, người ta có thể xây dựng các bộ dựđoán phức tạp hơn, ví dụ như bộ dự đoán đường dốc đánh giá mẫu tiếp theo dựa vào đường dốc giữa hai mẫu trước…Sự thành công của phương pháp này phụ thuộc vào quá trình phát triển thuật toán dựđoán dùng để tính toán các đặc tính của dữ liệu nén.

5.3.2.6. Mã lời nói

Với đặc thù của điện thoại, rất nhiều phương pháp đã được phát triển đặc biệt cho việc ghi mã theo kỹ thuật số của giọng nói hay lời thoại. Tiêu chuẩn cho điện thoại là PCM tuyến tính với quá trình lượng tử hóa luật μ ở 8000 mẫu/giây và 8 bit/mẫu, cho tốc độ dữ liệu là 64 kbit/giây. Tuy nhiên, nhiều phương pháp nén tiên tiến đôi khi được sử dụng để giảm tốc độ dòng bit cho những mục đích riêng biệt. Phương pháp tốt nhất cho ghi mã lời nói là dựa vào lấy mẫu dải âm thoại của người cho hệ thống điện tử. Kỹ thuật này có thể hoạt động rất tốt với lời nói, nhưng nó không hiệu quả đối với các âm thanh nói chung. Các phương pháp này được trình bày trong lý thuyết điện thoại.

5.3.2.7. Mã chuyển đổi

Xử lý trực tiếp với các mẫu tín hiệu ban đầu không phải là cách tốt nhất để

biểu lộ sự dư thừa về tín hiệu có thể bị loại bỏ trong khi nén đặc biệt với video, vì

đây thường là tín hiệu hai hoặc ba chiều (ngang, dọc, và thời gian). Do vậy phải nhờ đến một cách khác gọi là chuyển đổi, là sự biểu diễn xen kẽ thông tin có thể thực hiện bằng quá trình xử lý toán học. Mọi chuyển đổi đều phải thực hiện cả quá trình ngược lại quá trình chuyển đổi được thực hiện trong quá trình giải nén.

Đối với các ảnh, việc coi khối pixel hai chiều là một đơn vị rất hữu ích. Một sự

lựa chọn đơn giản là lấy 8 pixel ở mỗi hướng, tổng số là 64 giá trị. Hãy quan sát về

mặt không gian, một khối 8×8 chỉ là một mảnh nhỏ của một hình, thậm chí còn không thể nhận biết được cái gì, nhưng bằng cách chuyển đổi nó sang miền tần số, các thành phần được quan sát thấy hết sức quan trọng đối với công đoạn tái tạo hoàn chỉnh. Điều này chủ yếu dựa trên nguyên tắc các tần số không gian cao khó nhìn thấy được hơn so với các tần số không gian thấp.

Sự chuyển đổi đầu tiên áp dụng lý thuyết này là chuyển đổi cosin rời rạc (DCT), có liên quan đến chuyển đổi Fourier thường được sử dụng để trích các thành phần tần số của một dạng sóng tùy ý. Chuyển đổi Fourier hoạt động trên những dạng sóng liên tục (analog) nhưng phiên bản hoạt động trên một nhóm các mẫu lấy từ một dạng sóng tương tự cũng có thể đáp ứng được. Sự chuyển đổi dựa vào các mẫu này đã cho ra tiền tố “rời rạc”. Chuyển đổi Fourier cho dù có rời rạc hay không thì cũng phát ra một tập hợp các thành phần tần số cosin và sin, có thểđược quan sát

giống như một tập hợp các thành phần tần số có các giá trị pha và biên độ. Có thể đơn giản hơn khi sự chuyển đổi Fourier rời rạc được thực hiện trên một tập hợp các mẫu dữ liệu tiếp theo các ảnh phản chiếu của chúng theo trục thời gian. Thành phần sin của chuyển đổi Fourier có thể hủy bỏ, chỉ để lại các thành phần cosin. Đây là chuyển đổi cosin rời rạc. Nó có đặc tính là một khối 8×8 của 64 mẫu được chuyển thành một khối 8×8 của thành phần cosin biểu thị tần số không gian ở hai chiều. Xét về mặt toán học, nó có thểđược biểu thị dưới dạng:

( )= ∑∑ ( ) ⎢⎣⎡( + ) Π⎥⎦⎤ ⎢⎣⎡( + ) ⎥⎦⎤ = = 16 1 2 cos 16 1 2 cos , ) ( ) ( 4 1 , 7 0 7 0 π v y u x y x f v C u C v u F x y (5.1) Trong đó: là các chỉ số trong khối 8x8 của pixel.

u và v là là các chỉ số trong khối 8×8 của các hệ sốđầu ra

Một phần của tài liệu Bài giảng Xử lý Audio và Video doc (Trang 136 - 145)

Tải bản đầy đủ (PDF)

(156 trang)