Biến đổi Fourier Phép biến đổi Fourier được đặt tên theo nhà toán học người Pháp Joseph Fourier, là phép biến đổi một hàm số hoặc một tín hiệu theo miền thời gian sang miền tần số.. Phép
Trang 11
ĐẠ I HỌC QU C GIA THÀNH PHỐ HỒ CHÍ MINH Ố TRƯỜNG ĐẠI HỌC BÁCH KHOA
◦◦◦◊◦◦◦
BÁO CÁO BÀI T ẬP LỚ N MÔN ĐẠ I S TUY N TÍN Ố Ế H
ĐỀ TÀI 1 “Phương pháp Fourier rờ ạc( DFT) để i r khử nhiễu” GVHD : Nguy n H u Hi ễ ữ ệp L p : L10 HK232 ớ – Nhóm : 01
TPHCM , 2024
Trang 22
ĐẠ I HỌC QU C GIA THÀNH PHỐ HỒ CHÍ MINH Ố
TRƯỜNG ĐẠI HỌC BÁCH KHOA
◦◦◦◊◦◦◦
BÁO CÁO BÀI T P L N Ậ Ớ
MÔN ĐẠ I S TUY N TÍNH Ố Ế
ĐỀ TÀI 1 “Phương pháp Fourier rờ ạc (DFT) đểi r khử nhiễu”
GVHD Nguy n H u Hi p : ễ ữ ệ
L p : L10 ớ
Nhóm : 01
Danh sách thành viên:
TPHCM , 2024
Trang 33
NHẬN XÉT C ỦA GIÁO VIÊN HƯỚ NG D N Ẫ
Trang 44
LỜI M Ở ĐẦ U
Đạ ối s tuyến tính là trung tâm của hầu hết các lĩnh vực toán h cọ , là bộ môn thiên
v vi c nghiên c u và gi i quy t các về ệ ứ ả ế ấn đề liên quan đến không gian vector, ma tr n ậ
và h ệ phương trình tuyến tính Các đối tượng toán học được nghiên c u bao gứ ồm vector, không gian vector, phép toán trên vector, ma tr n và h ậ ệ phương trình tuyến tính
Đạ ối s tuyến tính có nhiều ứng dụng trong các lĩnh vực khác nhau như khoa học máy tính, vật lý, kỹ thuật, kinh tế ọ h c và nhiều lĩnh vực khác Nó cung cấp các công c ụ toán học m nh mạ ẽ để giải quyết các vấn đề liên quan đến không gian, biến đổi và quan
h tuy n tính gi a các bi n ệ ế ữ ế
Phương pháp Fourier rời rạc (DFT) là phép chuyển đổi một chuỗi hữu hạn các
m u có kho ng cách b ng nhau c a hàm thành mẫ ả ằ ủ ột chuỗi có cùng độ dài g m các m u ồ ẫ
có khoảng cách bằng nhau của biến đổi Fourier thời gian rời rạc (DTFT), là một giá trị
phức tạp chức năng của tần s DFT là phép biố ến đổi rờ ại r c quan tr ng nhọ ất, được s ử
dụng để thực hi n phân tích Fourier trong nhi u ng d ng thệ ề ứ ụ ực tế
Trang 55
MỤC L C Ụ
L I M Ờ Ở ĐẦ 4 U
M C LỤ ỤC 5 DANH MỤC HÌNH NH 6 Ả Chương 1 CƠ SỞ LÝ THUY T Ế 7
1.1 Chu i Fourier 7 ỗ 1.2 Biến đổi Fourier 8 1.3 Phép biến đổi Fourier rời rạc DFT 8 1.4 Tính ch t tuy n tính c a DFT 9 ấ ế ủ 1.5 Một số ứ ng dụng 10
Chương 2 CÁC BƯỚC CHI TIẾT DÙNG DFT KH NHI Ử ỄU 11 Chương 3 SẢN PHẨM C A NHÓM 12 Ủ
3.1 S n ph m c a nhóm 12 ả ẩ ủ 3.2 Thuật toán (Code) 17
Chương 4 KẾT QUẢ VÀ KẾT LU N 18 Ậ
4.1 Kết quả 18 4.2 Kết luận 18
TÀI LI U THAM KH O Ệ Ả 19 PHỤ ỤC……… L 19
Trang 66
DANH M C HÌNH Ụ ẢNH
Hình 1.1.……….………7
Hình 1.5.……… ………….10
Hình 3.1.1……….…….13
Hình 3.1.2……….…….14
Hình 3.1.3……….…….14
Hình 3.1.4a……… …… 15
Hình 3.1.4b……….…… 15
Hình 3.1.4c ……….…16
Hình 3.1.4d ……….…16
Hình 3.2 ……… ……….……17
Trang 77
CHƯƠNG I CƠ SỞ LÝ THUYẾT
1 Chu i Fourier ỗ
Như ta biết, chuỗi Taylor mình đã học ở giải tích 1 cho phép ta biểu diễn một hàm dưới dạng t ng vô hổ ạn các đa thức Tương tự thế, chu i Fourier cho phép ta biểu diễn ỗ
m t hàm tuộ ần hoàn dướ ại d ng t ng vô h n các hàm tuổ ạ ần hoàn cơ bản (sin và cos) dưới
một tần s nhố ất định
Công thức của Fourier trong không gian thực:
𝑆𝑁(𝑥) = 𝐴0+ ∑ 𝐴𝑛cos 2𝜋( 𝑝 𝑥) + 𝐵𝑛 𝑛sin 2𝜋( 𝑛𝑝 𝑥)
𝑁 𝑛=1
Phép biến đổi này có nhi u dề ạng và thường được tính toán dưới dạng s ph c: ố ứ
𝑆𝑁(𝑥) = ∑ 𝐶𝑛𝑒𝑖2𝜋𝑛𝑝𝑥
𝑁 𝑛=−𝑁
Hình 1.1: Một số sóng cơ bản cấu thành nên hàm sóng vuông
Xét m t hàm sóng vuông, Fourier series cho phép ta bi u di n ộ ể ễ
sóng này dưới dạng tổng các hàm tuần hoàn đã biết Việc thêm càng
nhi u các hàm tu n hoàn này lề ầ ại với hệ ố s nhất định cho ta lại gần
hơn với một sóng vuông chính xác Tại giới hạn, dãy Fourier cho ta
công thức chính xác của một sóng vuông dưới dạng tổng các hàm tuần hoàn cơ bản
Trang 88
2 Biến đổi Fourier
Phép biến đổi Fourier được đặt tên theo nhà toán học người Pháp Joseph Fourier, là phép biến đổi một hàm số hoặc một tín hiệu theo miền thời gian sang miền tần số Chẳng hạn như một bản nhạc có thể được phân tích dựa trên tần số của nó
Nói cách khác, thực hiện phép biến đổi Fourier transform lên một hàm số tuần hoàn là đi tìm chuỗi Fourier của hàm số đấy
3 Phép biến đổi Fourier r i r c (Discrete Fourier Transform)ờ ạ
Trong lĩnh vực xử lý tín hiệu, biến đổi Fourier rời rạc (DFT) chiếm vị trí hàng đầu nhờ sự tồn tại các thuật toán hiệu quả của biến đổi Fourier rời rạc DFT là phiên bản rời rạc của phép biến đổi Fourier
“Rời rạc” ở đây mang nghĩa không liên tục, hàm f(x) được biến đổi đang ở dạng bảng giá trị với các x mẫu theo một chu kì nhất định Nói cách khác, DFT biến đổi một dãy có hạn các mẫu thử của một hàm tuần hoàn với một tần số nhất định thành một dãy có độ dài tương tự độ mạnh của các tần số có mặt trong hàm đấy
- Với mỗi 𝑥𝑘trong dãy ta biến đổi thành 𝑋𝐾theo công thức
- Lưu ý: 𝑥𝑘 và 𝑋𝑘 là số phức
{𝑥𝑛} ∶= 𝑥0, 𝑥1,…𝑥𝑛−1 thành một dãy số phức khác,
{𝑋𝑛} ∶= 𝑋0, 𝑋1, … 𝑋𝑛−1được xác định bởi:
0
2
.
N n
n N k i n
k x e
S biự ến đổi đôi khi được biểu th b ng ký hi u ị ằ ệ 𝐹, như trong 𝑋 = 𝐹(𝑥) ặc 𝐹(𝑥) ho
hoặc 𝐹𝑥
Ở bài toán lọc nhiễu này, ta còn cần một phép biến đổi để đi từ dãy mẫu tần số đã lọc về lại dãy mẫu giá trị mới của hàm
Phép biến đổi ngược được cho bằng công thức:
0
2
.
1 N k
n N k i k
N
Trang 99
Trong phương trình , mỗi 𝑋𝑘là số phức có tọa độ cực là biên độ và pha của thành
(𝑒𝑖2𝜋𝑘𝑁𝑛) phần hình sin phức chức năng𝑥𝑛(xem Chuỗi Fourier rời rạc, tần số của hình sin là chu k m𝑘 ỳ ỗi 𝑁 mẫu )
Lưu ý thêm là nếu không có các giải pháp tối ưu hóa nào thì làm các phép tính này khá chậm (Time complexity: On^2), do có nhiều phép tính trùng nhau lồng nhau Giải pháp tối ưu hóa của DFT là thuật toán FFT, mình đã áp dụng FFT cho dự án thay vì DFT để nhanh hơn Biến đổi Fourier nhanh (FFT) là công cụ hữu hiệu để tính các biến đổi Fourier rời rạc Đòi hỏi bắt buộc thuật toán này là chiều dài N phải là lũy thừa của
2, tức là N có dạng Thuật toán này dựa vào trên việc khai triển biến đổi Fourier rời rạc của dãy có chiều dài N = 2𝑠 thành các tầng lớp nhỏ hơn
Cách mà trong đó nguyên tắc này thực hiện đưa đến nhiều thuật toán khác nhau, tất
cả đều có mục đích là cải thiện khả năng tăng tốc độ tính toán Đó là thuật toán FFT phân tích theo thời gian, thuật toán FFT phân tích theo tần số Đối với các thuật toán FFT chiều dài N thì chỉ cần 1
2𝑁𝑙𝑜𝑔2𝑁 phép toán nhân và 𝑁𝑙𝑜𝑔2𝑁 phép cộng Ngoài
ra, còn trình bày thuật toán biến đổi Fourier nhanh cho trường hợpN RC, trong đó R hoặc C không phải là lũy thừa của 2 Đối với thuật toán biến đổi Fourier nhanh cho trường hợp N RCthì chỉ cần N(R C)phép nhân
4 Tính ch t tuy n tính c a DFTấ ế ủ
DFT là một phép biến đổi tuyến tính do nó có tính chất chung của các phép biến đổi tuyến tính:
) ( )
)
(
) (
)
(
)
(
)
(
)
(
y F b x
F
a
by
ax
F
y
F
x
F
y
x
F
x
F
a
ax
F
Tính chất này đúng với mọi số phức a, b Do vậy, DFT có thể được biểu diễn dưới dạng phép nhân một ma trận cho một vector (ta coi hàm được DFT là một vector): Ax
x
F( )
Ma trận này là ma trận DFT, là một dạng của ma trận Vandermonde, có dạng tổng quát là:
Trang 1010
( 1).0 ( 1).1 ( 1).( 1)
N
F
với iN
N e
2
Đây là công thức cho căn đơn vị cấp N, là tất cả các nghiệm phức x sao cho xN1
- Ví dụ với N = 2 thì ma trận DFT là:
1 1 1 1 F
- Tương tự, ta có phép Inverse DFT hay phép biến đổi ngược từ dãy mẫu tần số dãy mẫu giá trị hàm cũng là một phép biến đổi tuyến tính với ma trận là ma trận nghịch đảo của ma trận DFT
5 M t s ng dộ ố ứ ụng
a Ứng dụng phân tích âm thanh (signal processing)
- Do âm thanh là tập hợp các tần số khác nhau, áp dụng DFT cho ta biết một mẫu âm thanh được cấu thành từ các tần số nào
- Việc áp dụng nhiều DFT cho ta tạo được một spectrogram
Hình 1.5 Ứng dụng trong phân tích âm thanh
Trang 1111
b Ứng dụng trong x ử lý dữ liệu
Một số thuật toán nén dữ liệu sử dụng một phiên bản chuyên dụng hóa của DFT như thuật toán biến đổi hàm cos rời rạc (DCT hay MDCT), các hệ số Fourier của các tần số cao được coi như dư thừa và được bỏ bớt Một áp dụng thực tế như thuật toán nén ảnh của tệp ảnh đinh dạng JPG theo tiêu chuẩn JPG2000
c Ứng dụng trong giải toán
DFT có thể được áp dụng để giải các phương trình vi phân riêng để quy một hàm phức tạp về các hàm lượng giác
DFT có thể được áp dụng để tính nhanh phép nhân hai đa thức Các hệ số của đa thức kết quả có thể được tính nhanh qua thuật toán DFT hoặc FFT
DFT có thể được dùng để tính nhanh phép nhân hai số thực lớn bằng cách coi chúng như hai đa thức hằng số
Trang 1212
KHỬ NHIỄU
Bước 1: Load audio vào buffer, lấy thông tin PCM từ buffer (PCM là Pulse code modulation, là một cách điện tử hóa âm thanh, mỗi sample lưu cao độ tại điểm đấy) Bước 2: Chạy thuật toán DFT lên chuỗi PCM để tách tần số
Bước 3: Lọc/loại bỏ các tần số nhiễu
Tần số nhiễu cho dự án này được coi là:
+ 1: xuất hiện ít
+ 2: quá cao hoặc quá thấp so với tầm giọng nói của người
Bước 4: Chạy thuật toán inverse DFT để có lại file âm thanh đã khử nhiễu
Trang 1313
CHƯƠNG 3 SẢN PHẨM 1.Sản phẩm của nhóm
Trong báo cáo bài tập lớn này, nhóm đã tạo một trang web có khả năng thực hiện chức năng lọc nhi u m t file âm thanh b nhiễ ộ ị ễu, từ đó cho ra sản phẩm là m t file âm ộ thanh đã đượ ọc l c bớt nhiễu so với âm thanh trước đó
Dưới đây là một vài hình ảnh giao diện cũng như cách thao tác trên trang web Khi vào trang ch ta s ủ ẽ thấy giao diện như hình dưới:
Hình 3.1.1 Giao diện của trang web
Ở khung giữa trang chủ, nhóm đã thêm các bước từ 1 đến 4 trong sử dụng thuật toán DFT để khử nhiễu âm thanh Phía dưới còn nhắc đến “Leniency slider”- thanh trượt điều chỉnh mức độ linh ho t cạ ủa bộ ọc lo i bỏ l ạ tần s để phù hợp hơn với từng ố trường h p cần l c ợ ọ
Ta nhấn chọn dòng “Choose an audio file” ở dưới cùng Sau khi nh n vào, ấ ta chọn
m t file âm thanh(.wav/.m4a/.ộ mp3) trong các thư mục của mình để thêm vào K t qu ế ả màn hình s hi n th lên các công c giúp chúng thẽ ể ị ụ ực hiện thao tác trên đó:
Trang 1414
Hình 3.1.2 File âm thanh (“thời sự”) chưa khử nhi u ễ
Khi hiển thị màn hình như trên, ta điều ch nh mỉ ức độ linh hoạt của đầ ọc bằu l ng cách kéo thanh “Leniency Modifer” sang trái/ phải Sau đó nhấn chọn “Process file”
để xử lý âm thanh Sau khi đã chọn “Process file” ta được 2 file âm thanh (1 file gố ởc trên và 1 file đã qua lọc nhiễu ở dưới”
Hình 3.1.3 File âm thanh (“thời sự”) đã khử nhi u ễ
Sau khi th c hi n các thao tác trên, tự ệ a đã có thể nghe âm thanh t ừ file đã khử nhi u ễ
nh ng t p âm Nữ ạ ếu đã hài lòng, ta có thể chọn “Download” để ả ề t i v Hoặc nếu chưa hài lòng, có thể chọn “Do it again” để điều ch nh l mỉ ại ức độ loại bỏ Và ta cũng có thể chọn “Change file” để khử nhiễu âm thanh khác mà không cần thoát ra vào lại trang web
Trang 1515
Các ví d ụ sau đây sẽ dùng m t file âm thanh chộ ứa một tần s chính (mố ột nốt nhạc) trên white noise với bộ lọc chạy theo leniency = 3 Để thấy độ hiệu quả của thuật toán,
ta sẽ đưa các file âm thanh vào các phần mềm phân tích âm thanh để quan sát s thay ự
đổi tần s âm thanh Quan sát những hình ố ảnh bên dướ ủa âm thanh trước và sau khi i c
kh nhi u (hình nh t ph n m m Audacity): ử ễ ả ừ ầ ề
Hình 3.1.4a Âm thanh chưa qua khử nhi u ễ
Hình 3.1.4b Âm thanh đã qua khử nhiễu
Trang 1616
Ta phân tích thêm các t n s c u thành cầ ố ấ ủa âm thanh trước và sau khi lọc, đư c ợ
kết quả như sau:
Hình 3.1.4c Tần s c a âm thanh nhi ố ủ ễu
Ta có thể thấy t n s cầ ố ủa âm thanh chưa qua lọc ch a nhiứ ều t n s ầ ố thừa c a ủ white noise và một t n s chính kho ng 1000Hz cầ ố ả ủa nốt nhạc
Hình 3.1.4d T n s c a âm thanh nhi u ầ ố ủ ễ
Ta có th ể thấy bộ ọc đã loại bỏ l các ti ng n th a và ch lế ồ ừ ỉ để ại tần s ố chính.
Trang 1717
2 Thuật toán (Code JavaScript)
Hình 3.2 Thuật toán
+ Giải thích code:
− Hàm này sẽ nhận một dãy PCM (Pulse Code Modulation) của input audio và một số chỉ bao nhiêu phần được lọc ra, số chỉ càng cao thì càng ít được lọc
− Hàm này sẽ chạy thuật toán FFT trên input, sau đó lọc ra tất cả những tần số có độ lớn thấp (thấp bao nhiêu tùy vào input của số chỉ)
− Sau khi đã lọc, ta chạy thuật toán iFFT để có dãy PCM mới
Trang 1818
CHƯƠNG 4 KẾT QUẢ, KẾT LUẬN
1 K t quế ả
− Khi khử âm thanh là một bài hát, huật toán có thể t lọc ra nốt nhạc thuần lẫn trong
nhiễu khi để số chỉ thấp
− Thuật toán cũng có thể lọc ra giọng người trong tiếng xe máy (audio lấy từ thời sự), tuy vậy, kết quả nghe không rõ giọng người do không lọc hết được nhiễu
Cần cải thiện thêm trong những ứng dụng lớn hơn
2 Kết luận
Phép bi n ế đổi Fourier h u h n (DFT- ữ ạ Discrete Fourier Transform) là một phép biến đổi
s d ng trong x lí âm thanh và tín hi u ử ụ ử ệ và được ứng d ng không ch trong âm thanh mà ụ ỉ còn rất nhiều lĩnh vực khác, đóng vai trò quan trọng trong nhiều lĩnh vực
Thông qua bài tập l n tìm hi u tài này và vớ ể đề ới sự phân chia công việc hợp lý cho
t ng thành viên trong nhóm, ý th c trách nhi m c a mừ ứ ệ ủ ỗi người mà nhóm em ã hoànđ thành được bài t p v i s c g ng ch nh chu nhậ ớ ự ố ắ ỉ ất Qua bài tập l n ớ này, nhóm đã:
- Tạo được sản ph m x ẩ ử lí âm thanh
- Hiể đượu c cách l c nhi m m t file âm thanh bọ ễ ộ ất kì ằb ng thu t toán DFT.ậ
- N m rõ các ng d ng c a môn hắ ứ ụ ủ ọc, đặc bi t là Fourier h u h n trong kh nhi u âm ệ ữ ạ ử ễ thanh và các lĩnh vực khác
- Nâng cao khả năng tìm tòi nghiên c u.ứ
- Biết các ph i hố ợp h ỗ trợ làm vi c nhóm hi u qu ệ ệ ả và tăng tính oàn kết của nhóm
- ng d ng môn hỨ ụ ọc th c tiự ễn t o s h ng thú v i môn h c ạ ự ứ ớ ọ
Trang 1919
TÀ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, Đại số tuyến tính, NXB Đại học Qu c gia, 2019 ố
[4] Biến đổi Fourier, https://vi.wikipedia.org/wiki/Bi%E1%%20BA%BFn_%C4% 91%%20E1%BB%95i_Fourier
[5] Phép biến đổi Fourier rời rạc, https://en.wikipedia.org/wiki/Discrete_Fourier_ Transform
PHỤ L C Ụ
Link trang web: https://ngocminhuniversityprojects.github.io/FFTNoiseRemoval/