Tần 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
Trang 1ĐẠ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
BK
TP.HCM
BÁO CÁO BÀI TẬP LỚN
UNG DUNG SVD VAO NEN DU LIEU
Hiệp
Trang 2DANH SÁCH THÀNH VIÊN NHÓM
Tr ân Nhã Linh
Trang 3LOI NOI DAU
Mục đích của việc nén ảnh số là mã hoá các dữ liệu ảnh v`Šmột đạ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ần 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 đữ liệu video, ca 25 frames trên một giây, như vậy một đoạn video chỉ 30s phải cần đến
40MB 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ã HulJH4Jman, 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, luôn có sự đánh đổi giữa dung lượng ảnh với chất lượng ảnh
Trang 4MUC LUC
CHƯƠNG 1: CO'SO LY THUYET sscecsssssssseeeesesssseeesseeseeessnsnsesene 5
1.1 Giới thiệu chung v`êphương pháp phân tích suy biến SVD 5
I0 na 5
sẻ na °”ađdd ÔỎ 5 II S620) 1 5
1.3.2 Cách phân tích SVD của một ma trận - - -++++ 6
In ¿on 6
CHƯƠNG 2: ỨNG DỤNG SVD TRONG NÉN ẢNH
2.1 Hướng giải quyết vấn đỀ SH eeey 7 2.2 Các lệnh Matlab được sử dụng 55c cccsexsrreerexres 8 2.3 Doan code Matlab - - << Q21 11111 111 111111182 18253251122 8 ` na na 8
Trang 5CHUONG I: 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 đầầi bởi những nhà hình học
vi phân Ban đi 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ỗ qui tuyến tính, xử lý hình ảnh, clustering, các
thuật toán nèn và giảm chi Yâi 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 Irobenios 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 ân 2ma trận truc giao (orthogonal matrix) va l 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 (rofation) 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`âi đặc biệt của ma trận đường chéo đó là các ph 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 đầ hoặc chỉ giữ một ph lớn thông tin của dữ liệu ban đầi thông qua các phép truncate SVD
Trang 6Bằ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 toá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à chỉ phí tính toá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
143 Cơ sở toán học
1.3.1 Định nghĩa
Mọi ma trận thực đ'âi có thể phân tích được thành:
A: Ma trận đầi vào g ôn các số thực, kích thước m xn
Q: Ma trận đơn vị thành phn trực giao, kích thước m x m
P: Ma trận đơn vị thành ph trực giao, kích thước n xn
Z ` A 2 AA s sta > é As H- `^
: Có D là ma trận chéo g ‘Gm cac tri 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 cha AAT va Øi?; 0¿?;: ; Ơ; 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 A*A và Ø¡?; Øz7;: ; Ø;ˆ cũng là các trị riêng khác 0 của ATA
Trang 7Trong 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: voi
Chéo hóa trực giao : với
Phân tích SVD của với Q=,P=, 3=
CHƯƠNG 2: ỨNG DỤNG SVD TRONG NÉN ẢNH
2.1 Hướng giải quyết vấn đ`ề
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
A U, Đ, (V,)7
Hi
T
oy, Uy VỊ Ø2 ta vĩ
+
Hình 2: Viết lại cách phan tich SVD
Các trị riêng được sắp xếp theo thứ tự giảm đần, ta có thể xấp xỉ A
bằng cách bỏ đi các thành ph3n ảnh tương ứng với giá trị đơn có giá
trị nhỏ øgn 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 'âi thông tin khi thay thế chúng bằng 0
Trang 8Nếu ta giữ lại k trị néng d'& tiên,
Hình 3: Giữ lại k trị riêng đt tiên và loại bỏ các trị riêng còn lại
2.2 Doan 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(uint&(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(c,I:N)*S(I:N,I:N)*V€,1:N);
subplot(2,2,pLocation) pLocation=pLocation+1;
imshow(uint&(k)), axis off;title(sprintf('N = %d',N));
Trang 9
23 Vidu
Chạy thử code với một số ảnh đã chuẩn bị
“4 Figure 1 = n x File Edit View Insert Tools Desktop Window Help »
nøjds hà SS2®&z-3 ñg1)am
Original
Hình 4: Ví dụ 1
Trang 10
'@ Figure 1 - n
File Edit View Insert Tools Desktop Window Help
nđ ø ò| h | % % # ®@œ<-|ã| 3| am
Original
Hình 5: Ví dụ 2
A Figure 1 — ao File Edit View Insert Tools Desktop Window Help
Trrrrr=Z POT TTT TT
Hinh 6: Vi du3