Tải bản đầy đủ (.pdf) (11 trang)

Báo cáo bài tập lớn ứng dụng svd vào nén dữ liệu

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 (368.82 KB, 11 trang )

lOMoARcPSD|18034504

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG

BÁO CÁO BÀI TẬP LỚN

ỨNG DỤNG SVD VÀO NÉN DỮ LIỆU

Mơn
GVHD
Lớp
Nhóm

Đại số tuyến tính
Thầy Nguyễn Hữu
Hiệp
L14
4


lOMoARcPSD|18034504

DANH SÁCH THÀNH VIÊN NHÓM
STT
1
2
3
4
5


6
7

MSSV
2111203
2111401
2111454
2111472
2111507
2111578
2111654

HỌ TÊN
Nguyễn Thanh Hiền
Lưu Chấn Hưng
Nguyễn Hoàng Duy Khang
Lê Thanh Duy Khanh
Nguyễn Quang Khải
Lương Trung Kiên
Võ Trần Nhã Linh


lOMoARcPSD|18034504

LỜI NĨI ĐẦU
Mục đích của việc nén ảnh số là mã hoá các dữ liệu ảnh về một
dạng thu gọn, tối thiểu hoá cả số bit dùng để biểu diễn ảnh lẫn các sai
khác do quá trình nén gây ra. Tầm quan trọng của vấn đề nén ảnh có
thể thấy rõ qua các số liệu cụ thể: với một bức ảnh trắng đen kích
thước 512x512 pixels, mỗi pixel được biểu diễn bởi 8 bits (biểu diễn

một trong 256 giá trị mức xám), cần khoảng 256 Kbytes dữ liệu. Với
ảnh màu cần gấp ba lần con số này. Với các dữ liệu video, cần 25
frames trên một giây, như vậy một đoạn video chỉ 30s phải cần đến
540MB dữ liệu, một con số quá lớn. Do đó vấn đề nén ảnh là hết sức
cần thiết.
Nói chung, các phương pháp nén ảnh chủ yếu được phân thành 2
nhóm: nhóm khơng tổn hao và nhóm có tổn hao. Các phương pháp nén
ảnh khơng tổn hao cho phép biểu diễn ảnh với chất lượng hoàn toàn
ngang bằng với ảnh gốc. Các phương pháp này dựa trên các giải thuật
nén được áp dụng cho tất cả các đối tượng dữ liệu nói chung chứ khơng
chỉ riêng dữ liệu ảnh, ví dụ mã Hu昀昀man, mã số học, mã Golomb, ... Tuy
nhiên, các phương pháp này không lợi dụng được những đặc tính riêng
của dữ liệu ảnh và tỷ lệ nén rất thấp. Do đó, trong thực tế, các phương
pháp nén có tổn hao là các phương pháp được sử dụng chủ yếu. Với
các phương pháp này, ln có sự đánh đổi giữa dung lượng ảnh với
chất lượng ảnh.


lOMoARcPSD|18034504

MỤC LỤC
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT...............................................................5
1.1 Giới thiệu chung về phương pháp phân tích suy biến SVD..........5
1.2 Mục tiêu.......................................................................................5
1.3 Cơ sở tốn học.............................................................................5
1.3.1 Định nghĩa................................................................................5
1.3.2 Cách phân tích SVD của một ma trận......................................6
1.3.3 Ví dụ.........................................................................................6
CHƯƠNG 2: ỨNG DỤNG SVD TRONG NÉN ẢNH.....................................7
2.1 Hướng giải quyết vấn đề..............................................................7

2.2 Các lệnh Matlab được sử dụng.....................................................8
2.3 Đoạn code Matlab........................................................................8
2.4 Ví dụ...............................................................................................8

Downloaded by vu ga ()


lOMoARcPSD|18034504

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Giới thiệu chung về phương pháp phân tích suy biến
SVD
Phương pháp phân tích suy biến ( singular value decomposition)
được viết tắt là SVD là một trong những phương pháp thuộc nhóm
matrix factorization được phát triển lần đầu bởi những nhà hình học
vi phân. Ban đầu mục đích của phương pháp này là tìm ra một phép
xoay khơng gian sao cho tích vơ hướng của các vector không thay
đổi. Từ mối liên hệ này khái niệm về ma trận trực giao đã hình thành
để tạo ra các phép xoay đặc biệt. Phương pháp SVD đã được phát
triển dựa trên những tính chất của ma trận trực giao và ma trận
đường chéo để tìm ra một ma trận xấp xỉ với ma trận gốc. Phương
pháp này sau đó đã được ứng dụng rộng rãi trong các lĩnh vực như
hình học vi phân, hồi qui tuyến tính, xử lý hình ảnh, clustering, các
thuật tốn nèn và giảm chiều dữ liệu
1.2 Mục tiêu
Phương pháp SVD sẽ tìm ra một lớp các ma trận xấp xỉ tốt nhất với
một ma trận cho trước dựa trên khoảng cách norm Frobenios giữa 2
ma trận. Người ta đã chứng minh được rằng ma trận xấp xỉ tốt nhất
được biểu diễn dưới dạng tích của 3 ma trận rất đặc biệt bao gồm
2 ma trận trực giao (orthogonal matrix) và 1 ma trận đường

