Lượng tử hoá vecto trong nén ảnh

19 1.1K 14
Lượng tử hoá vecto trong nén ảnh

Đ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

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: XỬ LÝ DỮ LIỆU ĐA PHƢƠNG TIỆN Đề tài: Lƣợng tử hóa vector(Vector Quantization VQ) và áp dụng trong nén ảnh GV phụ trách: PGS.TS. Nguyên Thị Hoàng Lan Sinh viên thực hiện: Bùi Tuấn Sơn shsv: 20092230 Lê Hữu Thành shhv: 20092416 Hoàng Doãn Quân shsv: 20093579 Trần Bảo Long shsv: 20091667 Đỗ Quang Minh shsv: 20091772 Hà Nội 5/2012 2 Mục lục Lời nói đầu 3 Phân công 4 I.Tổng quan 5 1. giới thiệu 5 2. một số ví dụ trực quan đơn giản 5 1. Mô hình toán học tổng quát………………… 6 II.Quá trình lƣợng tử hóa vector… 8 1. Huấn luyện 8 2. Thực hiện mã hóa và giải mã……………… 9 III.Các phƣơng pháp xây dựng codebook 10 1. Phương pháp phân phối ngẫu nhiên 10 2. Phương pháp phân phối đều……………………………………………… 12 3. So sánh 2 phương pháp… ……………………………………………… 13 III.Áp dụng vào nén ảnh 14 1. Thiết kế chương trình…………… 14 1. Chạy chương trình và đánh giá kết quả 16 Kết luận 19 Tài liệu tham khảo 19 3 Lời nói đầu: Việc lưu trữ và truyền dữ liệu ảnh số ngày càng trở nên quan trọng, tuy nhiên dung lượng một bức ảnh số ở dạng chưa nén là rất cao và cơ sở hạ tầng truyền thông còn nhiều hạn chế, để việc lưu trữ và truyền dữ liệu cần phải nén ảnh nhằm giảm dung lượng nhưng vẫn phải đáp ứng cảm nhận thị giác của con người. Lượng tử hóa vector ( vector quantization) là một phương pháp nén dữ liệu có nhiều ứng dụng trong thực tế, trong báo cáo này chúng em sẽ trình bày các vấn đề cơ bản về lượng tử hóa vector, với trọng tâm là ứng dụng của nó trong nén ảnh số. 4 Phân công:  I.Tổng Quan: Bùi Tuấn Sơn  II. Quá trình lượng tử hóa vector: Lê Hữu Thành  III. xây dựng codebook: Hoàng Doãn Quân  IV.Ứng dụng vào nén ảnh: 1. Thiết kế chương trình: Trần Bảo Long 2. Viết code chính, chạy chương trình và đánh giá kết quả: Đỗ Quang Minh 5 I.Tổng quan 1.Giới thiệu Lượng tử hóa vector (vector quantization) là một phương pháp nén dữ liệu có tổn hao. Năm 1980, Y. Linde, A. Buzo, và R. M. Gray, (LBG) đưa ra giải thuật lượng tử hóa vector dựa trên tập huấn luyện. Sau này phương pháp lượng tử hóa vector được cải tiến và áp dụng nhiều hơn. 2.Một số ví dụ trực quan đơn giản: Không gian một chiều: Xét trên phần trục tọa độ từ -4 đến 4, chọn ra các điểm mẫu -3,-1,1,3 được đánh số dạng nhị phân tương ứng: 00,01,10,11. Các điểm đầu vào trong khoảng -4 đến -2 sẽ được làm tròn về -3, các điểm từ -2 đến 0 sẽ được làm tròn về -1, các điểm từ 0 đến 2 sẽ được làm tròn về 1, các điểm từ 1 đến 4 sẽ được làm tròn về 3. Như vậy ta sẽ tiết kiệm được không gian bộ nhớ khi lưu trữ và đàu ra sẽ là các giá trị gần đúng thay vì giá trị ban đầu. Không gian hai chiều 6 Trên một phần mặt phẳng, chọn ra 16 điểm như trong hình. Mỗi điểm ban đầu trong mặt phẳng là một vector 2 chiều,, tùy vào vùng mà nó nằm, điểm đó sẽ được làm tròn về một trong 16 điểm này và được mã hóa bởi 4 bit. tương tự như trường hợp một chiều, ta cũng sẽ tiết kiệm được không gian lưu trữ và dữ liệu đàu ra sẽ là các giá trị gần đúng so với ban đầu. 3. Mô hình toán học tổng quát:  Từ tập dữ liệu nguồn ban đầu, chọn ra tập dữ liệu huấn luyện gồm M vector  Mỗi vector huấn luyện gồm k chiều:  Codebook (C) là tập các vector mã, mỗi vector mã là một điểm mà một số vector nguồn được làm tròn về nó trong quá trình nén, trong 2 ví dụ ở trên codebook chinh là tập các điểm màu đỏ. Codebook gồm N vector: 7  Mỗi vector code book k chiều:  Không gian được phân hoạch thành N vùng:  Mỗi vector nguồn xác định vùng của nó bằng hàm Q:  Tham số quan trong để đánh giá hiệu quả và điểu chỉnh thuật toán nén là độ lệch trung bình D ave được tính theo công thức:  Vấn đề đặt ra: cho T và N, tìm C và P để D ave min 8 II. 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ã 1.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= {x 1, x 2 , … , x i } với x i 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={x 1 , … , x n }  Theo thuật toán huấn luyên , tạo codebook : • C={C1,C2,….C N } với Ci = {C i1 , C i2 , …, C ik } (code-vector) • Phân hoạch P chia tập T thành N tập con: • P={S1, S2, … , S N } 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 c n hơn các code- vector khác  Điều kiện trọng tâm: c n là trọng tâm của phân hoạch S i 9 2. thực hiện mã hóa và giải mã Sơ đồ mã hóa và giải mã:  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 x m , tìm code-vector c n thỏa mãn điều kiện khoảng cách gần nhất từ x m đến c n  Q(x m ) = c n  Thay giá trị của x m bằng chỉ số của c n trong codebook  Giải mã:  Từ chỉ số của c n , 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 x m 10 III. Các Phƣơng pháp xây dựng codebook 2 phƣơng pháp chính:  Phân phối ngẫu nhiên: xây dựng vector mã phân phối ngẫu nhiên theo tiêu chí tối ưu  Phân phối đều: xây dựng các vector mã phân phối đều 1.Phƣơng pháp phân phối ngẫu nhiên Trƣờng hợp đơn giản nhất với vector một chiều, thuật toán cơ bản Lloyd:  T={ti} i=[1,…M] vector huấn luyện  Thuật toán tổng quát:  Khởi đầu chọn ra tập các vector mã C={C1,C2,….C N } ,  Lặp: • Dựa vào tập C, Phân hoạch P chia tập T thành N tập con: o P={S1, S2, … , SN} • Với mỗi Ci, có l vector huấn luyện nằm trong phân hoạch Si chứa Ci, tìm Ci mới theo công thức: Ci(new)= (t1(i) +…+tp(i))/l o Ta thu đươc tập codebook mới C={C1,C2,….C N } Bước lặp diễn ra cho đến khi codebook tìm được thỏa mãn yêu câu nào đó cho trước. Lloyd có thể dễ dàng mở rộng cho vector nhiều chiều với các bước tương tự như trên. Vấn đề quan trọng nhất của thuật toán Lloyds là làm thế nào để chọn ra N vector khởi đầu, điều này được giải quyết bởi các thuật toán khác mạnh mẽ và cụ thể hơn. LBG : thuật toán đƣơc Linde, Buzo và Gray đƣa ra từ năm 1980, có thể coi đây là một sự mở rộng của thuật toán Lloyds: 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 Lloys, sau đây là cac bước cụ thể của thuật toán Lloyds: [...]... số vector mã trong code book so với lần thứ nhất  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 ảnh sau giải nén:  PSNR = 28.6109  Tỉ số nén = 15.9974 Nhận xét: So với lần thứ nhất, chất lượng ảnh đã tăng lên nhiều, đổi lại tỉ số nén giảm xuống thấp hơn hẳn Lần thứ 3: giữ nguyên kích thước khối điểm ảnh (giữ nguyên số chiêu vector nguồn), tăng số vector mã trong. .. chương trình nén Sử dụng bức ảnh gốc: lena.bmp, kích thước 256*256 Lần thứ nhất: lấy tham số đầu vào làm mốc cho các lần chạy 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 ảnh sau giải nén: 16  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ứ 2: giảm kích thước khối điểm ảnh ( giảm số chiêu vector nguồn),... mã trong codebook, chất lượng ảnh nén sẽ tăng lên nhưng tỉ số nén sẽ giảm đi và ngược lại 18 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 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 lượng tử hóa vector dùng trong. .. ánh xạ các vector nguồn vào không gian này  yi= L*xi (ánh xạ vector xi trong không gian X thành vector yi trong không gian V)  xi = L-1* yi(ánh xạ vector yi trong không gian Y thành vector xi trong không gian X) Các vector mã trong không gian X khi được ánh xạ sang không gian Y sẽ nằm tại các điểm nguyên (ta kí hiệu ci trong X ánh xạ sang pi trong Y) Mỗi vùng Si chứa ci được phân hoạch trong không... chất lượng của chương trình nén ảnh, giá trị này càng cao càng tốt  Hàm ratio(): tính tỉ số giữa ảnh đầu vào và file nén để trả về tỉ số nén 15 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 thay đổi : kích thước khối điểm ảnh( dẫn đến thay đổi số chiều vector) và số lượng vector mã trong codebook, từ đó ra ảnh hưởng của các tham số đầu vào đó tới chất lượng. .. trị dữ liệu trong một khối điểm ảnh: chọn block 2*2*3,4*4*3,… Từ đó chọn được số chiều vector dữ liệu( ví dụ nếu chọn nén theo block 2*2*3 thì vector dữ liệu sẽ có 12 chiều  Số lượng vector mã trong codebook 14 Quá trình xử lý dữ liệu: Sơ đồ chương trình:  Dữ liệu ảnh được chuyển thành dạng ma trận số ( ảnh xám là 2 chiều, ảnh màu BMP là 3 chiều), mỗi phần tử ma trận từ 0->256  Mỗi vector tương... điểm ảnh tạo thành một vector nguồn: 4*4*3  Số lượng vector mã: 256 17 Thu được ảnh sau giải nén:  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ể, đổi lại tỉ số nén giảm xuống thấp hơn nhưng không quá thấp như lần thứ 2 Nhận xét chung: Thực nghiệm cho kết quả phù hợp với lý thuyết, khi giảm độ lớn (số chiều) của vector nguồn hoặc tăng số vector... phù hợp nếu các vector nguồn trải đều trong một phần không gian 13 IV Áp dụng vào nén ảnh 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, đặc biệt rất 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 Các vấn đề cơ bả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)... 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  Chọn phương pháp tạo codebook: do dữ liệu ảnh không phân phối đều nên phải lựa chọn phương pháp tạo codebook phân phối ngẫu nhiên theo tiêu chí tối ưu, cụ thể trong chương trình này sẽ sử dung LBG  Lựa chọn tham số: o Tâp vector huấn luyên: chọn toàn bộ tập vector nguồn o Các... 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  Giải mã- hà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ố được lưu rồi xuất ra màn hình Đánh giá kết quả: Đánh giá kết quả bằng 2 hàm:  Hàm psnr(x,y) :x là ma trận số cảu ảnh đầu vào, y là ma trận só cảu ảnh sau giải nén . điểm ảnh tạo thành một vector nguồn: 4*4*3  Số lượng vector mã: 64 Thu được ảnh sau giải nén: 17  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. ả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 người. Lượng tử hóa vector ( vector quantization) là một phương pháp nén dữ liệu có nhiều ứng dụng trong thực tế, trong báo cáo này chúng em sẽ trình bày các vấn đề cơ bản về lượng tử hóa vector,

Ngày đăng: 01/06/2014, 22:58

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan