1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kỹ thuật lượng tử hóa vector (VQ) phương pháp xây dựng codebook

22 2,9K 27

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 1,2 MB

Nội dung

Một trong các kỹ thuật lượng tử hóa thường được sử dụng trong nén ảnh hiện naylà kỹ thuật lượng tử hóa vector (VQ). Khác với kỹ thuật lượng tử hóa thông thường, VQ không lượng tử từng giá trị tín hiệu riêng biệt mà lượng tử từng nhóm giá trị tín hiệu, nhờ đó VQ không chỉ giúp nén dữ liệu tốt hơn mà còn giữ lại được phần nào mối liên hệ giữacác giá trị gần nhau của tín hiệu ban đầu. Chính vì lý do này mà hiện nay, VQ đang đượcsử dụng trong rất nhiều trong các kỹ thuật nén ảnh.

Trang 1

TRƯỜ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

Giáo viên hướng dẫn : PGS.TS NGUYỄN THỊ HOÀNG LAN

Trang 3

LỜI NÓI ĐẦU

Các dữ liệu đa phương tiện như: text, audio, graphic, animation, image, motion,video có đặc điểm là: đa dạng từ nhiều nguồn phương tiện, có dung lượng tin lớn,nhiều dạng chuẩn khác nhau và có thể có hoặc không phụ thuộc vào thời gian Do vậy, đểlưu trữ, xử lý, tuyền tải một cách đơn giản và hiệu quả với những dữ liệu này chúng tathường chuyển chúng sang dạng tín hiệu số (số hóa) Một trong hai công đoạn quan trọngnhất của quá trình số hóa là lượng tử hóa Lượng tử hóa là quá trình rời rạc hóa tín hiệu

về mặt biên độ sau khi đã rời rạc về thời gian (lấy mẫu) bằng cách xấp xỉ giá trị tín hiệuban đầu về một giá trị đơn giản hơn đã được lựa chọn từ trước Lượng tử hóa giúp á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ó tác dụng nén dữ liệu, tuynhiên cùng với đó nó cũng gây ra sự sai số so với tín hiệu ban đầu gọi là sai số lượng tử

Một trong các kỹ thuật lượng tử hóa thường được sử dụng trong nén ảnh hiện nay

là kỹ thuật lượng tử hóa vector (VQ) Khác với kỹ thuật lượng tử hóa thông thường, VQkhông lượng tử từng giá trị tín hiệu riêng biệt mà lượng tử từng nhóm giá trị tín hiệu, nhờ

đó VQ không chỉ giúp nén dữ liệu tốt hơn mà còn giữ lại được phần nào mối liên hệ giữacác giá trị gần nhau của tín hiệu ban đầu Chính vì lý do này mà hiện nay, VQ đang được

sử dụng trong rất nhiều trong các kỹ thuật nén ảnh Trong khuôn khổ đề tài này, do nhiềuhạn chế về kiến thức và tài liệu tham khảo, chúng em xin chỉ trình bày những vấn đề cơbản nhất của VQ, cũng như những ứng dụng rộng rãi nhất của VQ trong thực tế

Trang 4

PHÂN CÔNG CÔNG VIỆC

Tổng Quan và quá trình lượng tử hóa vector Cấn Việt Anh

Các phương pháp xây dựng codebook Thân Xuân Quỳnh

Ứng dụng thử nghiệm VQ vào nén ảnh Cấn Việt Anh + Thân Xuân Quỳnh

Trang 5

I TÌM HIỂU CHUNG VỀ KỸ THUẬT VQ

1.1 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 gianbằ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 takhô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

Trang 6

Lượng tử hóa được chia làm hai loại :

- 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àybao 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ínhiệ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” datacompression) với mục đích quản lí độ lệch trong giới hạn của tốc độ bit được hỗ trợ bởimộ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ể đượcquả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àntoà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 (theamount 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áctrong 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ố)

1.2 Lượng tử hóa vector (VQ)

a 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 âmthanh, nhận dạng âm thanh… Trước đây việc thiết kế một bộ lượng tử hóa vector đượcxem 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

Trang 7

Phép lượng tử hóa vector là một phép ánh xạ các vector k chiều trong không gianvector 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áccodeword còn lại tạo thành một vùng (Vi) gọi là vùng được mã hóa (encoding regionshay voronoi region):

Trang 8

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 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)

Trang 9

b 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 VQthì mục đích là phải chọn ra được các codevector sao cho độ lệch trung bình giữacodevector 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ộttí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ạidà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ộctính của nguồn và giả thiết rằng các vector nguồn có k chiều

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:

Trang 10

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áccodevector khác phải là nhỏ nhất

- Centroid Condition:

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ẫucủa biểu thức trên luôn khác 0)

