Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
439,17 KB
Nội dung
ĐẠ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 ĐẠI SỐ TUYẾN TÍNH GVHD: NGUYỄN XUÂN MỸ CHỦ ĐỀ 10: ỨNG DỤNG PHÂN TÍCH SVD ĐỂ KHỬ NHIỄU HÌNH ẢNH Nhóm thực hiện: 10 Giới thiệu chung - Lớp: L16 Nhóm: 10 Chủ đề: 10 Danh sách thành viên MSSV Họ tên 2112172 Võ Mạnh Quỳnh 2114626 Trần Thiên San 2112200 Nguyễn Trường Sơn 2114676 Trương Thanh Sơn 2114716 Phan Hoàng Tâm 2112252 Nguyễn Bùi Quốc Tân 2110527 Nguyễn Hoàng Duy Tân Ghi Mục Lục LỜI CẢM ƠN LỜI MỞ ĐẦU I II III IV CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD Mục tiêu phân tích SVD Quá trình phân tích SVD thơng qua ma trận Một số ví dụ ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH Đặt vấn đề - Ý nghĩa khử nhiễu hình ảnh sống 10 Khử nhiễu hình ảnh qua thuật tốn phân tích SVD 11 Q trình thực tổng quan phân tích SVD qua Matlab 12 CHƯƠNG TRÌNH MATLAB 14 TÀI LIỆU THAM KHẢO 14 LỜI CẢM ƠN Trong suốt q trình học mơn Đại số tuyến tính, nhóm chúng em nhận nhiều quan tâm, giúp đỡ kiến thức từ thầy/cơ, anh/chị khóa bạn khóa Ngồi nhóm em xin gửi lời cảm ơn chân thành đến cô Nguyễn Xuân Mỹ giảng viên giảng dạy môn Đại số tuyến tính người hướng dẫn nhóm em thực đề tài Nhờ hướng dẫn giải đáp thắc mắc, khó khăn nhóm gặp vướng mắc q trình làm vơ kịp thời kết nhóm làm thành tiến độ Sự hướng dẫn cô kim nam giúp nhóm chúng em làm việc hiệu dù thành viên q trình liên lạc khó khăn, gắn kết mối quan hệ tốt thành viên nhóm sinh viên với giảng viên Lời cuối, xin lần gửi lời biết ơn sâu sắc đến cá nhân, thầy/cô dành thời gian dẫn cho nhóm Đây niềm tin, nguồn động lực to lớn để nhóm đạt kết Nhóm chúng em xin chân thành cảm ơn ạ! LỜI MỞ ĐẦU Đại số tuyến tính nói chung có nhiều ứng dụng hầu hết lĩnh vực khoa học: kinh tế, mơi trường, cơng nghệ máy tính, xử lí tín hiệu, đồ họa,… Một phần nhỏ số phải nhắc đến phương pháp phân tích SVD nhiều tốn khác Phương pháp phân tích suy biến (singular value decomposition) viết tắt SVD phương pháp thuộc nhóm matrix factorization (Ma trận thừa số hóa) phát triển lần đầu nhà hình học vi phân Ban đầu mục đích phương pháp tìm phép xoay khơng gian cho tích vơ hướng vector khơng thay đổi Từ mối liên hệ khái niệm ma trận trực giao hình thành để tạo phép xoay đặc biệt Phương pháp SVD phát triển dựa tính chất ma trận trực giao ma trận đường chéo để tìm ma trận xấp xỉ với ma trận gốc Phương pháp sau ứng dụng rộng rãi lĩnh vực hình học vi phân, hồi qui tuyến tính, xử lý hình ảnh, cluaxstering, thuật toán nèn giảm chiều liệu, khử nhiễu âm thanh, khử nhiễu hình ảnh… I 1.1 CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD: Mục tiêu phân tích suy biến SVD Phương pháp SVD tìm lớp ma trận xấp xỉ tốt với ma trận cho trước dựa khoảng cách norm Frobenios ma trận Người ta chứng minh ma trận xấp xỉ tốt biểu diễn dạng tích ma trận đặc biệt bao gồm ma trận trực giao (orthogonal matrix) ma trận đường chéo (diagonal matrix) Quá trình nhân ma trận thực chất trình biến đổi điểm liệu ma trận gốc thông qua phép xoay trục (rotation) phép thay đổi độ lớn (scaling) từ tạo điểm liệu không gian Điều đặc biệt ma trận đường chéo phần tử giá trị riêng ma trận gốc Những điểm liệu khơng gian giữ 100% thông tin ban đầu giữ phần lớn thông tin liệu ban đầu thông qua phép truncate SVD Bằng cách xếp trị riêng theo thứ tự giảm dần đường chéo thuật tốn SVD thu ma trận xấp xỉ tốt mà đảm bảo giảm hạng ma trận sau biến đổi kích thước ma trận nhân tử nằm giới hạn cho phép Do tiết kiệm thời gian chi phí tính tốn đồng thời tìm giá trị dự báo cho ma trận gốc với mức độ xác cao Do đó, để tiếp cận thuật tốn phân tích SVD, cần phải nắm kiến thức sở tạo nên Gọi tắt Cơ sở lí thuyết việc phân tích SVD Chúng ta tham khảo thêm khái niệm, tính chất định lí liên quan đến vấn đề qua quyển: “Đặng Văn Vinh, Giáo trình Đại số tuyến tính, NXB ĐHQG 2020) - Ma trận, Định thức - Trị riêng vecto riêng - Khái niệm Họ trực giao trực chuẩn Trực giao hóa GramSchmidt - Chéo hóa ma trận, chéo hóa trực giao tính chất chúng 1.2 Q trình phân tích SVD ma trận dựa sở lí thuyết nêu trên: Singular Value Decomposition ứng dụng bật Đại số tuyến tính Bất kỳ ma trận A với cấp mxn (không thiết phải ma trận vng), ta phân tích thành dạng: 𝐴𝑚× 𝑛 = 𝑄𝑚×𝑚 𝛴𝑚×𝑛 (𝑃𝑛×𝑛 ) 𝑇 (!) Trong Q P ma trận trực giao; Σ ma trận chéo không vuông (cấp mxn) với phần tử đường chéo 𝜎1 ≥ 𝜎2 ≥ ⋯ ≥ 𝜎𝑟 ≥ = = ⋯ = , Σ ma trận vng nhưng, ta coi ma trận chéo miễn phần tử khác nằm đường chéo (tức vị trí có số hàng số cột nhau); r Rank(A) số lượng phần tử khác ma trận đường chéo Σ *Chú ý cách biểu diễn (!) khơng nhất, ta cần đổi dấu Q P thỏa mãn Biểu diễn SVD qua trường hợp ma trận A: +TH1: 𝑚 < 𝑛 +TH2: 𝑚 > 𝑛 (H1: SVD cho ma trận A khi: 𝑚 < 𝑛 (hình trên), 𝑚 > 𝑛 (hình dưới) Σ ma trận đường chéo với phần tử giảm dần khơng âm Màu đỏ đậm thể giá trị cao Các ô màu trắng ma trận thể giá trị 0.) NGUỒN GỐC SVD Cho A ma trận thực mxn Ta chứng minh tập hợp trị riêng khác không 𝐴𝐴𝑇 𝐴𝑇 𝐴 trùng Thật vậy, giả sử 𝜆𝑜 trị riêng (eigenvalue) khác 𝐴𝐴𝑇 𝑋𝑜 vector riêng (eigenvector) 𝐴𝐴𝑇 tương ứng Khi : 𝐴𝐴𝑇 𝑋𝑜 = 𝜆𝑜 𝑋𝑜 ➪ Suy ra: 𝐴𝑇 𝐴𝐴𝑇 𝑋𝑜 = 𝐴𝑇 𝜆𝑜 𝑋𝑜 Điều tương đương với 𝐴𝑇 𝐴(𝐴𝑇 𝑋𝑜 ) = 𝐴𝑇 (𝜆𝑜 𝑋𝑜 ) = 𝜆𝑜 (𝐴𝑇 𝑋𝑜 ).Vì 𝜆𝑜 khác nên 𝐴𝑇 𝑋𝑜 khác Suy 𝜆𝑜 trị riêng 𝐴𝑇 𝐴 (𝐴𝑇 𝑋𝑜 ) vector riêng 𝐴𝑇 𝐴 Vì ma trận 𝐴𝐴𝑇 𝐴𝑇 𝐴 ma trận đối xứng, nên chúng chéo hóa trực giao Khi đó: 𝐴𝐴𝑇 = (𝑄𝛴𝑃𝑇 )(𝑄𝛴𝑃𝑇 )𝑇 = 𝑄𝛴𝑃 𝑇 𝑃𝛴 𝑇 𝑄𝑇 = 𝑄𝛴𝛴 𝑇 𝑄𝑇 (vì 𝑃𝑇 𝑃 = 𝐼, 𝐼 ma trận đơn vị) = 𝑄𝐷1 𝑄𝑇 𝐴𝑇 𝐴 = (𝑄𝛴𝑃𝑇 )𝑇 (𝑄𝛴𝑃𝑇 ) = 𝑃𝛴 𝑇 𝑄𝑇 𝑄𝛴𝑃𝑇 = 𝑃𝛴 𝑇 𝛴𝑃𝑇 (vì 𝑄𝑇 𝑄 = 𝐼, 𝐼 ma trận đơn vị) = 𝑃𝐷2 𝑃𝑇 Suy - Các cột ma trận 𝑄 vector 𝐴𝐴𝑇 𝜎1 , 𝜎2 , … 𝜎𝑟 trị riêng khác 𝐴𝐴𝑇 - Các cột ma trận 𝑃 vector 𝐴𝑇 𝐴 𝜎1 , 𝜎2 , … 𝜎𝑟 trị riêng khác 𝐴𝑇 𝐴 - 𝐷1 , 𝐷2 ma trận chéo với trị riêng tương ứng 𝐴𝐴𝑇 𝐴𝑇 𝐴 𝜎1 , 𝜎2 , … 𝜎𝑟 Ta xếp 𝜎1 , 𝜎2 , … 𝜎𝑟 cho 𝜎1 > 𝜎2 > ⋯ > 𝜎𝑟 (hình A1) COMPACT SVD ( SVD gọn nhẹ hơn) Gọi 𝑄 = (𝑞1 |𝑞2 | … |𝑞𝑚 ) 𝑣à 𝑃 = (𝑝1 |𝑝2 | … |𝑝𝑛 ) Viết lại biểu thức (!) dạng tổng với Rank (A) = 𝐴 = 𝜎1 𝑞1 𝑝1 𝑇 + 𝜎2 𝑞2 𝑝2 𝑇 + ⋯ + 𝜎𝑟 𝑞𝑟 𝑝𝑟 𝑇 Với 𝑞𝑖 𝑝𝑖 𝑇 ma trận có hạng Rõ ràng với cách phân tích này, ta nhận thấy ma trận 𝐴 phụ thuộc vào r cột 𝑄, 𝑃 r phần tử khác không đường chéo 𝛴 Ta có phân tích gọn 𝐴 gọi Compact SVD : 𝐴 = 𝑄𝑟 𝛴𝑟 (𝑃𝑟 )𝑇 Với 𝑄𝑟 𝑃𝑟 ma trận tạo nên từ cột 𝑄 𝑃 tương ứng, 𝛴𝑟 ma trận tạo 𝑟 hàng 𝑟 cột 𝛴 Nếu ma trận 𝐴 có rank nhỏ nhiều so với số hàng số cột 𝑟 ≪ 𝑚, 𝑛 , ta lợi nhiều việc lưu trữ Dưới ví dụ minh hoạ với 𝑚 = 4, 𝑛 = 6, 𝑟 = (H2: Biểu diễn SVD dạng thu gọn biểu diễn ma trận dạng tổng ma trận có rank 1.) 1.3 Sau đây, ta xét số ví dụ phân tích SVD ma trận bất kì: Bước : Xác định ma trận A(cỡ bao nhiêu) để tiến hành phân tích SVD Bước : Thực chéo hóa trực giao : 𝐴𝐴𝑇 = 𝑄𝐷1 𝑄𝑇 2.1 : Viết phương trình đặc trưng 𝐴𝐴𝑇 Từ tính giá trị riêng 𝐴𝐴𝑇 Viết ma trận đường chéo 𝐷1 có phần tử giá trị riêng, ta vừa tìm được.(Lưu ý phải xếp theo thứ tự giảm dần) 2.2 : Tìm vecto riêng 𝐴𝐴𝑇 Từ ta tính ma trận 𝑄, cột 𝑄 vecto riêng 𝐴𝐴𝑇 Bước : Thực chéo hóa trực giao 𝐴𝑇 𝐴 = 𝑃𝐷2 𝑃𝑇 Tương tự bước 2.1, 2.2 ta tính 𝑃 𝐷2 Chọn 𝛴𝑚×𝑛 cách chọn ma trận cỡ tương ứng phù hợp với 𝐷1 hay 𝐷2 Sau lấy bậc tất phần tử đường chéo Bước : Vậy phân tích SVD ma trận A : 𝐴𝑚× 𝑛 = 𝑄𝑚×𝑚 𝛴𝑚×𝑛 (𝑃𝑛×𝑛 ) 𝑇 Nhận xét: Như từ liệu ban đầu, viết dạng ma trận Q trình chéo hóa trực giao ma trận ma trận chuyển vị nó, phân tích SVD Trên sở đó, ta dễ dàng ứng dụng chúng vào nhiều lĩnh vực khác khoa học ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG VIỆC KHỬ NHIỄU HÌNH ẢNH Đặt vấn đề: II Trong sống nay, bắt gặp nhiều loại hình ảnh khác hoàn cảnh khác Chẳng hạn như: hinh ảnh chụp selfie, ảnh gia đình, ảnh đầy tính nghệ thuật nhiếp ảnh gia, ảnh thẻ mà bạn sinh viên dung làm thẻ sinh viên,….Hình ảnh phát kiến tuyệt vời nhân loại, chúng ghi lại khoảng khắc khiến ta dễ dàng hình dung vật việc thời điểm việc xảy rồi, chiêm ngưỡng khung cảnh đẹp khoảng cách vô xa, lúc nào, Để có đươc ảnh ta sử dụng nhiều phương tiện khác như điện thoại, máy chụp ảnh Nhưng nhiều trường hợp tập tin hình ảnh bị nhèo đi, bị nhiễu, chất lượng hình ảnh bị giảm tượng "Noise" ảnh hay gọi nhiễu ảnh thường dễ dàng bắt gặp mắt thường, giống với tượng hạt nhiễu (Grain) ảnh film Các đốm lấm nhỏ xuất hình ảnh chụp vùng tối nơi có điều kiện ánh sáng thấp trình quay, chụp ảnh điều kiện môi trường tác động khiến cho hình ảnh khơng cịn giữ độ chân thực Như vậy, vấn đề cần đặt để khử nhiễu tập tin hình ảnh mà mong muốn? Về mặt ý nghĩa: Nếu như, xử lí tốt tập tin hình ảnh theo tiêu chí (trọng tâm, xác , hiệu tiết kiệm thời gian) việc giúp ích cho ta nhiều Trong nghiên cứu hình ảnh, giúp ta tiết kiệm thời gian Còn doanh nghiệp chuyên lĩnh vực truyền thông đa phương tiện, xử lí tốt file hình ảnh, tiết kiệm nhiều chi phí việc thiết kế phần mềm đó, hay đơn giản tăng chất lượng hình ảnh q trình thiết kế poster, trang trí, thiết kế hình ảnh quảng cáo chun nghiệp Từ hướng đến nhiều đối tượng khách hàng với trải nghiệm chất lượng hình ảnh tuyệt vời, chân thật đặt biệt khơng cịn bị nhiễu, bị nhèo Các tập đồn cơng nghệ lớn ngày đầu tư vào lĩnh vực hình ảnh, thấy rõ nét mảng điện thoại thông minh thiết bị di động sử dụng ngày khơng cịn nghe, gọi, nhắn tin mà camera gắn lên chúng ngày nâng cấp số lượng lẫn chất lượng xử lí để chụp ảnh kỉ niệm, selfie ảnh đẹp, xu tương lai nắm bắt xu nắm bắt thành cơng Khử nhiễu hình ảnh qua thuật tốn phân tích SVD a Về ứng dụng hỗ trợ: Hiện có nhiều ứng dụng hỗ trợ xử lí hình ảnh, đặc biệt khử nhiễu dễ sử dụng tiếp cận với người dùng cách nhanh chóng Có thể kể đến như:, Adobe Photoshop, Adobe Photoshop Lightroom, Affinity Photo, CyberLink PhotoDirector, Corel PaintShop Pro,… Điểm chung tất phần mềm chúng viết dựa đoạn Code xử lí hình ảnh C++, C#, Pascal, Python, Matlab….Chúng ta nghiên cứu cách xử lí hình ảnh từ ngơn ngữ lập trình Trên phương diện khảo sát nhóm, thực khử nhiễu hình ảnh Matlab lẽ: phần mềm cung cấp mơi trường hồn hảo cơng cụ tính tốn lập trình Người sử dụng thực phép tính tốn với ma trận , vẽ đồ thị, hàm số tạo thuật tốn riêng cho Đồng thời matlab liên kết với nhiều ngơn ngữ lập trình khác thuận tiện cho người sử dụng b Về thuật toán Ảnh gốc “pic.tif” Trong Matlab, có nhiều phương pháp khác để khử nhiễu hình ảnh phép biến đổi Fourier hữu hạn, phân tích SVD, phân tích thành phần PCA… Như trình bày phần 1.1, việc khử nhiễu phân tích SVD có nhiều ưu điểm thuận lợi, thông qua việc biến đổi điểm liệu không gian, imt = imread('pic.tif'); mà đảm bảo hạng ma trận kích thước imt= im2double(imt); nhân tử ma trận giới hạn cho phép imt=imresize(imt,[256,256]); figure; Như vậy, nhờ thuật tốn code thể xóa bỏ imshow(imt);title('Ảnh Gốc') “vết nhiễu” hình ảnh từ giúp đầu %apply MSVD [X1, U1] = MSVD(imt); hình ảnh chất lượng %apply IMSVD imf = IMSVD(X1,U1); Q trình khử nhiễu hình ảnh SVD thơng qua Matlab: Q trình phân tích SVD cho file hình ảnh matlab trải qua bước sau Bước 1: Giả sử, ta có file âm máy (đi dạng jpg,tif,png…) ta chèn vào matlab Ta chèn đọc ảnh lệnh “imread” Bước 2: Chuyển ảnh sang dạng double lên “im2double” Bước 3: Trả hình ảnh chọn có tỷ lệ nhân với kích thước hình ảnh đầu vào Hình ảnh đầu vào hình ảnh thang độ xám, RGB, nhị phân phân loại – Sử dụng lệnh “imresize” Bước 4: Xuất hình ảnh gốc ban đầu – Sử dụng lệnh “figure; imshow” Bước 5: Chúng ta tiến hành phân tích SVD để khử hình ảnh bị nhiễu đó, ngun tắc mã hóa thành ma trận gồm nhân tử để chương trình matlab nhận dạng được, từ bắt đầu phân tích SVD để khử nhiễu Sử dụng: %%%%%%MSVD %%%% function [Y,U] = MSVD(x) % multiresolution SVD (MSVD) % input-> x: image (spatial domain) % outputs-> Y: one level MSVD decomposition of x % U: the unitary matrix (U in SVD) % x=imresize(x,[256,256]); [m,n] = size(x); m = m/2; n = n/2; A = zeros(4,m*n); for j = 1:n for i = 1:m A(:,i + (j-1)*m) = reshape(x((i1)*2+(1:2),(j-1)*2+(1:2)),4,1); end end [U,S] = svd(A); U S T = U'*A; Y.LL = reshape(T(1,:),m,n); Y.LH = reshape(T(2,:),m,n); Y.HL = reshape(T(3,:),m,n); Y.HH = reshape(T(4,:),m,n); %%%%IMSVD %%%%% function[x1] = IMSVD(Y,U) % inverse MSVD (IMSVD) % Inputs-> Y: MSVD coefficients & U: unitary matrix (U in SVD) % output-> x: image (spaitial domain) [m,n] = size(Y.LL); mn = m*n; T1 = zeros(4,mn); T1(1,:) = reshape((Y.LL),1,mn); T1(2,:) = reshape((Y.LH),1,mn); T1(3,:) = reshape((Y.HL),1,mn); T1(4,:) = reshape((Y.HH),1,mn); % figure,imshow(Y.LL,[]); A1 = U * T1; x1 = zeros(m*2,n*2); for j = 1:n for i = 1:m x1((i-1)*2+(1:2), (j-1)*2+(1:2)) = reshape(A1(:,i+(j-1)*m),2,2); end end figure,imshow(x1,[]);title('Ảnh khử nhiễu') a) MSVD lệnh “function [Y,U] = MSVD(x)” Phân tích SVD ma trận A lệnh [U,S]= svd(A) Với ma trận A=Q.∑ 𝑃 Gán Q=U, ∑ 𝑃=S b) IMSVD “function [Y,U] = MSVD(x)” lệnh Bước 6: Trải qua q trình phân tích ma trận A thành SVD, hình ảnh xử lí Hồn tất xử lí ta phóng to thu nhỏ ảnh click chuột vào biểu tượng kính lúp khung ảnh, thơng tin ảnh xem cách click chuột vào biểu tượng data tips khung ảnh Như qua thao tác kết hợp với sở lí thuyết, có thể: Hiểu chất SVD Các trình việc phân tích SVD ma trận A Ý nghĩa, tầm qua trọng việc khử nhiễu hình ảnh nói chung phân tích SVD thơng qua chương trình Matlab nói riêng Nắm sơ lược thao tác bản, bước đầu làm quen với giao diện Matlab III Chương trình Matlab Sau phần trình bày Code Matlab phân tích SVD để khử nhiễu hình ảnh nhóm Trình bày cách thuyết trình Matlab online IV Nguồn tham khảo Trong q trình nhóm thực việc nghiên cứu, có sử dụng, tham khảo số tài liệu, trang web sau: Nguồn tham khảo - Aisha, 2019 Viblo [Online] Available at: https://viblo.asia/p/handbook-singular-values-decomposition-va-mot-so-ungdung-yMnKMOoml7P - Steve Brunton 2020 [Online] : Singular Value Decomposition (SVD): Overview Available at: https://youtu.be/gXbThCXjZFM - Anon 2017 Bài 26: Singular Value Decomposition s.l.:Machine Learning Cơ Bản - Vinh, Đ.V 2020 Đại số tuyến tính.NXB Đại Học Quốc Gia TP Hồ Chí Minh - MIT OpenCourseWare 2016 : Singular Value Decomposition (the SVD) Available at: https://youtu.be/mBcLRGuAFUk ... PHÂN TÍCH SVD Mục tiêu phân tích SVD Q trình phân tích SVD thơng qua ma trận Một số ví dụ ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH Đặt vấn đề - Ý nghĩa khử nhiễu hình. .. tiến hành phân tích SVD để khử hình ảnh bị nhiễu đó, ngun tắc mã hóa thành ma trận gồm nhân tử để chương trình matlab nhận dạng được, từ bắt đầu phân tích SVD để khử nhiễu Sử dụng: %%%%%%MSVD %%%%... chuyển vị nó, phân tích SVD Trên sở đó, ta dễ dàng ứng dụng chúng vào nhiều lĩnh vực khác khoa học ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG VIỆC KHỬ NHIỄU HÌNH ẢNH Đặt vấn đề: II Trong sống nay, bắt