TÓM TẮT ĐỀ TÀIVới đề tài “Phương pháp Fourier rời rạc DFT để khử nhiễu”, bài báo cáo của nhóm 1 sẽ thể hiện nội dung liên quan đến cách sử dụng Fourier hữu hạn để khử nhiễu, cụ thể là kh
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI:
ỨNG DỤNG FOURIER RỜI RẠC (DFT) ĐỂ KHỬ NHIỄU
LỚP L12 - NHÓM 1 GVHD: NGUYỄN XUÂN MỸ
Thành phố Hồ Chí Minh, ngày 20 tháng 04 năm 2024
Trang 2BẢNG PHÂN CÔNG CÔNG VIỆC VÀ KẾT QUẢ THỰC HIỆN ĐỀ TÀI CỦA TỪNG
THÀNH VIÊN NHÓM
5 Cao Hữu Thiên Hoàng 2311030 - Code MATLAB
6 Cao Nguyễn Khánh Toàn 2313473 - Soạn nội dung 100%
8 Chu Văn Long Vũ 2313948 - Tổng hợp báo cáo
- Chỉnh sửa nội dung
100%
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 3
PHẦN I TÓM TẮT ĐỀ TÀI 4
PHẦN II NỘI DUNG BÁO CÁO 5
2.1 TỔNG QUAN VỀ PHÉP BIẾN ĐỔI FOURIER 5
2.2 LÝ THUYẾT VẬN DỤNG 6
2.2.1 Định nghĩa ánh xạ tuyến tính 6
2.2.2 Nhân và ảnh của ánh xạ tuyến tính 6
2.2.3 Biểu diễn ma trận của ánh xạ tuyến tính 7
2.2.4 Biến đổi Fourier 7
3.1 Đoạn code sử dụng trong MATLAB 8
3.2 Mô tả code bằng sơ đồ khối 10
3.3 Giải thích đoạn code 11
3.2.1 Giải thích hàm được sử dụng 11
3.2.2 Giải thích chi tiết dòng lệnh 12
3.3 Ví dụ minh họa 13
3.4 Nhận xét 14
TÀI LIỆU THAM KHẢO 16
Trang 4LỜI NÓI ĐẦU
Kỹ thuật đã mang lại nhiều lợi ích và đóng góp đáng kể cho nền văn minh của loài người trong suốt lịch sử phát triển Trong thế kỷ hai mươi, các kỹ sư đã thực hiện nhiều đối với phục vụ cho con người Nhưng ở hiện tại, thế kỷ 21, kỹ thuật đang đối mặt với rất nhiều thách thức lớn như là làm cho năng lượng mặt trời trở nên kinh tế hơn, cung cấp năng lượng nhiệt hạch,… Để giải quyết các thách thức này, giáo dục kỹ thuật là hết sức quan trọng nhằm đào tạo những kỹ sư thực hiện sứ mạng trong thế kỷ 21
“Đại số tuyến tính” - một môn học có tầm quan trọng đối với sinh viên của khối ngành kỹ thuật Trường Đại học Bách khoa - ĐHQG-HCM Môn học được xem như là cánh cửa đầu tiên mở ra để sinh viên có thể hiểu sâu sắc được ngành nghề mà mình đã chọn trong tương lai Trong môn học này, người học có được cảm hứng, sự say mê, khao khát học hỏi, sự tập trung trong học tập, những kỹ năng làm việc nhóm, tư duy đổi mới sáng tạo, khả năng phản biện, không ngại bày tỏ quan điểm cá nhân xây dựng cho bản thân những mục tiêu và những ước
mơ nghề nghiệp, có kế hoạch học tập và hành động
Dưới đây là báo cáo bài tập lớn của nhóm!
Trang 5PHẦN I TÓM TẮT ĐỀ TÀI
Với đề tài “Phương pháp Fourier rời rạc (DFT) để khử nhiễu”, bài báo cáo của nhóm 1 sẽ thể hiện nội dung liên quan đến cách sử dụng Fourier hữu hạn để khử nhiễu, cụ thể là khử nhiễu âm thanh cho file âm thanh có chứa những tạp âm không mong muốn Bài báo cáo chỉ
ra cách sử dụng Fourier và các bước lập trình code để khử nhiễu âm thanh trên công cụ code MATLAB Từ đó rút ra những kiến thức và kinh nghiệm trong việc giải quyết vấn đề, nâng cao kỹ năng làm việc nhóm và có được hiểu biết về công cụ MATLAB để diễn tả các bài toán một cách cụ thể, ngắn gọn, súc tích và dễ hiểu Qua đó biết cách xử lý khử nhiễu đoạn
âm thanh và hiểu thêm về ứng dụng của MATLAB và lập trình
Trang 6PHẦN II NỘI DUNG BÁO CÁO
1 ĐẶT VẤN ĐỀ
Tại sao chúng ta cần phải tách khử nhiễu âm thanh? Việc tách hay khử nhiễu âm thanh là quá trình loại bỏ những phần không mong muốn hoặc gây nhiễu trong tín hiệu âm thanh Có một số lý do chúng ta cần phải thực hiện việc này:
1.1 Cải thiện chất lượng âm thanh: Nhiễu âm thanh có thể làm giảm chất lượng của tín
hiệu âm thanh, làm mất đi các chi tiết và độ rõ nét của âm thanh gốc Bằng cách tách nhiễu, chúng ta có thể loại bỏ các thành phần không mong muốn và tái tạo lại âm thanh trong trạng thái gốc, cải thiện chất lượng và trải nghiệm nghe nhạc
1.2 Phân biệt giữa tín hiệu và nhiễu: Trong nhiều trường hợp, chúng ta mong muốn
phân biệt giữa tín hiệu âm thanh và nhiễu Ví dụ: trong viễn thông, chúng ta muốn tách nhiễu chỉ để lấy tín hiệu giọng nói và loại bỏ các nhiễu khác như tiếng ồn xung quanh
1.3 Ứng dụng trong xử lý tín hiệu: Tách nhiễu âm thanh là một bước quan trọng trong
xử lý tín hiệu âm thanh Nó được sử dụng trong các ứng dụng như xử lý giọng nói, xử lý âm thanh, xử lý tín hiệu âm thanh trong hệ thống giao tiếp, xử lý âm thanh trong hệ thống giải trí,…
1.4 Cải thiện hiệu suất hệ thống: Nếu chúng ta không tách nhiễu âm thanh, các thành
phần nhiễu có thể gây ảnh hưởng đến hiệu suất của hệ thống Ví dụ: trong hệ thống nhận dạng giọng nói, nhiễu có thể giảm độ chính xác quá trình nhận dạng giọng nói
Tóm lại, việc tách nhiễu âm thanh là quan trọng để cải thiện chất lượng âm thanh, phân biệt giữa tín hiệu và nhiễu, ứng dụng trong xử lý tín hiệu và cải thiện hiệu suất hệ thống Và một trong những cách để khử nhiễu âm thanh chính là dùng phép biến đổi Fourier hữu hạn
2 NỘI DUNG
2.1 TỔNG QUAN VỀ PHÉP BIẾN ĐỔI FOURIER
Biến đổi Fourier là một trong những kĩ thuật được sử dụng rộng rãi nhất trong toán ứng dụng Công việc ban đầu của biến đổi Fourier là việc sử dụng các hàm lượng giác trong giải tích bắt nguồn từ các công trình biến đổi của nhà toán học Leonhard Euler (1701 – 1783), Alexis – Claude Clairaut (1713 – 1765) và Joseph Louis Lagrange (1736 – 1813)
Euler là người đầu tiên đưa ra công thức cho các hệ số của chuỗi Fourier Dựa trên các nghiên cứu của Euler, Clairaut đã công bố công thức đầu tiên cho phép biến đổi Fourier rời rạc (DFT) vào năm 1754 là cái chúng ta hiện biết Năm 1805, Carl Friendrich Gauss
Trang 7(1777-1855) đã công bố công thức cho DFT Năm 1822, Joseph Fourier (1768-1830) đưa ra công trình về dòng nhiệt cung cấp nền tảng cho phép biến đổi Fourier và nguồn gốc tên gọi của nó Năm 1965, James Cooley và John Tukey, đã phát minh ra thuật toán biến đổi Fourier nhanh (FFT), thuật toán này đã cho phép một loạt các ứng dụng số trong thời đại kỹ thuật số ra đời Các ứng dụng này bao gồm nén dữ liệu JPEG, phân tích cấu trúc tinh thể, giải phương trình
vi phân từng phần, xử lí tín hiệu nhiễu,…
2.2 LÝ THUYẾT VẬN DỤNG
2.2.1 Định nghĩa ánh xạ tuyến tính
Cho X, Y là hai tập hợp khác rỗng tùy ý, ánh xạ � giữa X và Y là quy tắc cho tương ứng mỗi phần tử � ∈ � chỉ tồn tại một phần tử � ∈ �
Hay �: � → � là ánh xạ, nếu ∀ � ∈ �, ∃! � ∈ �, � = �(�).
Cho X, Y là hai không gian trên cùng trường số K, ánh xạ �: � → � gọi là ánh xạ tuyến tính (AXTT) nếu:
�(� + �) = �(�) + �(�) (tính bảo toàn phép cộng)
�(��) = ��(�) (tính bảo toàn phép nhân với vô hướng)
2.2.2 Nhân và ảnh của ánh xạ tuyến tính
2.2.2.1 Định nghĩa
Cho ánh xạ tuyến tính �: � → �
Nhân (Ker) của f được định nghĩa là tập hợp vector x của không gian vector X sao cho f(x) = 0:
Kerf = {∀� � �| �(�) = 0}
Ảnh (Imf) của f được định nghĩa là tập hợp các phần tử y của không gian vector Y sao cho tồn tại x � � để y = f(x):
Imf = {� � �|∃� � �, � = �(�)}
2.2.2.2 Định lý
Định lý 1: Nhân (Ker) của f là không gian con của X Ảnh (Imf) là không gian con
của Y và dim(Kerf) + dim(Imf) = dim(X)
Ghi chú: Kerf là nghiệm của phương trình f(x) = 0
Imf là tập các ảnh của f (trong hàm số gọi là tập giá trị)
Định lý 2: Cho ánh xạ tuyến tính �: � → �
Trang 8Ảnh của tập sinh là tập sinh của ảnh.
X ={�1, �2, , �� → Imf =<f(�1), f(�2), ,f(��)>
2.2.3 Biểu diễn ma trận của ánh xạ tuyến tính
Định nghĩa:
Cho ánh xạ �: � → � là một ánh xạ tuyến tính
E ={�1, �2, , ��} là một cơ sở của U
F = {f(�1), f(�2), ,f(��)} là một cơ sở của V
→ ��,� = ([f(e1 )] F|[f(e2 )] F|…|[f(en )] F) được gọi là ma trận của ánh xạ tuyến tính f trong cở
sở E
Cách tính nhanh AE,F =�−1�(�) =
mn m
m
n n
a a
a
a a
a
a a
a
.
.
2 1
2 22
21
1 12
11
Với F = (�1|�2| |��); f(E) = ( f(�1)| f(�2)|…|f(��))
Trường hợp U = V, E là một cơ sở của U, khi đó:
A E,E = A E = ([f(e 1 )] E|[f(e2 )] E|…|[f(en )] E) Cách tính nhanh: AE,F =�−1�(�)
Với E = (�1|�2| |��); f(E) = ( f(�1)| f(�2)|…|f(��))
Mối liên hệ của ma trận ánh xạ tuyến tính trong hai cơ sở E và F:
Cho ánh xạ �: � → � là một ánh xạ tuyến tính
E ={�1, �2, , ��} là một cơ sở của U
F = {f(�1), f(�2), ,f(��)} là một cơ sở của V
→ A F= �−1���; trong đó ��→� = �−1�
2.2.4 Biến đổi Fourier
2.2.4.1 Mục đích
Mục đích của phép biến đổi Fourier là tách hàm số thành tổng các hàm sin và hàm cosin (cos), mỗi hàm có các tần số khác nhau Các hàm liên tục thường được xấp xỉ bằng tổ hợp tuyến tính của hàm sin và hàm cosin
2.2.4.2 Biến đổi Fourier hữu hạn
Trang 9Trong toán học, phép biến đổi Fourier rời rạc (DFT) hay còn gọi là phép biến đổi Fourier hữu hạn là phép biến đổi đại số cho các tín hiệu rời rạc theo thời gian và đầu vào là một chuỗi hữu hạn các số thực hoặc số phức Phép biến đổi này là một công cụ lý tưởng để
xử lý thông tin trên máy tính và được sử dụng rộng rãi trong xử lý tín hiệu và các ngành liên quan đến phân tích tần số chứa trong tín hiệu, để giải phương trình đạo hàm riêng và các phép như tích chập
Phép biến đổi Fourier có thể được tính nhanh bởi thuật toán biến đổi Fourier nhanh (FFT)
Biến đổi Fourier được xác định cho một vector x với n các điểm được lấy mẫu thống nhất bởi �� + 1 = �=0�−1 �
� �����+1
2.2.4.3 Ứng dụng biến đổi Fourier hữu hạn trong khử nhiễu âm thanh
Ứng dụng phép biến đổi � = ��× � được gọi là phép biến đổi Fourier rời rạc của vector X
Vector � = ��× � có dạng � = � + ��
Vector A chứa hệ số ��tại 0�−1�����2���
Vector B chứa hệ số �� tại 0�−1�����2���
Nhờ việc dùng phép biến đổi Fourier rời rạc, ta chuyển tín hiệu X ở miền thời gian thành tín hiệu ở miền tần số gồm tổng các hàm
Giả sử tín hiệu ban đầu có dạng 0�−1�����2��� + 0�−1�����2��� , tín hiệu nhiễu sau khi phân tích rời rạc Fourier rời rạc � = ��× �, so sánh với hình trước và sau khi phân tích ta xác định được tần số của tín hiệu chính và tần số của tín hiệu nhiễu Lọc tín hiệu nhiễu, chỉ giữ lại tín hiệu chính, sau đó thực hiện phân tích Fourier nghịch để thu được tín hiệu đã khử nhiễu
3 SỬ DỤNG CÔNG CỤ MATLAB TRONG BIẾN ĐỔI FOURIER HỮU HẠN ĐỂ KHỬ NHIỄU ÂM THANH
3.1 Đoạn code sử dụng trong MATLAB
clc;
% Nhap file dau vao
[input, fs] = audioread('Bản-ghi-âm-mới-2.mp3');
outputfile ='Bản-ghi-âm-mới-2.wav';
Trang 10audiowrite(outputfile, input, fs);
[y, Fs] = audioread('Bản-ghi-âm-mới-2.wav');
%Nghe am thanh goc va tinh toan
sound(y, Fs);
pause(length(y)/Fs);
L = length(y);
%Bien doi Fourier
Y = fft(y);
M = max(abs(Y));
% Ve do thi cua file goc
figure(1);
subplot(2,1,1)
plot(abs(Y),'k');
title('Do thi am thanh truoc khi loc');
xlabel('Tan so (Hz)');
ylabel('Bien do cua am (Amplitude)');
%Loc tan so nhieu va bien doi Fourier nguoc
thresh = 0.0189;
Ythresh = (abs(Y) > thresh * M).*Y;
N = sum(abs(Ythresh) > 0) / L;
Z = real(ifft(Ythresh));
%Ve do thi sau khi loc
Trang 11plot(abs(Ythresh),'c');
title('Do thi am thanh sau khi loc');
xlabel('Tan so (Hz)');
ylabel('Bien do cua am (Amplitude)'); figure(2);
plot(abs(Y),'k');
holdon;
plot(abs(Ythresh),'c');
title('So sanh do thi trươc va sau khi loc'); xlabel('Tan so (Hz)');
ylabel('Bien do cua am (Amplitude)');
%Nghe am thanh sau khi loc
sound(Z,Fs);
3.2 Mô tả code bằng sơ đồ khối.
Trang 12Hình 1: Giải thích quy trình code bằng sơ đồ khối
3.3 Giải thích đoạn code
3.2.1 Giải thích hàm được sử dụng
tốc độ / tần số lấy mẫu cho dữ liệu đó (Fs)
(Fs) vào một tệp khác Tên tệp đầu vào cũng chỉ định định dạng tệp đầu ra Kiểu dữ liệu đầu
ra phụ thuộc vào định dạng tệp đầu ra và kiểu dữ liệu của dữ liệu âm thanh(y)
Fourier nhanh (FFT), trong đó y có cùng kích thước với x
Trang 13- subplot(m, n, p) : Tạo 1 lưới các ô hiển thị đồ thị với m hàng và n cột, sau đó chọn ô
thứ p để hiển thị biểu đồ
3.2.2 Giải thích chi tiết dòng lệnh
kỳ lệnh nào khác
thanh và lưu dữ liệu âm thanh vào biến input, cùng với tần số lấy mẫu vào biến fs
thanh từ định dạng mp3 sang wav
tệp âm thanh được chỉ định trong biến outputfile với tần số lấy mẫu là fs
thanh mới tạo ra 'Bản-ghi-âm-mới-2.wav' và lưu dữ liệu vào biến y, cùng với tần số lấy mẫu vào biến Fs
gian của âm thanh được phát (length(y)/Fs là số giây của âm thanh y)
thanh (dưới dạng vecto) chia cho tần số lấy mẫu (theo giây) để ra thời gian cần thiết
miền tần số
Trang 14-xlabel('Tan so (Hz)'); : Đặt nhãn cho trục x.
chuẩn xác các tần số nhiễu trong file, tránh trường hợp mất 1 phần hoặc toàn bộ dữ liệu file sau khi lọc
+ abs(Y) tạo ra 1 vecto chứa giá trị của tất cả biên độ tuyệt đối của tất cả tần số trong file âm thanh
giá trị tuyệt đối ở trên với ngưỡng thresh * M( 1 phần của giá trị biên độ tuyệt đối lớn nhất), các giá trị trong Y lớn hơn làtrue(1), còn lại sẽ làfalse(0)
+ *Y là phép nhân phần tử mang giá trị của biên độ tương ứng trước khi bước vào vecto logic, và chỉ những phần tử mang true(1) mới được giữ lại, còn lại sẽ bị loại bỏ (0 nhân
g cx bằng 0 thôi)
Fourier nghịch, chuyển từ miền tần số về lại miền thời gian
màu xanh lơ
màu xanh lơ
3.3 Ví dụ minh họa
Trang 15Hình 2: Đồ thị trước và sau khi đã lọc nhiễu
Hình 3: Đồ thị so sánh khi chưa lọc nhiễu có màu đỏ và sau khi lọc có màu xanh
3.4 Nhận xét
4 KẾT LUẬN
Trang 16Thông qua bài báo cáo về đề tài “Ứng dụng Fourier rời rạc (DFT) để khử nhiễu, nhóm 1
đã hoàn thành được các mục tiêu đặt ra, là tiền đề cho kết quả mà nhóm đã đạt được:
Về kiến thức:
- Củng cố kiến thức về Ánh xạ tuyến tính
- Trau dồi kiến thức về lập trình code trên MATLAB
- Hiểu được cách ứng dụng Fourier rời rạc để giảm nhiễu, cụ thể là trong tín hiệu âm thanh
Về kĩ năng
- Có thêm kĩ năng làm việc nhóm, biết cách xây dựng, lập kế hoạch, bố trí thời gian để thực hiện bài tập đúng theo tiến độ đề ra
- Giúp đỡ nhau để kết quả bài tập đạt được hiệu quả cao
Tổng kết lại, Ứng dụng Fourier để khử nhiễu âm thanh là một kỹ thuật hiệu quả giúp giảm nhiễu trong tín hiệu âm thanh Ứng dụng nãy đã cung cấp khả năng xác định và loại bỏ các thành phần tần số cụ thể của tiếng ồn Tuy nhiên, để hiệu quả khử nhiễu đạt được kết quả tối ưu, cần chọn lựa và xây dựng cho mình thuật toán thích hợp nhất
Trang 17TÀI LIỆU THAM KHẢO
[1] Meyer C.D, Matrix analysis and Applied linear algebra, SIAM, 2000, chapter 5, section 8 [2] Isaac Amidror, Mastering the Discrete Fourier Transform in One, Two or Several Dimensions: Pitfalls and Artifacts, Springer,2013"
[3] Đặng Văn Vinh (2020) Ánh xạ tuyến tính, GIÁO TRÌNH ĐẠI SỐ TUYẾN TÍNH, ĐHQG-HCM; Xưởng in Trường Đại học Bách khoa