Tải bản đầy đủ (.docx) (22 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (684.64 KB, 22 trang )

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
Nhóm sinh viên:
1.
2.

Thân Xuân Quỳnh
Cấn Việt Anh

Hà Nội, tháng 5 năm 2015

Mục Lục

20112004
20114627



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 ta
thườ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ọng
nhấ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ệu
ban đầ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, tuy
nhiê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, 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ữa
cá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ều
hạ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ế.


PHÂN CÔNG CÔNG VIỆC
Công việc

Sinh viên thực hiện

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



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 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 :
- 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ố).

1.2.
a.

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

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


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

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:

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


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

o Mã hóa:
 Không gian dữ liệu nguồn X ( ngoài tập huấn luyện còn nhiều vector
dữ liệu khác)
 Với mỗi vector xm, tìm code-vector cn thỏa mãn điều kiện khoảng
cách gần nhất từ xm đến cn
 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ố


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ình
lượ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)


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 đến
khi đủ số lượng vector mã cần thiết, trong quá trình nhân đôi đó các vector mã được sắp
xế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:




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

Q(Xm)= .

b. Cho n = 1, 2,..., N. Ta cập nhật các vector mã.

c. Đặt i = i + 1
d. Tính:

e. Nếu:

>, quay lại bước 4a.

f. Đặt = . Cho n = 1, 2, .... , N

Đặ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.


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ông
gian 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ủa
codevector trong codebook thay vì truyền đi các giá trị thực tế của dữ liệu, VQ đã giúp
là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én
cao đồ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ựng
codebook: random, median cut, split.... Trong đó, phương pháp nào càng xây dựng được
codebook phù hợp thì càng phức tạp. Hiện nay, phương pháp split codebook với giải


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.


III. ÁP DỤNG VÀO NÉN ẢNH
3.1


Thiết kế chương trình:
Đặc trưng: tốc độ nén chậm (do bước tạo codebook), tốc độ giải nén nhanh, linh hoạt
trong việc lựa chọn thuật toán tạo codebook và các tham số đầu vào.
a. Các vấn đề:
• Công cụ sử dụng: matlab.
• Dữ liệu ảnh trước mã hóa: ảnh số.
• Dữ liệu sau nén:
o File ảnh nén: nhị phân.
o Codebook: nhị phân.
• Dữ liệu ảnh sau giải nén: dựa vào file ảnh nén và codebook, giải nén ta được
ảnh số có dung lượng bằng với ảnh gốc.
• Phương pháp xây dựng codebook: phương pháp tạo codebook phân phối ngẫu
nhiên cụ thể sử dụng thuật toán LBG.
• Lựa chọn tham số:
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.
b. Xử lý dữ liệu
Sơ đồ chương trình:

o Dữ liệu ảnh vào(ảnh xám 2 chiều, ảnh màu BMP 3 chiều) được chuyển
thành dạng ma trận số, mỗi phần tử ma trận từ 0  256.
o Mỗi vector tương ứng với một khối các điểm ảnh gần nhau (2*2, 4*4,
8*8,... )
o Biến đổi ma trận ban đầu thành một ma trận mới sao cho mỗi vector k chiều
được biểu diễn dưới dạng một ma trận 1 hàng N cột.
o Tạo codebook – hàm makecb(x, s, cbookleng): x là ma trận số của ảnh đầu
vào, s là tham số chỉ ra độ lớn của khối điểm ảnh (ví dụ khối 4x4 thì s =4 ),
cbookleng là số vector mã trong codebook.



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 sau
giả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 (peak
signal 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.
Số lượng vector mã: 64.

Thu được: PSNR = 25.5825.
Tỉ số nén: 63.9584.
 Nhận xét: chất lượng ảnh giải nén khá kém, tỉ số nén cao.


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.


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én
giảm xuống thấp hơn, nhưng không quá thấp như lần thứ hai.

Nhận xét chung: thực nghiệm cho thấy khi giảm độ lớn của vector nguồn (số
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.


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ột
dạ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ương
lai.
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êm
nhiề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ên
cứ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 em
vẫ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ạn
trong lớp đã giúp đỡ chúng em hoàn thành đề tài này


TÀI LIỆU THAM KHẢO
[1] Bài giảng môn Xử lý dữ liệu đa phương tiện – PGS.TS Nguyễn Thị Hoàng
Lan.
[2] Vector quantization: www.data-compression.com/vq.shtml
[3] Digital audio and video compression – Stephen J.Solari
[4] Image Compression with Vector Quantization- Ivan Assen Ivanov
[5] “An algorithm for Vector Quantizer Design”, IEEE Transactions on
Communications – Y.Linde, a.Buzo, R. M. Gray.



×