c Quá trình lượng tử hóa vector

2 giai đoạn(2 pha):

 Giai đoạn 1: Huấn luyện (trainning)

 Giai đoạn 2: Thực hiện mã hóa và giải mã

o 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}

Trang 11

• 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ã:

 Q(xm) = cn Thay giá trị của xm bằng chỉ số của cn trong codebook

o Giải mã: Từ chỉ số của cn, khi tái tạo dữ liệu X ta đặt giá trị của Cn vào vịtrí tương ứng của xm

II PHƯƠNG PHÁP XÂY DỰNG CODEBOOK

2.1 Giới thiệu

Nén ảnh sử dụng VQ được thực hiện bằng cách so sánh các dữ liệu trong ảnh banđầu (gọi là các vector training) với các giá trị trong codebook Kết quả là sẽ đưa ra chỉ số

Trang 12

của codeword có sự sai số bé nhất so với dữ liệu ảnh ban đầu Chỉ số này sẽ được sửdụng thay cho giá trị cần lượng tử Điều này làm giảm không gian lưu trữ và làm tăng tỉ

số nén Vấn đề ở đây cần tạo ra được codebook với các codevector sao cho quá trìnhlượng tử hóa trong nén ảnh có sai số tối thiểu

Ta có thuật toán rất mạnh mẽ để giải quyết vấn đề ở trên là Lloyd, nhưng vấn đềkhó khăn và quan trọng nhất của thuật toán Lloy là làm sao chọn ra được N vector khởiđầu, điều này đã được giải quyết bởi thuật toán mở rộng và cụ thể hơn là thuật toán LBG

Ví dụ từ ảnh nguồn ban đầu với kích thước (512x512),

Ta phân chia ảnh thành các block nhỏ có kích thước (4x4) ta sẽ được 16384 block.Mỗi block sẽ được ánh xạ sang miền không gian 16 chiều tương ứng với 1 vector (1x16)gọi là training vector Ta muốn lấy ra codebook có kích thước (256x16)

Bảng 1:Training vector (16384x16)

Trang 13

Bảng 2: Codebook (256x16)

2.2 Xây dựng codebook bằng thuật toán LBG

Từ tập training vector ta xây dựng codebook:

Thuật toán này xuất phát với một vector mã ban đầu và nhân đôi dần lên cho đếnkhi đủ số lượng vector mã cần thiết, trong quá trình nhân đôi đó các vector mã được sắpxếp lại theo thuật toán Lloyd, sau đây là các bước cụ thể của thuật toán:

1 Cho T, chọn > 0 rất nhỏ nhất định, (ví dụ = 0,001 )

2 Đặt N = 1 và tính:

Trang 14

3 Tách: Cho i = 1,2, ,N đặt

Và N = 2N.

4 Lặp: = Đặt chỉ số lặp i = 0.

a Cho m = 1,2, M, tìm giá trị nhỏ nhất của

Với n = 1, 2, N, n* là chỉ số mà tại đó đạt được giá trị nhỏ nhất đang xét

Đặt = là giá trị cuối cùng của vector mã.

5 Lặp lại các bước 3, 4 cho đến khi đạt được số lượng vector mã mong muốn.

Trang 15

2.3 Sơ đồ thuật toán và nhận xét

a Sơ đồ thuật toán

b Nhận xét:

Mang đặc điểm chung của kỹ thuật lượng tử hoá, VQ đã thực hiện ánh xạ từ khônggian lớn dữ liệu ban đầu (tập trainning) sang một không gian nhỏ hơn rất nhiều(codebook) Việc lựa chọn kích thước codebook (cũng chính là số bit/chiều) trong VQ sẽquyết định độ nén của dữ liệu Ngoài ra, việc chỉ truyền đi các chỉ số (index) củacodevector trong codebook thay vì truyền đi các giá trị thực tế của dữ liệu, VQ đã giúplàm giảm không gian lưu trữ, qua đó làm tăng cường độ nén dữ liệu Tuy nhiên, độ néncao đồng nghĩa với việc là thông tin sau khi sử dụng VQ sẽ có sai số so với dữ liệu banđầu lớn hơn

Ngoài ra, với đặc điểm riêng của mình là lượng tử hoá theo từng khối (block) dữ liệu,

VQ còn giữ lại được phần nào mối liên quan giữa các dữ liệu ban đầu (về vị trí, giátrị…)

Vấn đề lớn nhất trong kỹ thuật VQ là việc xây dựng được một codebook phù hợp đểđạt hiệu quả nén cao và giảm sai số lượng tử Có nhiều phương pháp để xây dựngcodebook: random, median cut, split Trong đó, phương pháp nào càng xây dựng đượccodebook phù hợp thì càng phức tạp Hiện nay, phương pháp split codebook với giải

Trang 16

thuật LBG đang được sử dụng rộng rãi nhất Nó không quá phức tạp trong khi vẫn đạtđược hiệu quả nén cao, sai số lượng tử chấp nhận được.

Phương pháp phân phối ngẫu nhiên – LBG :

+ Có hiệu quả nén cao

+ Tuy nhiên yêu cầu tính toán còn phức tạp và tốn tài nguyên để xử lý dữ liệu

Trang 17

o Tập vector huấn luyện: toàn bộ tập vector nguồn.

o Các tham số khác có thể thay đổi linh hoạt theo yêu cầu người dùng

Trang 18

o Mã hóa – hàm vqencode(x, cbook, s): x là a trận số của ảnh đầu vào, cbook

là ma trận các vector mã, s là tham số chỉ ra độ lớn của khối điểm ảnh.Chia nhỏ ma trận số của ảnh theo s, mỗi block đó sẽ so sánh với codebook

từ đó rút ra ma trận chỉ số index tương ứng với code vector

o Giải mã – vqdecode(): đầu vào là file đã nén và file codebook., hàm này sẽtái tạo lại ma trận ban đầu bằng các vector mã tương ứng với chỉ số indexđược lưu rồi hiển thị ra màn hình

c Đánh giá kết quả:

o Hàm psnr(x,y): x là ma trận số của ảnh đầu vào, y là ma trận số của ảnh saugiải nén Hàm này trả về một giá trị là tỉ số tín hiệu cực đại trên nhiễu (peaksignal to noise ratio), cho ta biết chất lượng của chương trình nén

o Hàm ratio(): tính tỉ số giữa ảnh đầu vào và file nén Trả về tỉ số nén

3.2 Chạy chương trình và đánh giá kết quả

Ta sẽ chạy thử chương trình với các tham số đầu vào thay đổi: kích thước khối điểmảnh và số lượng vector mã trong codebook

Sử dụng bức ảnh gốc lana.bmp, có kích thước 256*256

Lần thứ nhất: lấy tham số đầu vào như sau:

Khối điểm ảnh tạo thành một vector nguồn: 4*4*3

Trang 19

Lần thứ hai: lấy tham số đầu vào như sau:

Khối điểm ảnh tạo thành một vector nguồn: 2*2*3

Số lượng vector mã: 64

Thu được: PSNR = 28.6109

Tỉ số nén: 15.9974

 Nhận xét: Chất lượng ảnh giải nén tăng lên, nhưng tỉ số nén giảm xuống

Lần thứ ba: lấy tham số đầu vào như sau:

Khối điểm ảnh tạo thành một vector nguồn: 4*4*3

Số lượng vector mã: 256

Trang 20

Thu được: PSNR = 27.7434.

Tỉ số nén: 47.9766

 Nhận xét: So với lần thứ nhất, chất lượng ảnh đã tăng lên đáng kể, nhưng tỉ số néngiảm xuống thấp hơn, nhưng không quá thấp như lần thứ hai

chiều) hoặc tăng số vector mã trong codebook, chất lượng ảnh sẽ tăng lên nhưng tỉ số nén

sẽ giảm đi và ngược lại

Trang 21

KẾT LUẬN

Dữ liệu lưu trữ và truyền tải trên mạng máy tính ngày càng gia tăng, đặc biệt là dữliệu hình ảnh và video, với ưu điểm về sự linh hoạt của mình mà phương pháp lượng tửhóa vector đang được sử dụng nhiều trong thực tế (ví dụ Twin vector quantization- mộtdạng cải tiến của VQ trong MPEG-4) và sẽ tiếp tục được cải tiến và sử dụng trong tươnglai

Trên đây chúng em mới chỉ nói đến những vấn đề chung nhất về VQ, để có thểnghiên cứu sâu về VQ, tìm hiểu sâu các ứng dụng của VQ trong thực tế cần có thêmnhiều thời gian, nhiều kiến thức lý thuyết cũng như thực hành Hi vọng, khi được nghiêncứu thêm về các kiến thức này, chúng em sẽ có thể trình bày cụ thể, chi tiết hơn về VQ

Do còn nhiều hạn chế về kiến thức lý thuyết, tài liệu tham nên đề tài của chúng emvẫn còn nhiều thiếu sót, rất mong thầy và các bạn đóng góp ý kiến để hoàn thiện đề tài.Một lần nữa chúng em xin gửi lời cảm ơn đến cô giáo Nguyễn Thị Hoàng Lan và các bạntrong lớp đã giúp đỡ chúng em hoàn thành đề tài này

Ngày đăng: 07/04/2016, 22:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w