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 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, luôn có sự đánh đổi giữa dung lượng ảnh với chất lượng ảnh.
Trang 1ĐẠ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
TP HỒ CHÍ MINH, NĂM 2022
GVHD:
Lớp:
Nhóm:
SVTH:
ThS Nguyễn Xuân Mỹ L11
07 Nguyễn Minh Khánh Nguyễn Đăng Khoa Dương Trọng Khôi Nguyễn Hoàng Kim Trần Hồng Lam Nguyễn Hữu Lâm
Lê Xuân Lĩnh
2111493
2113764
2113786
2111617
2110309
2113881
2113920
Trang 2ĐẠ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 Xuân Mỹ L11
07 Nguyễn Minh Khánh Nguyễn Đăng Khoa Dương Trọng Khôi Nguyễn Hoàng Kim Trần Hồng Lam Nguyễn Hữu Lâm
Lê Xuân Lĩnh
2111493
2113764
2113786
2111617
2110309
2113881
2113920
TP HỒ CHÍ MINH, NĂM 2022
Trang 3LỜ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 Xuân 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ể hoàn thành được Bá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 quý báu để nhóm ứng dụng và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 hoà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ô luôn 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!
Trang 4LỜ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, luôn có
sự đánh đổi giữa dung lượng ảnh với chất lượng ảnh
Trang 5BẢNG PHÂN CHIA CÔNG VIỆC
• Nguyễn Hoàng Kim III ỨNG DỤNG CỦA PHÂN TÍCH SVD ĐỂ NÉN
DỮ LIỆU
• Lê Xuân Lĩnh
• Trần Hồng Lam
• Dương Trọng Khôi
* Tổng hợp: Trần Hồng Lam, Dương Trọng Khôi
Trang 7
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
Trang 8BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 1 NHÓM 7
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 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
Trang 9BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 2 NHÓM 7
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 vuông 𝐴 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 vuông 𝐴 là nghiệm của
phương trình:
𝑑𝑒𝑡(𝐴 − 𝜆𝐼) = 0
o Tính chất 5: Ma trận vuông 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 vuông 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 𝑃
hóa được là nó có 𝑛 vectơ riêng độc lập tuyến tính
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 𝐴
Trang 10BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 3 NHÓM 7
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 vuông 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 đó:
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:
Trang 11BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 4 NHÓM 7
• 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 ν 1 T +σ 2 υ 2 ν 2 T +…+σ r υ r ν r T, trong đó 𝜎1 ≥ 𝜎2 ≥… ≥ 𝜎𝑟.Với 1 ≤
𝑘 ≤ 𝑟, đặt A =σ 1 υ 1 ν 1 T +σ 2 υ 2 ν 2 T +…+σ K υ K ν K T thì rõ ràng A k có hạng bằng k Có
thể thấy A k cũng tích của ba ma trận: k cột đầu của U, ma trận vuông 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𝛼𝑖𝜎𝑖𝑣𝑖‖ =
√∑𝑟 𝛼𝑖2𝜎𝑖2
𝑖=1
Khi đó để ||Ax|| lớn nhất thì √∑𝑟 𝛼𝑖2𝜎𝑖2
do ∑𝑟𝑖=1𝛼𝑖2 = 1 và 𝜎𝑗 ≤ 𝜎𝑖 nên ‖𝐴𝑥‖ ≤ 𝜎1 dấu bằng xảy ra khi và chỉ khi
Tiếp theo 𝑥 = ∑𝑟𝑖=1𝛼𝑖𝑣𝑖 mà 𝑥ꓕ𝑣1thì α 1 =0, do đó ‖𝐴𝑥‖ =
√∑𝑟 𝛼𝑖2𝜎𝑖2
thế và ta thu được kết quả
o Tính chất 2:
giá trị nhỏ nhất khi và chỉ khi X = Ak
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àng tươ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ác vector 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.
ν 1 ,ν 2 , ,ν k
Trang 12BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 5 NHÓM 7
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ạng SVD bằng cách tính các giá trị riêng và vector riêng
của A T A và AA T
• Theo tính chất 2, ta phần nào đó có thể nói rằng A k là ma trận xấp xỉ nhất vớ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, V k =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à
nguyên 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( )
Trang 13BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 6 NHÓM 7
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à r<m hoặc r<n, ta có thể giảm đi những thông tin thừa:
A=s 1 u 1 v T 1 + s 2 u 2 v T 2 + … + s r u r v T r + s r+1 u r+1 v T r+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 S r 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à
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ó
Trang 14BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 7 NHÓM 7
thể xấp xỉ ma trận A bằng tổng của 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:
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:
Trang 15BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 8 NHÓM 7
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)
Trang 16BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
GVHD: THS NGUYỄN XUÂN MỸ TRANG 9 NHÓM 7
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