1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO BÀI TẬP LỚN đại SỐ TUYẾN TÍNH ỨNG DỤNG SVD để KHỬ NHIỄU âm THANH

17 880 18
Tài liệu đã được kiểm tra trùng lặp

Đ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 17
Dung lượng 747,45 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Điều đặc biệt của ma trận đường ché

Trang 1

ĐẠ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Ủ ĐỀ 8:

ỨNG DỤNG SVD

ĐỂ KHỬ NHIỄU ÂM THANH

LỚP L08 _ NHÓM 8

GV HƯỚNG DẪN: NGUYỄN ANH THI

NGUYỄN XUÂN MỸ

TP.HCM, Ngày 6 tháng 12 năm 2021

Trang 2

ĐẠ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Ủ ĐỀ 8:

ỨNG DỤNG SVD ĐỂ KHỬ NHIỄU ÂM THANH

Danh sách thành viên:

TP.HCM, ngày 6 tháng 12 năm 2021

2113940 Nguyễn Thành Long Tìm thông tin

2114063 Nguyễn Trần Thái Minh Coder

2110504 Nguyễn Thanh Sang Tìm Thông tin

2115057 Đào Nguyễn Nam Trân Tìm thông tin

Trang 3

LỜI CẢM ƠN

Để hoàn thành đề tài bà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 sự hướng dẫn, giúp đỡ, quan tâm từ quý thầy cô, bạn

bè trong lớp

Đặc biệt, nhóm xin gửi đến cô Nguyễn Anh Thi (lý thuyết) và cô

Nguyễn Xuân Mỹ (bài tập) đã ra sức truyền đạt, chỉ dẫn chúng em đề tài báo cáo lần này lời cảm ơn sâu sắc nhất.

Không thể không nhắc tới sự hợp tác, đoàn kết của các thành viên trong nhóm, xin cảm ơn mọi người đã cùng góp sức, góp lực để hoàn thành bài báo cáo này.

Vì còn tồn tại những hạn chế về mặt kiến thức, trong quá trình trao đổi, hoàn thành bài project cuối kì , chúng em không tránh khỏi những sai sót, kính mong nhận được sự đóng góp từ quý thầy, cô Những góp ý từ thầy

cô sẽ là động lực để chúng em hoàn thiện hơn Một lần nữa, nhóm 8_ L08 xin gửi lời biết ơn chân thành đến thầy, cô vì đã giúp chúng em đạt được kết quả này.

Nhóm thực hiện đề tài

Nhóm 8 - Lớp L08

3

Trang 4

LỜI MỞ ĐẦU MÔN HỌC

Đại số tuyến tính là môn học có tầm quan trọng không chỉ đối với sinh viên trường đại học Bách Khoa Thành phố Hồ Chí Minh nói riêng mà còn đối với 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ó rất nhiều ứng dụng trong hầu hết các lĩnh vực trong 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ỏ trong số đó phải nhắc đến là phương pháp

phân tích SVD trong nhiều bài toán khác nhau 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, cluaxstering, các thuật toán nèn

và giảm chiều dữ liệu, khử nhiễu âm thanh….

MỤC LỤC

4

Trang 5

LỜI CẢM ƠN

1

MỞ ĐẦU MỞ HỌC VÀ SƠ LƯỢC BTL

2

Chương 1: CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD

4

Chương 2: ỨNG DỤNG CỦA SVD TRONG KHỬ NHIỄU

ÂM THANH 9

Chương 1: CHƯƠNG TRÌNH MATLAB

13

3.1 Các câu lệnh được sử dụng

13

3.2 Đoạn code

14

DANH MỤC CÁC TÀI LIỆU THAM KHẢO

15

5

Trang 6

CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD:

Mục tiêu của phân tích suy biến SVD

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

Do đó, để tiếp cận được thuật toán phân tích SVD, chúng ta cần phải nắm những kiến thức cơ bản về cơ sở tạo nên nó Gọi tắt là Cơ sở lí thuyết của việc phân tích SVD Chúng ta có thể tham khảo thêm những khái niệm, tính chất định lí liên quan đến những vấn đề dưới đây 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 và vecto riêng

- Khái niệm về Họ trực giao và 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 và những tính chất của chúng.

6

Trang 7

Quá trình phân tích SVD của một ma trận dựa trên cơ

sở lí thuyết đã nêu trên:

Singular Value Decomposition là ứng dụng nổi bật trong Đại số tuyến tính Bất

kỳ một ma trận A nào với cấp mxn (không nhất thiết phải là ma trận vuông), ta đều có thể phân tích thành dạng:

(!)

Trong đó Q và P là các ma trận trực giao; và Σ là ma trận chéo không vuông