chéo (diagonal matrix). Quá trình nhân ma trận thực chất là quá
trình biến đổi các điểm dữ liệu của ma trận gốc thông qua những
phép xoay trục (rotation) và phép thay đổi độ lớn (scaling) và từ đó
tạo ra những điểm dữ liệu mới trong không gian mới. Điều đặc biệt
của ma trận đường chéo đó là các phần tử của nó chính là những giá
trị riêng của ma trận gốc. Những điểm dữ liệu trong khơng gian mới
có thể giữ được 100% thông tin ban đầu hoặc chỉ giữ một phần lớn
thông tin của dữ liệu ban đầu thông qua các phép truncate SVD.

Downloaded by vu ga ()


lOMoARcPSD|18034504

Bằng cách sắp xếp các trị riêng theo thứ tự giảm dần trên đường
chéo chính thuật tốn SVD có thể thu được ma trận xấp xỉ tốt nhất
mà vẫn đảm bảo giảm được hạng của ma trận sau biến đổi và kích
thước các ma trận nhân tử nằm trong giới hạn cho phép. Do đó nó
tiết kiệm được thời gian và chi phí tính tốn và đồng thời cũng tìm ra
được một giá trị dự báo cho ma trận gốc với mức độ chính xác cao.
1.3 Cơ sở tốn học
1.3.1 Định nghĩa
Mọi ma trận thực đều có thể phân tích được thành:

A: Ma trận đầu vào gồm các số thực, kích thước m x n
Q: Ma trận đơn vị thành phần trực giao, kích thước m x m

P: Ma trận đơn vị thành phần trực giao, kích thước n x n

: Có D là ma trận chéo gồm các trị riêng của M sắp xếp giảm dần,

kích thước m x n

1.3.2 Cách phân tích SVD của một ma trận
Nhân cho ma trận chuyển vị hoặc nhân với

Các cột của Q là các vecto riêng của AAT và σ12 ; σ22 ;⋯; σr2 là các trị
riêng khác 0 của AAT
Các cột của P là các vecto riêng của ATA và σ12 ; σ22 ;⋯; σr2 cũng là
các trị riêng khác 0 của ATA

Downloaded by vu ga ()


lOMoARcPSD|18034504

Trong D, ta sắp xếp các trị riêng của A theo thứ tự giảm dần
1.3.3 Ví dụ
Phân tích SVD của ma trận
. Chéo hóa trực giao : với
. Chéo hóa trực giao : với

Phân tích SVD của với Q = , P = , Σ=

CHƯƠNG 2: ỨNG DỤNG SVD TRONG NÉN ẢNH
2.1 Hướng giải quyết vấn đề

Hình 1: Mơ tả cách phân tích SVD bằng hình ảnh

được viết lại thành


Hình 2: Viết lại cách phân tích SVD

Các trị riêng được sắp xếp theo thứ tự giảm dần, ta có thể xấp xỉ A
bằng cách bỏ đi các thành phần ảnh tương ứng với giá trị đơn có giá
trị nhỏ gần bằng 0. Do đó những số hạng phía sau sẽ có ít ảnh
hưởng đến ảnh và có thể bỏ đi các số hạng này, ảnh sẽ không mất
nhiều thông tin khi thay thế chúng bằng 0.

Downloaded by vu ga ()


lOMoARcPSD|18034504

Nếu ta giữ lại k trị riêng đầu tiên,

Hình 3: Giữ lại k trị riêng đầu tiên và loại bỏ các trị riêng còn lại

2.2 Đoạn code Matlab
function btl
clear all
%Get Input, which is a Black n White picture
A=imread('a.jpg');
B=double(A);
%Show original image
figure,subplot(2,2,1)
imshow(uint8(B)), axis off;
title('Original')
% Decomposing the image using singular value
decomposition
[U,S,V]=svd(B);

% Using different number of singular values (diagonal of
S) to compress and
% reconstruct the image
pLocation=2; %Location for subplot
for N=[5 20 100]
%Loop: N=5, N=20, N=100
k= U(:,1:N)*S(1:N,1:N)*V(:,1:N)';
subplot(2,2,pLocation),pLocation=pLocation+1;
imshow(uint8(k)), axis off;title(sprintf('N = %d',N));

Downloaded by vu ga ()


lOMoARcPSD|18034504

end
2.3 Ví dụ
Chạy thử code với một số ảnh đã chuẩn bị

Hình 4: Ví dụ 1

Downloaded by vu ga ()


lOMoARcPSD|18034504

Hình 5: Ví dụ 2

Hình 6: Ví dụ 3


Downloaded by vu ga ()


lOMoARcPSD|18034504

Downloaded by vu ga ()



×