You are on page 1of 15

ĐẠI HỌC QUỐC GIA TP.

HỒ CHÍ
MINH
TRƯỜNG ĐẠI HỌC
BÁCH KHOA

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


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

Môn : Đại số tuyến tính


GVDH: thầy Đặng Văn Vinh
Lớp: P03 - Nhóm: 4

rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Page 1 of 15
Danh Sách Thành Viên Nhóm

Lý Khánh Toàn 2353193


Le Quốc Nguyên Giáp 2310835
Lê NGuyễn Anh Khôi 2311670
Nghê Hiếu TIến 2313430

Lưu Minh Đạt 2310658

Page 2 of 15
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, luôn có sự đánh đổi
giữa dung lượng ảnh với chất lượng ảnh.

Page 3 of 15
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ở toán học.........................................................................6
 1.3.1 Định nghĩa...............................................................................6
 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 Phương pháp nén ảnh..........................................................7
 2.2 Ví dụ về phương pháp..................................................8
 2.3 Chú thích các lệnh python sử dụng...........................................10
 2.4 Đoạn code Python........................................................................11
 2.5 Ví dụ ảnh qua xử lí…………………………………………………………13

Page 4 of 15
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 toá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.
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 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à chi 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.

Page 5 of 15
1.3 Cơ sở toán học của phân tích SVD:
Mọi ma trận đều có thể phân tích thành các ma trận nhân tử được biểu
diễn dưới dạng sau:
A = QPT
Với: A là ma trận thực cho trước cỡ mxn có r(A) = r.
Q và P là hai ma trận đều có họ vector cột là họ trực chuẩn.
Q=(q1q2…|qn) , P=(p1p2…|pn)
 = D 0 ⋱ 0 0 là ma trận cỡ mxn với D là ma trận chéo có các
phần tử trên đường chéo: 1, 2,...,r là giá trị riêng của ma trận A.
Khi đó ma trận A có thể ghi ở dạng A= 1q1p1T+2q2p2T+…+rqrprT
Từ đó ta có phân tích gọn hơn của A gọi là Compact SVD A=QrDPr
trong đó Qr, Pr là các ma trận được tạo từ cột Q và P tương ứng.Ta chỉ
giữ 1 vài mcó giá trị cao và các scó giá trị xấp xỉ bằng 0 có thể bỏ qua
Khi đó A≈AK=1q1p1T+2q2p2T+…+kqkpkT
Và sai số trong xấp xỉ: A-Ak= k+12+k+22+…+r2

Page 6 of 15
CHƯƠNG 2: ỨNG DỤNG SVD TRONG NÉN ẢNH
2.1.Phương pháp nén ảnh:
Đối với một hình ảnh có thể xem nó như một ma trận nhiều chiều,
với chiều ở đây là dữ liệu. Gọi là ma trận A (mxn)

Bằng phương pháp SVD thì một ma trận A có thể phân tích
thành một phương trình ma trận như sau:
Với U là một ma trận vuông vecto riêng bên trái cỡ mxm
VT là một ma trận vuông vecto riêng bên phải cỡ nxn
Σ là một ma trận trị số ít (singular value matrix) cỡ mxn
-Khi đó (1) có thể viết thành

(2)

*Phương pháp xấp xỉ hạng thấp của ảnh (Low rank


approximation of image)
Các vecto riêng của sigma sấp theo một ma trận đường chéo
-Từ (2) tổng các ma trận hạng 1 có dạng:

Page 7 of 15
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.
2.2.Ví dụ về phương pháp:
Cho một ma trận ảnh trắng đen

Page 8 of 15
Hình 1,2. Phân tích ma trận thành 1 SVD

Ta thấy ma trận sigma có 4 giá trị riêng sấp theo thứ tự giảm dần
khác 0 khi tổng các số hạng bằng số cột khác 0 của sigma thì ảnh
lúc này là rõ so với ảnh gốc nhất với sối bé nhất i=4

Hình 3. Độ nét của ảnh qua tổng thứ 1,2,3 và 4


Với i>4 thì ảnh vẫn không thay đổi độ nét do các cột sau Ϭ(i>=4)
= 0 nên ta có thể bỏ qua. Khi đó số chiều của ảnh sẽ giảm xuống
đồng nghĩa dữ liệu giảm nhưng chất lượng không đổi => ta đã nén
được ảnh.

Page 9 of 15
2.3.Chú thích các lệnh trên Python đã sử dụng:

Page 10 of 15
2.4 Đoạn codePython:

Page 11 of 15
Page 12 of 15
Page 13 of 15
2.5. Ví dụ ảnh qua xử lí:

Page 14 of 15
Page 15 of 15

You might also like