(cấp mxn) với các phần tử trên đường chéo , mặc dù Σ không phải ma trận vuông nhưng, ta vẫn có thể coi nó là ma trận chéo miễn là các phần tử khác 0 của nó chỉ nằm trên đường chéo (tức là tại các vị trí có chỉ số hàng và chỉ số cột như nhau); r là Rank(A) bằng số lượng phần tử khác 0 trong ma trận đường chéo Σ

*Chú ý rằng cách biểu diễn (!) không là duy nhất, vì ta chỉ cần đổi dấu Q và P

thì vẫn thỏa mãn

Biểu diễn SVD qua các trường hợp của ma trận A:

+TH1:

+TH2:

7

Trang 8

(H1: SVD cho ma trận A khi: (hình trên), và (hình dưới) Σ là một ma trận đường chéo với các phần tử trên đó giảm dần và không âm Màu đỏ càng đậm thể hiện giá trị càng cao Các ô màu trắng trên ma trận này thể hiện giá trị 0.)

NGUỒN GỐC SVD

Cho A là một ma trận thực mxn Ta chứng minh rằng tập hợp các trị riêng khác không của và là trùng nhau Thật vậy, giả sử là một trị riêng (eigenvalue)

khác 0 của và là vector riêng (eigenvector) của tương ứng Khi đó :

➪ Suy ra:

Điều này tương đương với Vì khác 0 nên khác 0 Suy ra là trị riêng của và

là vector riêng của

Vì ma trận và là 2 ma trận đối xứng, nên chúng chéo hóa trực giao được Khi đó:

(vì , là ma trận đơn vị)

(vì , là ma trận đơn vị)

Suy ra

- Các cột của ma trận là những cơ sở của các không gian con riêng của ma

- Các cột của ma trận là những cơ sở của các không gian con riêng của ma trận

của sau khi trực giao hóa Gram - Schmidt và các là các trị riêng khác 0 của

- là ma trận chéo với trị riêng tương ứng của và là Ta sắp xếp các sao cho (hình A1)

COMPACT SVD ( SVD gọn nhẹ hơn)

Gọi

8

Trang 9

Viết lại biểu thức (!) dưới dạng tổng với Rank (A) = 1

Với mỗi là một ma trận có hạng bằng 1

Rõ ràng với cách phân tích này, ta nhận thấy rằng ma trận phụ thuộc vào r cột đầu tiên của và r phần tử khác không trên đường chéo Ta có phân tích gọn hơn của gọi là Compact SVD :

Với và là các ma trận được tạo nên từ các cột của và tương ứng, là ma trận con được tạo bởi hàng đầu tiên và cột đầu tiên của Nếu ma trận có rank nhỏ hơn rất nhiều so với số hàng và số cột , ta sẽ được lợi nhiều về việc lưu trữ Dưới đây là ví dụ minh hoạ với

(H2: Biểu diễn SVD dạng thu gọn và biểu diễn ma trận dưới dạng tổng các

ma trận có rank bằng 1.)

Sau đây, ta sẽ xét một số ví dụ về phân tích SVD của một ma trận bất kì:

9

Trang 10

Bước 1 : Xác định ma trận A(cỡ bao nhiêu) để tiến hành phân tích SVD

Bước 2 : Thực hiện chéo hóa trực giao :

2.1 : Viết phương trình đặc trưng của Từ đó chúng ta sẽ tính được các giá trị riêng của Viết được ma trận đường chéo có các phần tử là những giá trị riêng, ta vừa tìm được.(Lưu ý phải sắp xếp nó theo thứ tự giảm dần) 2.2 : Tìm vecto riêng của Sau đó trục giao hóa Gram - Schmidt những cơ

sở của không gian con riêng đó Từ đó ta tính được ma trận , các cột của là các vecto riêng của

Bước 3 : Thực hiện chéo hóa trực giao

 Tương tự các bước 2.1, 2.2 ta tính được và

Bước 4: Chọn bằng cách chọn ma trận cỡ tương ứng phù hợp với hay Sau đó lấy căn bậc 2 của tất cả những phần tử trên đường chéo

Bước 5:Vậy phân tích SVD của ma trận A sẽ là :

Giả sử phân tích SVD một ma trận vuông cấp 2, ta thực hiện như sau :

ma trận Quá quá trình chéo hóa trực giao ma trận và ma trận chuyển vị của nó, chúng ta được phân tích SVD Trên cơ sở đó, ta có thể dễ dàng ứng dụng chúng vào nhiều lĩnh vực khác nhau trong khoa học

ỨNG DỤNG CỦA PHÂN TÍCH SVD

TRONG VIỆC KHỬ NHIỄU

ÂM THANH

Đặt vấn đề:

10

Trang 11

Trong cuộc sống hiện nay, chúng ta bắt gặp được rất nhiều loại âm thanh khác nhau trong từng hoàn cảnh khác nhau Chẳng hạn như: âm thanh trong một buổi hòa nhạc, tiếng trẻ con nô đùa với nhau, tiếng xe cộ chạy trên đường…

