1. Trang chủ
  2. » Luận Văn - Báo Cáo

SVD và ứng dụng của SVD trong việc xử lý nhiễu hình ảnh

14 133 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 885,57 KB

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA KHOA HỌC ỨNG DỤNG BỘ MÔN TOÁN ỨNG DỤNG BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH CHỦ ĐỀ 10 ỨNG DỤNG SVD ĐỂ KHỬ NHIỄU HÌNH ẢNH GV HƯỚN.

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM KHOA KHOA HỌC & ỨNG DỤNG BỘ MƠN TỐN ỨNG DỤNG BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH CHỦ ĐỀ 10: ỨNG DỤNG SVD ĐỂ KHỬ NHIỄU HÌNH ẢNH GV HƯỚNG DẪN: NGUYỄN XUÂN MỸ Lớp DL01_Nhóm 10 Danh sách thành viên: STT MSSV Họ tên Ghi 1835044 Nguyễn Viết Việt Nhóm trưởng 1713971 Lê Thành Vinh Tìm tài liệu 2115377 Lê Như Ý Phân tích 2010786 Lưu Nguyễn Phú Vinh Viết Code 1915966 Bùi Sỹ Tuấn Vũ Viết Code Mục lục CHƯƠNG I: CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD Mục tiêu phân tích suy biến SVD Q trình phân tích SVD ma trận dựa sở lí thuyết nêu Ví dụ phân tích SVD ma trận bất kì: CHƯƠNG II: ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG VIỆC KHỬ NHIỄU HÌNH ẢNH 10 Đặt vấn đề 10 Khử nhiễu hình ảnh thơng qua thuật tốn phân tích SVD 11 Q trình khử nhiễu hình ảnh SVD thơng qua Python 12 Chương trình Python 13 LỜI CẢM ƠN Để hoàn thành đề tài tập lớn lần này, trước hết nhóm chúng em xin chân thành cảm ơn hướng dẫn, giúp đỡ, quan tâm từ quý thầy cô, bạn bè lớp Nhóm đặc biệt cảm ơn Trần Xn Mỹ sức truyền đạt kiến thức môn Đại số tuyến tính hỗ trợ chúng em để hồn thành đề tài Cảm ơn hợp tác thành viên, người góp sức để hồn thành báo cáo Vì cịn tồn hạn chế mặt kiến thức, trình làm chúng em khơng tránh khỏi sai sót, kính mong nhận góp ý bạn Điều động lực để nhóm 10 chúng em hồn thiện MỞ ĐẦU MƠN HỌC Đại số tuyến tính mơn học có tầm quan trọng không sinh viên trường đại học Bách Khoa Thành phố Hồ Chí Minh nói riêng mà sinh viên ngành khoa học kỹ thuật, cơng nghệ nói chung Đạ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 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… CHƯƠNG I: 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 vector riêng − Khái niệm Họ trực giao trực chuẩn Trực giao hóa Gram-Schmidt − Chéo hóa ma trận, chéo hóa trực giao tính chất chúng 2 Q trình phân tích SVD ma trận dựa sở lí thuyết nêu 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 vuông), ta phân tích thành dạng: 𝐴𝑚× 𝑛 = 𝑄𝑚×𝑚 𝛴𝑚×𝑛 (𝑃𝑛×𝑛 ) 𝑇 (1) 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 vuông 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 (1) khơng nhất, ta cầMn đổi dấu Q P thỏa mãn • Biểu diễn SVD qua trường hợp ma trận A: ▪ TH1: mn Hình 2: SVD cho ma trận A khi: 𝑚 > 𝑛 Σ 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ị • 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 𝑄 sở không gian riêng ma trận 𝐴𝐴𝑇 sau trực giao hóa Gram - Schmidt 𝜎1 , 𝜎2 , … 𝜎𝑟 trị riêng khác 𝐴𝐴𝑇 - Các cột ma trận 𝑃 sở không gian riêng ma trận 𝐴𝑇 𝐴 sau trực giao hóa Gram - Schmidt 𝜎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 > ⋯ > 𝜎𝑟 • COMPACT SVD Gọi 𝑄 = (𝑞1 |𝑞2 | … |𝑞𝑚 ) 𝑣à 𝑃 = (𝑝1 |𝑝2 | … |𝑝𝑛 ) Viết lại biểu thức (1) 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, 𝑟 = Hình 3: 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 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 𝐴𝐴𝑇 Sau trục giao hóa Gram - Schmidt sở không gian 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 Bước 4: 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 5:Vậy phân tích SVD ma trận A :𝐴𝑚× 𝑛 = 𝑄𝑚×𝑚 𝛴𝑚×𝑛 (𝑃𝑛×𝑛 ) 𝑇 CHƯƠNG II: ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG VIỆC KHỬ NHIỄU HÌNH ẢNH Đặt vấn đề Trong sống nay, bắt gặp nhiều loại hình ảnh khác hồn cảnh khác Chẳng hạn như: hình ảnh trường ĐHBK TP.HCM, hình ảnh giao thơng, hình ảnh thành phố, hình ảnh chân dung người,… Hình 4: Hình ảnh TP.HCM đêm Có hình ảnh lưu lại nhiên lý khơng tên làm cho chúng khơng cịn sắc nét, bị giảm chất lượng, nhiễu… khiến cho người xem khó chịu Hình 5: Hình ảnh bị nhiễu Như vậy, vấn đề đặt để khử nhiễu tập tin ảnh mong muốn Khử nhiễu hình ảnh thơng qua thuật tốn phân tích SVD − Hiện có nhiều ngơn ngữ lập trình xử lý hình ảnh, đặc biệt chỉnh sửa hình ảnh để người tiếp cận Python, Matlab…Về phương diện khảo sát nhóm, chúng em chọn Python lẽ: ngôn ngữ cung cấp môi trường hồn hảo cơng cụ tính tốn, tốc độ xử lý nhanh, sở hữu lượng lớn khối sở liệu, phục vụ hiệu cho chương trình mang tính thương mại − Trong Python, 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 trên, 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, mà đảm bảo hạng ma trận kích thước nhân tử ma trận giới hạn cho phép Như vậy, nhờ thuật tốn xóa bỏ “vết nhiễu” hình ảnh từ giúp đầu hình ảnh chất lượng Quá trình khử nhiễu hình ảnh SVD thông qua Python Bước 1: Các thư viện chúng em dùng để phân tích pandas, matplotlib.pyplot, numpy, imageio, scipy Chèn ảnh bị nhiễu lệnh image_path Bước 2: Chuẩn hóa ảnh bị nhiễu mức xám sử dụng lệnh img = imread(image_path, as_gray=True) Hình 6: Ảnh chuẩn hóa Bước 3: Chúng ta tiến hành phân tích SVD để khử hình ảnh bị nhiễu đó, nguyên tắc mã hóa thành ma trận gồm nhân tử để chương trình Python nhận dạng được, từ bắt đầu phân tích SVD để khử nhiễu Phân tích SVD ma trận A lệnh u, s, vh = np.linalg.svd(img, full_matrices=False) Bước 4: Trải qua q trình phân tích ma trận A thành SVD, chọn điểm khơng gian điểm nhiễu để xử lí.Sau xử lí hồn tất, ta dùng câu lệnh plt.show() để hiển thị hình ảnh mà ta vừa xử lí, để đối chiếu so sánh 4 Chương trình Python import pandas as pd import matplotlib.pyplot as plt from matplotlib.pyplot import imsave import numpy as np from imageio import imread import scipy image_path = 'E:\Onedrive\Desktop\DSTT\BTTL\_noise_image.png' start= 0.5 steps = 0.1 img = imread(image_path, as_gray=True) plt.imshow(img) plt.suptitle('Original Image in gray scale') plt.axis('off') plt.show() u, s, vh = np.linalg.svd(img, full_matrices=False) threshold = start while (threshold < 1.0): tmp = len(s) new_s = s[:] for i in range (tmp): j = tmp - i - if (i >= tmp * threshold): break new_s[j] = 0.0 denosed = np.array(np.dot(u * new_s, vh), dtype=int) plt.imshow(denosed) plt.axis('off') plt.suptitle(f'threshold: {str(round(threshold,2))}') plt.show() imsave(image_path.split('.')[0] +'_'+ str(round(threshold,2))+'_denoised.jpg', denosed) threshold += steps Nhận xét: Qua trình khử nhiễu SVD chương trình Python , ta thấy hình ảnh bớt nhiễu, nhiên chất lượng hình ảnh giảm đáng kể Hình 7: Ảnh sau khử nhiễu ... đề Trong sống nay, bắt gặp nhiều loại hình ảnh khác hồn cảnh khác Chẳng hạn như: hình ảnh trường ĐHBK TP.HCM, hình ảnh giao thơng, hình ảnh thành phố, hình ảnh chân dung người,… Hình 4: Hình ảnh. .. CỦA PHÂN TÍCH SVD TRONG VIỆC KHỬ NHIỄU HÌNH ẢNH 10 Đặt vấn đề 10 Khử nhiễu hình ảnh thơng qua thuật tốn phân tích SVD 11 Q trình khử nhiễu hình ảnh SVD thơng qua... ứng phù hợp với

Ngày đăng: 17/12/2022, 15:01

TỪ KHÓA LIÊN QUAN

w