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

Báo cáo BTL Đại số tuyến tính

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 (698.78 KB, 19 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
----------

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

ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 7: NÊU CƠ SỞ LÝ THUYẾT CỦA
PHÂN TÍCH SVD. ỨNG DỤNG CỦA PHÂN
TÍCH SVD ĐỂ NÉN DỮ LIỆU
GVHD:
Lớp:
Nhóm:
SVTH:

ThS. Nguyễn Xn Mỹ
L11
07
Nguyễn Minh Khánh
Nguyễn Đăng Khoa
Dương Trọng Khơi
Nguyễn Hồng Kim
Trần Hồng Lam
Nguyễn Hữu Lâm
Lê Xuân Lĩnh

TP. HỒ CHÍ MINH, NĂM 2022

2111493
2113764


2113786
2111617
2110309
2113881
2113920


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
----------

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

ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 7: NÊU CƠ SỞ LÝ THUYẾT CỦA
PHÂN TÍCH SVD. ỨNG DỤNG CỦA PHÂN
TÍCH SVD ĐỂ NÉN DỮ LIỆU
GVHD:
Lớp:
Nhóm:
SVTH:

ThS. Nguyễn Xn Mỹ
L11
07
Nguyễn Minh Khánh
Nguyễn Đăng Khoa
Dương Trọng Khơi
Nguyễn Hồng Kim

Trần Hồng Lam
Nguyễn Hữu Lâm
Lê Xuân Lĩnh

TP. HỒ CHÍ MINH, NĂM 2022

2111493
2113764
2113786
2111617
2110309
2113881
2113920


LỜI CẢM ƠN
Sau giai đoạn dịch Covid – 19 diễn biến khó khăn thì nhóm rất vui
vì đã được Cơ hướng dẫn và đã hoàn thành Báo cáo cuối kỳ.
Đầu tiên nhóm xin cám ơn Cơ – ThS. Nguyễn Xn Mỹ trong suốt
thời gian qua đã tận tình hướng dẫn, truyền đạt những kiến thức môn học
đến với chúng em. Và nhờ như vậy mà nhóm có thể hồn thành đượcBáo
cáo Bài tập lớn lần này. Đây không chỉ là nền tảng vững chắc cho quá trình
học tập, nghiên cứu mà cịn là hành trang q báu để nhóm ứng dụngvào
thực tiễn khi làm việc.
Trong quá trình làm bài, dù đã cố gắng và nỗ lực tìm hiểu rất nhiều
nhưng cũng khơng thể nào tránh khỏi những sai sót, những thiếu hụt về
mặt kỹ năng, kiến thức. Do đó nhóm rất mong sẽ được đón nhận những ý
kiến, góp ý từ Cơ để bài làm được hồn thiện hơn cả về nội dung lẫn hình
thức.
Lời cuối cùng, nhóm xin kính chúc Cơ ln có nhiều sức khỏe, hạnh

phúc bên gia đình, thành cơng trong cuộc sống lẫn sự nghiệp của mình.

Nhóm xin trân trọng cám ơn!


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ứ có sự đánh đổi
giữa dung lượng ảnh với chất lượng ảnh. khơng chỉ riêng dữ liệu ảnh, ví
dụ mã Huffman, 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.


BẢNG PHÂN CHIA CƠNG VIỆC
I. GIỚI THIỆU CHUNG


• Nguyễn Minh Khánh

II. CƠ SỞ LÝ THUYẾT

• Nguyễn Đăng Khoa
• Nguyễn Hồng Kim

III. ỨNG DỤNG CỦA PHÂN TÍCH SVD ĐỂ NÉN
DỮ LIỆU
IV. VÍ DỤ
*Tổng

hợp: Trần Hồng Lam, Dương Trọng Khơi






Lê Xn Lĩnh
Trần Hồng Lam
Nguyễn Hữu Lâm
Dương Trọng Khôi



DANH MỤC HÌNH ẢNH
Hình 4.1 Ảnh gốc và ảnh nén bằng giải thuật SVD……………………………………8
Hình 4.2 Độ nét của ảnh với các giá trị k khác nhau……………………………................9

Hình 4.3 Ví dụ về SVD cho ảnh………………………………………………………………..10


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

ĐẠI SỐ TUYẾN TÍNH

CHƯƠNG I: GIỚI THIỆU CHUNG
Phương pháp phân tích SVD là một trong những phương pháp thuộc
nhóm matrix factorization (ma trận phân loại) đượ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 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 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 và 1 ma trận đường chéo . 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 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.

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 1

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1 GIÁ TRỊ RIÊNG VÀ VECTOR RIÊNG CỦA MA TRẬN
2.1.1 Định nghĩa
Cho A là ma trận vuông cấp 𝑛, 𝑥 = (𝑥1, 𝑥2, … 𝑥𝑛) 𝑥 ∈ ℝn hoặc
𝑥 ∈ ℂn, 𝑥 ≠(0,0, . .0). Nếu có số 𝜆 (thực hoặc phức) thỏa mãn:
𝐴𝑥 = 𝜆𝑥, tức là 𝐴[𝑥] = 𝜆[𝑥]
với [𝑥] là ma trận đặt dọc của 𝑥, thì:
o 𝜆 được gọi là giá trị riêng của ma trận 𝐴.
o x được gọi là ma trận riêng của ma trận 𝐴, tương ứng với giá trị
riêng 𝜆.
2.1.2 Tính chất
o Tính chất 1: Mỗi vector riêng có một giá trị riêng duy nhất.
o Tính chất 2: Nếu 𝑥 là vector riêng ứng với giá trị riêng 𝜆 của
ma trận vng 𝐴 thì𝑘𝑥 cũng là vector riêng ứng với 𝜆:
𝐴𝑥 = 𝜆𝑥 ⟺ 𝐴(𝑘𝑥) = 𝜆(𝑘𝑥)
o Tính chất 3: Nếu 𝜆 là giá trị riêng của ma trận vuông 𝐴 thì 𝜆n

là giá trị riêng của ma trận 𝐴𝑛.
o Tính chất 4: Giá trị riêng của ma trận vng 𝐴 là nghiệm của
phương trình:
𝑑𝑒𝑡(𝐴 − 𝜆𝐼) = 0
o Tính chất 5: Ma trận vng A có giá trị riêng 𝜆 thì họ vector
riêng ứng với 𝜆 là nghiệm của:
(𝐴 − 𝜆𝐼)𝑥 = 0
o Tính chất 6: Một ma trận đối xứng thì vector riêng vng góc
với nhau.
2.2 CHÉO HĨA MA TRẬN
2.2.1 Định nghĩa
Cho ma trận vuông 𝐴, nếu tồn tại ma trận khả nghịch sao cho
−1
𝑃 𝐴𝑃 là ma trận đường chéo thì ta nói rằng ma trận 𝐴 chéo hóa được và
ma trận 𝑃 chéo hóa ma trận 𝐴 hay ma trận 𝐴 đưa về được dạng chéo hóa
nhờ ma trận 𝑃.
o Định lý 1: Điều kiện cần và đủ để ma trận vng 𝐴 cấp 𝑛 chéo
hóa được là nó có 𝑛 vectơ riêng độc lập tuyến tính.
o Định lý 2: Nếu ma trận 𝐴 vng cấp 𝑛 đưa được về dạng chéo
hóa 𝐵 thì các phần tử trên đường chéo chính của 𝐵 là các giá
trị riêng của ma trận 𝐴.
GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 2

NHÓM 7


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


ĐẠI SỐ TUYẾN TÍNH

Chú ý: Nếu 𝐴 là ma trận chéo hóa được thì ta ln tìm được ma trận 𝑃 và ma
trận chéo 𝐵 như trong phương pháp trên : 𝐴 = 𝑃𝐵𝑃−1. Khi đó:
𝐴2 = 𝐴. 𝐴 = (𝑃𝐵𝑃−1)(𝑃𝐵𝑃−1) = 𝑃𝐵(𝑃𝑃−1)𝐵𝑃−1 = 𝑃𝐵2𝑃−1
𝐴3 = 𝐴2. 𝐴 = (𝑃𝐵2𝑃−1)(𝑃𝐵𝑃−1) = 𝑃𝐵2(𝑃𝑃−1)𝐵𝑃−1 = 𝑃𝐵3𝑃−1
….
𝑛
𝑛−1
𝑛−1
−1
𝐴 = 𝐴 . 𝐴 = (𝑃𝐵 𝑃 )(𝑃𝐵𝑃−1) = 𝑃𝐵𝑛−1(𝑃𝑃−1)𝐵𝑃−1 =
𝑃𝐵𝑛𝑃−1
2.2.2 Chéo hóa đa thức ma trận
Cho A là ma trận vng cấp 𝑛, hàm số 𝑓(𝐴) là đa thức của ma trận
𝐴. Giả sử ma trận 𝐴 có các trị riêng 𝜆1, 𝜆2, … 𝜆𝑛, ma trận chéo hóa được và
dạng chéo hóa của 𝐴 là:

Khi đó 𝑓(𝜆1), 𝑓(𝜆2), … 𝑓(𝜆𝑛), là các giá trị riêng của đa thức ma
trận 𝑓(𝐴) và 𝑓(𝐴) cũng chéo hóa được như sau:

2.3 SINFULAR VALUE DECOMPOSITION (SVD)
2.3.1 Giới thiệu
Singular Value Decomposition là một phương pháp phân tích ma
trận 𝐴 kích thước 𝑚 × 𝑛 thành dạng tích ma trận: 𝐴 = 𝑈𝑆𝑉𝑇. Trong đó:
• 𝑈 là ma trận kích thước 𝑚 × 𝑟 sao cho các vector cột tạo
thành một hệ trực chuẩn.
• 𝑆 là ma trận đường chéo kích thước 𝑟 × 𝑟 (𝑟 là hạng của 𝐴).
• 𝑉 là ma trận kích thước 𝑛 × 𝑟 sao cho các vector cột tạo
thành một hệ trực chuẩn.

Đặt 𝑈 = (𝜐1, 𝜐2 , . . . . . , 𝜐𝑟), 𝑉 = (𝜈1, 𝜈2, . . . , 𝜈𝑟), 𝑆 = 𝑑𝑖𝑎𝑔(𝜎1,
𝜎2, . . . , 𝜎𝑟) thì ta có dạng tương đương của 𝐴 = 𝑈𝑆𝑉𝑇 như sau:

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 3

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

• Các vector 𝜐1, 𝜐2 , ....... , 𝜐𝑟 gọi là các left singular vector.
• Các vector ν1,ν2,.. ,νr gọi là các right singular vector.
• Các số σ1,σ2,.. ,σr gọi là các singular value.
2.3.2 Tính chất
Giả sử ta có phân tích SVD của ma trận A như sau:
A=σ1υ1ν1T+σ2υ2ν2T+…+σrυrνrT, trong đó 𝜎1 ≥ 𝜎2 ≥… ≥ 𝜎𝑟.Với 1 ≤
𝑘 ≤ 𝑟, đặt A =σ1υ1ν1T+σ2υ2ν2T+…+σKυKνKTthì rõ ràng Ak có hạng bằng k. Có
thể thấy Ak cũng tích của ba ma trận: k cột đầu của U, ma trận vng k×k đầu
tiên của S và k hàng đầu của VT.
Ta có các tính chất sau:

o Tính chất 1:
Ta có:
𝜈1 = 𝑎𝑟𝑔𝑚𝑎𝑥 ||𝐴𝑥|| (||𝑥|| = 1), 𝜈𝑖 = 𝑎𝑟𝑔𝑚𝑎𝑥||𝐴𝑥|| (||𝑥|| = 1, 𝑥 ꓕ 𝜈1,𝜈2, … ,𝜈𝑖−1)
Giả sử 𝑥 = ∑𝑟𝑖=1 𝛼𝑖 𝑣𝑖 thì ‖𝐴𝑥‖ = ‖∑𝑟𝑖=1 𝛼𝑖 𝐴𝑣𝑖 ‖ = ‖∑𝑟𝑖=1 𝛼𝑖 𝜎𝑖 𝑣𝑖 ‖ =
√∑𝑟𝑖=1 𝛼𝑖 2 𝜎𝑖 2

Khi đó để ||Ax|| lớn nhất thì √∑𝑟𝑖=1 𝛼𝑖 2 𝜎𝑖 2 lớn nhất, mà
do ∑𝑟𝑖=1 𝛼𝑖 2 = 1 và 𝜎𝑗 ≤ 𝜎𝑖 nên ‖𝐴𝑥‖ ≤ 𝜎1 dấu bằng xảy ra khi và chỉ khi
𝑥 = 𝑣1
Tiếp theo 𝑥 = ∑𝑟𝑖=1 𝛼𝑖 𝑣𝑖 mà 𝑥ꓕ𝑣1 thì α1 =0, do đó ‖𝐴𝑥‖ =
√∑𝑟𝑖=2 𝛼𝑖 2 𝜎𝑖 2 ≤ 𝜎2 dấu bằng xảy ra khi và chỉ khi 𝑥 = 𝑣2 . Cứ tiếp tục như
thế và ta thu được kết quả.
o Tính chất 2:
Trong tất cả các ma trận X có hạng bé hơn hoặc bằng k thì ||A - X||F đạt
giá trị nhỏ nhất khi và chỉ khi X = Ak.
Ta thấy rằng ||A – X|| F là tổng của bình phương độ dài các vector hàng
của A - X.
Các vector hàng của A - X đạt giá trị nhỏ nhất về độ dài khi và chỉ khi
vector hàngtương ứng ở X là hình chiếu của vector hàng tương ứng ở A trên
không gian sinh bởi cácvector hàng của X.
Do đó ||A - X||F nhỏ nhất khi và chỉ khi các vector hàng của X là hình
chiếu của các vector hàng của A.
Cuối cùng, nhận xét rằng Ak là hình chiếu của các vector hàng của A lên
không gian được sinh bởi các vector hàng của Ak, và hiển nhiên cơ sở của nó là
ν1,ν2,...,νk.

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 4

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH


2.3.3 Nhận xét
• Phần định nghĩa giới thiệu về SVD là cách phân tích một
ma trận qua dạngSVD bằng cách tính các giá trị riêng và vector riêng
của ATA và AAT.
• Theo tính chất 2, ta phần nào đó có thể nói rằng Ak là ma
trận xấp xỉ nhấtvới A trong tất cả các ma trận hạng bé hơn hoặc bằng
k, với k càng cao thì càng xấp xỉ.
• Một cách hình học, Vk =span({ν1,ν2,...,νk}) là khơng gian k
chiều khít A nhất. Vềbản chất, có lẽ định hướng về hình học này là
ngun nhân sinh ra SVD.
• Tuy nhiên thì đi từ hướng chưa có gì này nó hơi khó một chút
nên mình đi theo hướng ngược lại để bài viết ngắn hơn.
*Các hàm hỗ trợ tính SVD:
- Python, hàm tính SVD là U, s, V = np.linalg.svd(...).
- Octave, Matlab là [U, s, V] = svd(...).

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 5

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

CHƯƠNG III: ỨNG DỤNG CỦA PHÂN TÍCH SVD ĐỂ NÉN
DỮ LIỆU

3.1 NÉN ẢNH SỐ
Bằng cách phân tích ma trận ảnh A dưới dạng A=USVT , ta có thể biểu
diễn xấp xỉ ma trận A bằng ít phần tử hơn. Nếu hạng của ma trận A là rhoặc rA=s1u1vT1 + s2u2vT2 + … + srurvTr + sr+1ur+1vTr+1 + …(4.2)
Hơn nữa, các trị riêng được sắp xếp theo thứ tự giảm dần, 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.
MATLAB có hàm svd để thực hiện nhân tử hoá ma trận A thành USVT
>> [U,S,V] = svd(A)
Chúng ta có thể sử dụng hàm này kết hợp với phương trình (4.2) để viết
một hàm nén ảnh dùng giải thuật SVD. Ví dụ hàm svdcompr. Cú pháp của nó
là:
>> im = svdcompr (infile,singvals,outfile)
Trong đó, infile và outfile là tên các file ảnh gốc và ảnh nén, singvals là
số các trị riêng lớn nhất được giữ lại.
3.2 GIẢM CHIỀU DỮ LIỆU (PCA)
Giả sử ta có một tập dữ liệu nhiều ảnh có kích thước rất lớn. Khả năng
lưu trữ của server là có hạn. Trong tình huống này làm thể nào để giảm kích
thước của bộ ảnh vừa với dung lượng server mà thông tin của các bức ảnh vẫn
giữ được một lượng lớn. Câu trả lời sẽ có sau khi khi ta thực hành nén một bức
ảnh bằng thuật toán truncate SVD.
Để lưu ảnh với Truncated SVD, ta sẽ lưu các ma trận

Tổng số phần tử phải lưu là r(m+n+1) với chú ý rằng ta chỉ cần lưu
các giá trị trên đường chéo của Sr. Giả sử mỗi phần tử được lưu bởi một số
thực 4 byte, thế thì số byte cần lưu trữ là 4r(m+n+1). Nếu so giá trị này với
ảnh gốc có kích thước mn, mỗi giá trị là 1 số nguyên 1 byte, tỉ lệ nén là:

Khi r≪m,n ta được một tỉ lệ nhỏ hơn 1.
Chú ý rằng trong ma trận S, các giá trị trên đường chéo là không âm và

giảm dần
. Thông thường, chỉ một lượng nhỏ
các mang giá trị lớn, các giá trị còn lại thường nhỏ và gần 0. Khi đó ta có
GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 6

NHÓM 7


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

thể xấp xỉ ma trận A bằng tổng của

ĐẠI SỐ TUYẾN TÍNH

ma trận có rank 1:

Dưới đây là một định lý thú vị. Định lý này nói rằng sai số do cách xấp
xỉ trên chính là căn bậc hai của tổng bình phương của các singular values mà ta
đã bỏ qua ở phần cuối của S. Ở đây sai số được định nghĩa là Frobineous norm
của hiệu hai ma trận:
Định lý:
Thay k=0 ta sẽ có:

Từ đó:

Như vậy, sai số do xấp xỉ càng nhỏ nếu phần singular values bị truncated
có giá trị càng nhỏ so với phần singular values được giữ lại. Đây là một định lý
quan trọng giúp xác định việc xấp xỉ ma trận dựa trên lượng thơng tin muốn

giữ lại.
Ví dụ, nếu ta muốn giữ lại ít nhất 90% lương thơng tin trong A, trước hết
ta tính

, sau đó chọn k là số nhỏ nhất sao cho:

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 7

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

CHƯƠNG IV: CÁC VÍ DỤ CỦA ỨNG DỤNG SVD ĐỂ NÉN
DỮ LIỆU BẰNG MATLAB
4.1 VÍ DỤ 1
Thực hiện giải thuật nén SVD dùng hàm svdcompr: Trong ví dụ này ta
chỉ giữ lại 30 số hạng đầu tiên trong phương trình (4.2).
in = imread('a2.jpg') ;
out=svdcompr('a2.jpg',30,'svd.jpg');
subplot(1,2,1)
imshow(in),title('hinh goc');
subplot(1,2,2)
imshow(out),title('k = 30');

Hình 4.4 Ảnh gốc và ảnh nén bằng giải thuật SVD


4.2 VÍ DỤ 2
in = imread('a1.jpg') ;
ranks=[5,10,20,60,100];
for i=1:length(ranks)
out=svdcompr('a1.jpg',ranks(i),sprintf('svd%d.jpg',ranks(i)));
pause(1);
imshow(out),title(sprintf('k = %d',ranks(i)));
pause(2);
end;
subplot(2,3,1)
imshow('a1.jpg'),title('anh goc')
subplot(2,3,2)
imshow('svd5.jpg'),title('k = 5')
subplot(2,3,3)
GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 8

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

imshow('svd100.jpg'),title('k = 100')
imshow('svd10.jpg'),title('k = 10')
subplot(2,3,4)
imshow('svd20.jpg'),title('k = 20')

subplot(2,3,5)
imshow('svd60.jpg'),title('k = 60')
subplot(2,3,6)

Dưới đây là kết quả của đoạn chương trình trên với các giá trị k (số vòng
lặp, cũng là số trị b riêng được giữ lại) khác nhau:

Hình 4.5 Độ nét của ảnh với các giá trị k khác nhau

Trong hình vẽ 4.2, hình b ứng với số trị riêng giữ lại là 5, ảnh này tiết
kiệm được 99,9% dung lượng so với ảnh gốc nhưng chất lượng kém, chỉ thấy
được dạng ảnh mà không thấy rõ các chi tiết. Nếu giữ lại 60 trị riêng lớn nhất,
chất lượng ảnh đã đạt gần với ảnh gốc (hình e) và ta tiết kiệm được khoảng 84%
dung lượng. Khi tăng số lần lặp lên 100, chất lượng ảnh rất tốt (hình f) mà vẫn
tiết kiệm được 55% so với ảnh gốc.

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 9

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

4.3 VÍ DỤ 3

Hình 4.6 Ví dụ về SVD cho ảnh


a) Bức ảnh gốc là 1 ảnh xám, là một ma trận cỡ 960×1440960×1440.
b) Giá trị của các singular values của ma trận ảnh theo logscale. Có thể
thấy rằng các singular value giảm nhanh ở khoảng k=200k=200.
c) Biểu diễn lượng thông tin được giữ lại khi chọn các kk khác nhau. Có
thể nhận thấy từ khoảng k=200k=200, lượng thông tin giữ lại là gần bằng 1.
Vậy ta có thể xấp xỉ ma trận ảnh này bằng 1 ma trận có rank nhỏ hơn.
Hình 4.3 mô tả chất lượng ảnh khi chọn các giá trị kk khác nhau.
Khi kk gần 100, lượng thông tin mất đi rơi vào khoảng nhỏ hơn 2%, ảnh thu
được có chất lượng gần như ảnh gốc.

GVHD: THS. NGUYỄN XUÂN MỸ

TRANG 10

NHÓM 7


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

ĐẠI SỐ TUYẾN TÍNH

TÀI LIỆU THAM KHẢO
[1] Singular Value Decomposition - Stanford University
[2] Singular Value Decomposition - Princeton
[3] CS168: The Modern Algorithmic Toolbox Lecture #9: The Singular Value
Decomposition (SVD) and Low-Rank Matrix Approximations - Stanford
[4] The Moore-Penrose Pseudoinverse (Math 33A - UCLA)

GVHD: THS. NGUYỄN XUÂN MỸ


TRANG 11

NHÓM 7


PHẦN BÁO CÁO CỦA NHÓM ĐẾN ĐÂY LÀ HẾT
CHÚNG EM XIN CHÂN THÀNH CẢM ƠN CÔ!



×