Đôi khi chúng ta muốn ghi lại những âm thanh,

những khoảng khắc bất chợt nào đó, ta có thể sử

dụng nhiều phương tiện khác như như điện

thoại, máy ghi âm Hay ta muốn nghe lại một

bản nhạc nhẹ nhàng Nhưng một điều chắc chắn

không thể tránh khỏi đó là những tập tin âm

thanh đó luôn chứa đầy tạp âm(tiếng ồn, tiếng

gió hú ríu rít,…) khiến cho chất lượng âm thanh

giảm đáng kể gây khó chịu cho người nghe

Lấy một ví dụ điển hình là một bạn học sinh muốn ghi

âm lại lời thầy giáo giảng bài trên lớp, nếu như đó là file ghi âm nguyên thủy ( file gốc chưa qua xử lí) thì cậu ấy sẽ rất khó chịu do có quá nhiều tạp âm xung quanh, như vậy sẽ ảnh hưởng đến việc tiếp thu bài của bạn học sinh đó

Như vậy, một vấn đề cần đặt ra rằng làm sao để khử nhiễu được một tập tin âm thanh mà chúng ta mong muốn?

 Về mặt ý nghĩa: Nếu như, chúng ta có thể xử lí tốt một tập tin âm thanh theo các tiêu chí (trọng tâm, chính xác , hiệu quả và tiết kiệm thời gian) thì việc đó sẽ giúp ích cho ta rất nhiều Trong nghiên cứu về âm thanh,

sẽ giúp ta tiết kiệm thời gian hơn Còn trong doanh nghiệp chuyên về lĩnh vực truyền thông đa phương tiện, nếu xử lí tốt file âm thanh, sẽ tiết kiệm được rất nhiều chi phí trong việc thiết kế một phần mềm nào đó, hay chỉ đơn giản là tăng chất lượng âm thanh trong quá trình edit video chuyên nghiệp Từ đó nó sẽ hướng đến nhiều đối tượng khách hàng hơn

11

Trang 12

với một trải nghiệm về chất lượng âm thanh tuyệt vời, chân thật và đặt biệt không còn tạp âm nữa

 Chẳng hạn như các tập đoàn công nghệ hàng đầu lớn trên thế giới luôn chạy đua, cạnh tranh gay gắt với nhau về việc thu và phát âm thanh trên các thiết bị điện thoại thông minh, ti vi thông minh… làm sao cho tối ưu

và hiệu quả nhất Điều đó đồng nghĩa với việc sẽ tạo điều kiện mở rộng

cơ hội việc làm trong lĩnh vực âm thanh nói chung và công nghệ số nói riêng Nắm bắt được xu thế, nắm bắt được công nghệ chính là nắm lấy thành công

Khử nhiễu âm thanh qua thuật toán phân tích SVD

a. Về ứng dụng hỗ trợ: Hiện tại có rất nhiều ứng dụng hỗ trợ xử lí

âm thanh, đặc biệt là khử nhiễu dễ sử dụng và tiếp cận với người dùng một cách nhanh chóng Có thể kể đến như: Audio Editor, Ringtone Editor, WavePad Sound Editor, AudioDroid,

Điểm chung của tất cả các phần mềm này chúng đều được viết dựa trên những đoạn Code xử lí âm thanh trong C++, C#, Pascal, Python, Matlab….Chúng ta

sẽ nghiên cứu cách xử lí âm thanh từ những ngôn ngữ lập trình này Trên phương diện khảo sát của nhóm, chúng ta sẽ thực hiện khử nhiễu âm thanh trên Matlab bởi lẽ: nó là một phần mềm cung cấp một môi trường hoàn hảo về công

cụ tính toán cũng như lập trình Người sử dụng có thể thực hiện phép tính toán với ma trận , vẽ đồ thị, hàm số và tạo ra những thuật toán riêng cho mình Đồng thời matlab cũng 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

Trong Matlab, có rất nhiều phương pháp khác nhau để khử nhiễu âm thanh như phép biến đổi Fourier hữu hạn, phân tích SVD, phân tích thành phần chính PCA…

Như đã trình bày ở phần 1.1, việc khử nhiễu bằng phân tích SVD sẽ có nhiều

ưu điểm thuận lợi, thông qua việc biến đổi những điểm dữ liệu mới trong không gian, mà vẫn đảm bảo được hạng của ma trận và kích thước các nhân tử của ma trận trong một giới hạn cho phép Như vậy, nhờ thuật toán đó chúng ta cod thể xóa bỏ những “vết nhiễu” của âm thanh từ đó giúp đầu ra của âm thanh được chất lượng hơn

Quá trình khử nhiễu âm thanh bằnh SVD thông qua Matlab:

Quá trình phân tích SVD cho một file âm thanh trên matlab trải qua các bước

cơ bản như sau

Bước 1: Giả sử, ta có một file âm thanh trong máy (đuôi có thể ở dạng wav,

mp3…) ta chèn nó vào matlab Bằng lệnh “audioread”

Bước 2: Chúng ta chọn giá trị mẫu(y) và tần số của mẫu(Fs, đơn vị Hz), sau

đó thông qua lệnh “sound”, chúng ta có thể kiểm tra file âm thanh vừa mới nạp

vào matlab

12

Trang 13

Bước 3: Qua câu lệnh “plot(y)” hay plot the sound, chúng ta có thể thấy được

file âm thanh đó trực quan trên biểu đồ, giả sử sau khi chèn được file âm thanh,

ta có biểu đồ như sau: ( với những phần đánh dấu x màu xanh là những đoạn

âm thanh có nhiễu với tần số xuất hiện cao, chúng ta cần phải loại bỏ chúng)

Thông qua câu lệnh “Zoom plot(y)” ta có thể quan sát kĩ hơn phần bị nhiễu

trong đoạn âm thanh đó:

Bước 4: Chúng ta tiến hành phân tích SVD để khử đoạn âm thanh bị nhiễu đó,

trên nguyên tắc mã hóa thành một ma trận gồm các nhân tử để chương trình matlab có thể nhận dạnng được, từ đó bắt đầu phân tích SVD để khử nhiễu nó

a) Chuyển sound về ma trận A

b) Phân tích SVD ma trận A bởi lệnh [U,S,V]= svd(A)

Ta nhập các dữ liệu U,S,V để tiến hành phân tích SVD Với U và V là những

ma trận trực giao và S là ma trận đường chéo.(Như hình minh họa các giá trị U,S,V )

Bước 5: Trải qua quá trình phân tích ma trận A thành SVD, chọn các điểm

trong không gian chính là những đoạn bị tạp âm, để xử lí.Sau khi xử lí hoàn

tất, ta dùng câu lệnh “figure, subplot” để hiển thị đoạn âm thanh mà ta vừa

xử lí, để đối chiếu so sánh

13

Trang 14

Dùng lệnh “zoom plot”để ta có thể quan sát kĩ hơn, phần đã bị loại bỏ trong

quá trình khử nhiễu do phân tích SVD:

Như vậy qua 5 thao tác trên kết hợp với cơ sở lí thuyết, chúng ta đã có

thể:

1. Hiểu được bản chất của SVD

2. Các quá trình của việc phân tích SVD của ma trận A

3. Ý nghĩa, tầm qua trọng của việc khử nhiễu âm thanh nói chung và phân tích SVD thông qua chương trình Matlab nói riêng

4. Nắm sơ lược cáv thao tác cơ bản, bước đầu làm quen với giao diện Matlab

CHƯƠNG TRÌNH MATLAB:

1 Các câu lệnh được sử dụng

-Clear all: Xóa các biến, dữ liệu trước đó

14

Trang 15

-Audioread(‘Tên file’): Mở 1 file âm thanh cần khử nhiễu có sẵn trong máy tính

-Reshape: Sắp xếp thứ tự các số hạng trong 1 ma trận hay tạo ra nhiều mảng trong ma trận đó

-[U,S,V] = svd (A) : phân tích SVD ma trận A

-Sigmas= diag(S): gán các giá trị trên đường chéo chính của ma trận S -plot: Vẽ đồ thị

-rank= [1000] : Đặt giá trị k để file xuất ra âm thanh không bị nhiễu

-for i=1:length(rank) approx_sigmas = sigmas : loại bỏ các trị riêng thấp -approx_S = S : gắn trị riêng đã xử lí vào ma trận S

-Figure: đặt tên file đồ thị

-Xlebel, ylebel: đặt tên trục x, trục y

- Sound: Lệnh phát âm thanh

- Pause: Thực hiện câu lệnh sau 20s

- Diag: Lấy các giá trị trên đường chéo

- Reduction_diagonal_line(80:end) = 0: Khử các giá trị đường chéo từ hàng 80 trở đi

về giá trị 0

- Fillmissing: Điền vào các giá trị trống vào các giá trị đứng trước đó

2 Đoạn code

%% BTL NHÓM 8 ĐẠI SỐ TUYẾN TÍNH GV : NGUYỄN ANH THI , NGUYỄN XUÂN MỸ

clc; clear;

%% CODE

% Đọc file âm thanh

[Y,Hz] = audioread( 'amthanh.wav' );

X = reshape(Y,[],768);

[U,S,V] = svd(X);

t = 0:1/Hz:(length(Y)-1)/Hz;

figure( 'name' , 'File đồ thị âm thanh ban đầu' );

15

Ngày đăng: 18/12/2021, 07:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w