ĐẠI HỌC QUỐC GIA TPHCM 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 ỨNG DỤNG FOURIER VÀO NÉN DỮ LIỆU GVHD Th s Nguyễn Hữu Hiệp Lớp L17 – Nhóm 11 STT MSSV Họ Tên Nhiệm[.]
Trang 1ĐẠI HỌC QUỐC GIA TPHCM 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: ỨNG DỤNG FOURIER VÀO NÉN DỮ LIỆU
GVHD: Th.s Nguyễn Hữu Hiệp Lớp: L17 – Nhóm 11
Thành Phố Hồ Chí Minh, Tháng 4 -2023
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1: MỞ ĐẦU 2
1.1Lí do chọn đề tài: 2
1.2 Yêu cầu: 2
1.3 Nhiệm vụ: 2
CHƯƠNG 2: CƠ SỞ LÍ THUYẾT 3
2.1 Định nghĩa ánh xạ tuyến tính: 3
2.2 Nhân và ảnh của ánh xạ tuyển tính: 3
2.2.1 Định nghĩa nhân của ánh xạ tuyến tính: 3
2.2.2 Định nghĩa ảnh của ánh xạ tuyến tính: 4
2.2.3 Định lí: 4
2.2.4 Mệnh đề: 4
2.2.5 Các bước tìm ảnh của ánh xạ tuyến tính: 4
2.3 Biểu diễn ma trận của ánh xạ tuyến tính: 5
2.3.1 Định nghĩa ma trận của ánh xạ tuyến tính: 5
2.3.2 Định lí: 5
2.3.3 Ma trận chuyển cơ sở, đồng dạng: 5
CHƯƠNG 3: GIỚI THIỆU KHAI TRIỂN FOURIER RỜI RẠC 8
3.1 Một số khái niệm cơ bản: 8
3.2 DFT cho tín hiệu một chiều: 9
3.2.1 Định nghĩa : 9
3.2.2 Một số tính chất của DFT: 9
3.3 DFT hai chiều: 11
3.3.1 Định nghĩa: 11
3.3.2 Tính chất: 11
CHƯƠNG 4: ỨNG DỤNG CỦA KHAI TRIỂN FOURIER RỜI RẠC TRONG NÉN DỮ LIỆU 13
CHƯƠNG 5: GIỚI THIỆU VỀ MATLAB 15
5.1 Tổng quan về Matlab: 15
5.2 Các hàm thường dùng trong Matlab: 15
CHƯƠNG 6: CODE MATLAB VÀ HƯỚNG DẪN ÁP DỤNG PHÉP BIẾN ĐỔI FOURIER VÀO NÉN DỮ LIỆU 16
6.1 Các bước áp dụng phép biến đổi Fourier vào nén dữ liệu: 16
6.2 Code Matlab và diễn giải: 16
6.2.1 Đoạn code: 16
6.2.2 Các hàm được sử dụng: 17
6.2.3 Giải thích code: 18
KẾT LUẬN 19
LỜI CÁM ƠN 20
TÀI LIỆU THAM KHẢO 21
Trang 3LỜI MỞ ĐẦU
Đại số tuyến tính là một nhánh của toán học nghiên cứu về không gian vector, ma trận
và hệ phương trình tuyến tính Các khái niệm cơ bản trong đại số tuyến tính bao gồmkhông gian vector, ma trận, định thức, vector riêng và giá trị riêng, phân tích giảm sốchiều, phương pháp Gram-Schmidt và Singular Value Decomposition (SVD) Toàn bộnhững kiến thức này đều được áp dụng rộng rãi trong các ngành công nghiệp vànghiên cứu khoa học hiện đại
Như chúng ta đã biết, trong thời đại mà sự phát triển của khoa học và công nghệ cónhững bước tiến rõ rệt, đến gần hơn với nhân loại, các bài toán kỹ thuật trở nên phứctạp và cần nhiều thời gian để nghiên cứu làm rõ hơn, từ đó các ứng dụng tính toánthông minh ngày càng được ứng dụng để giải quyết các bài toán này Matlab là mộtmôi trường tính toán số và lập trình cho phép tính toán số với ma trận, vẽ đồ thị hàm
số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kếtvới những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác Với thư việnToolbox, Matlab cho phép mô phỏng tính toán, thực nghiệm nhiều mô hình trong thực
tế và kỹ thuật
Trong bài báo cáo này, dưới sự hướng dẫn của thầy Nguyễn Hữu Hiệp, chúng em có
cơ hội tìm hiểu về phép biến đổi Fourier rời rạc (Discrete Fourier Transform, viết tắt
là DFT), thuật toán biến đổi Fourier nhanh (Fast Fourier Transform, viết tắt là FFT) vàmột trong những ứng dụng quan trọng của nó là nén dữ liệu
1
Trang 4CHƯƠNG 1: MỞ ĐẦU
1.1 Lí do chọn đề tài:
Hiện nay, mạng Internet nói riêng và những thành tựu trong lĩnh vực công nghệ thôngtin ngày càng phát triển kèm theo đó là nhu cầu của người dùng về tốc độ truyền dữliệu ngày càng tăng Qua đó đòi hỏi chúng ta phải nén dữ liệu để giảm độ dư thừatrong dữ liệu gốc xuống nhưng vẫn cung cấp đầy đủ thông tin Vì lẽ đó mà chúng em
đã quyết định chọn đề tài “Ứng dụng của Fourier vào nén dữ liệu”, các thuật toán
nén dữ liệu sử dụng phép biến đổi Fourier để phân tích các thông tin tần số của tínhiệu và giảm thiểu kích thước của dữ liệu bằng cách loại bỏ các thành phần tần sốkhông quan trọng Ví dụ các thuật toán nén dữ liệu như MP3 và JPEG sử dụng phépbiến đổi Fourier để mã hóa tính hiệu âm thanh và hình ảnh
1.2 Yêu cầu:
- Hiểu các khái niệm cơ bản và các tính chất về phép biến đổi Fourier rời rạc (DiscreteFourier Transform, viết tắt là DFT), thuật toán biến đổi Fourier nhanh (Fast FourierTransform, viết tắt là FFT)
- Nghiên cứu về các ứng dụng của phép biến đổi Fourier đặc biệt là trong việc nén dữliệu để hiểu rõ hơn về tầm quan trọng của thuật toán này trong việc phát triển khoa học kỹ thuật
- Tìm hiểu về các công cụ xử lý tính hiệu số như Matlab để áp dụng các thuật toán phép biến đổi Fourier vào phân tích và nén dữ liệu
1.3 Nhiệm vụ:
- Xây dựng chương trình Matlab
- Nhập các giá trị ban đầu (những đại lượng để cho)
- Thiết lập các phương trình tương ứng, sử dụng các lệnh symbolic để giải hệ
Trang 5CHƯƠNG 2: CƠ SỞ LÍ THUYẾT
2.1 Định nghĩa ánh xạ tuyến tính:
Cho V và W là hai không gian véctơ trên cùng tập số K
Ánh xạ tuyến tính f :V → W giữa hai không gian véctơ V, W là một ánh xạ
thỏa mãn hai điều kiện sau:
Lưu ý: Đối với ánh xạ tuyến tính, nếu biết được ảnh của một tập sinh của
V thì có thể tính được ảnh của mọi véctơ của V
Cho E ={e1, e2, …, en} là tập sinh của V
Giả sử biết f(e1), f(e2), …, f(en)
2.2 Nhân và ảnh của ánh xạ tuyển tính:
2.2.1 Định nghĩa nhân của ánh xạ tuyến tính:
Cho ánh xạ tuyến tính:
Nhân của ánh xạ tuyến tính
véctơ V, sao cho f(x) = 0
Trang 62.2.2 Định nghĩa ảnh của ánh xạ tuyến tính:
• Nhân của ánh xạ tuyến tính f là không gian con của V.
• Ảnh của ánh xạ tuyến tính f là không gian con của W
• dim(Kerf) +dim(Imf) = dim (V)
Trang 72.3 Biểu diễn ma trận của ánh xạ tuyến tính:
2.3.1 Định nghĩa ma trận của ánh xạ tuyến tính:
E = {e1 , e 2 , …, e n} là một cơ sở của V
Ma trận cở nxn với cột thứ j là tọa độ của véctơ được gọi là ma trận của f trong cơ sở E
Cho hai cơ sở của V: E và E’
Cho hai cơ sở của W: F và F’
f :V →W
Trang 8trên tập số K Khi đó
5
Trang 9Giả sử P là ma trận chuyển cơ sở từ E vào E’.
Q là ma trận chuyển cơ sở từ F vào F’
A là ma trận của ánh xạ tuyến tính f trong cặp cơ sở E và F.
Cho hai cơ sở V: E và E’
Giả sử P là ma trận chuyển cơ sở từ
là ma tr ận của f trong cơ sở E’
Trang 106
Trang 11- Định nghĩa hai ma trận đồng dạng:
Cho hai ma trận vuông A và B cấp n trên cùng trường K A và B được gọi là đồngdạng nếu tồn tại ma trận khả nghịch P sao cho P-1 A P = B
- Hệ quả: Cho ánh xạ tuyến tính: f :V
A là ma trận của ánh xạ tuyến tính f trong cặp cơ sở E, E
B là ma trận của ánh xạ tuyến tính f trong cặp cơ sở F, F
Khi đó A và B là hai ma trận đồng dạng
→ V
7
Trang 12CHƯƠNG 3: GIỚI THIỆU KHAI TRIỂN FOURIER
RỜI RẠC
Phép biến đổi Fourier rời rạc (DFT), đôi khi còn được gọi là biến đổi Fourier hữu hạn,
là một biến đổi trong giải tích Fourier cho các tín hiệu thời gian rời rạc Đầu vào củabiến đổi này là một chuỗi hữu hạn các số thực hoặc số phức, làm biến đổi này là mộtcông cụ lí tưởng để xử lí thông tin trên các máy tính Đặc biệt, biến đổi này được xử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ứatrong một tín hiệu, để giải phương trình đạo hàm riêng và làm các phép tính như tíchchập Biến đổi này có thể được tính nhanh bởi thuật toán biến đổi Fourier nhanh(FFT)
3.1 Một số khái niệm cơ bản:
DFT đối với tín hiệu tương tự:
Với một hàm liên tục một biến F(t), phép biến đổi Fourier F(f) được định nghĩa là:
Và biến đổi ngược
Với: j là căn bậc hai của -1, e biểu thị số mũ tự nhiên = cos( ) + ( )
DFT với tín hiệu rời rạc:
Giả sử một chuỗi phức X(k) với phép lấy mẫu gồm N mẫu: x1,x2,x3,…,xk,…x
N-1 Với x là số phức
Phép biến đổi Fourier của chuỗi này được biểu thị X(k) gồm N mẫu
Phép biến đổi thuận được định nghĩa:
Phép biến đổi ngược:
Với N là độ dài của một chu kì
Chuỗi số thực tương tự phần ảo bằng 0
Trang 133.2 DFT cho tín hiệu một chiều:
3.2.1 Định nghĩa :
Biến đổi Fourier 1-D cho tín hiệu thời gian rời rạc f(kT) tính theo công thức
Với f(k) = f(kT)
− 2
WN = gọi là hạt nhân của phép biến đổi
Kí hiệu A(n),∅(n) gọi là phổ khuếch đại và phổ pha của F(n).
Biến đổi ngược DFT
Hàm f(k) là biến đổi ngược DFT của F(n) theo biểu thức
Khi f(k) có thể rút ra từ F(n) và ngược lại, chúng gọi là cặp biến đổi và có dạng f(k) ⇔ F(n)
Mặc dù f(k) được xác định trên miền k ∈ [ 0, N], nó vẫn là tín hiệu tuần hoàn với chu kì NT.
- Tính chất 2: Tính ối xứng được dùng để tính
Tính ối xứng của DFT rất hay ược dùng được dùng để tính được dùng để tính
9
Trang 14Biểu thức trên biểu diễn tích chập của hai tín hiệu tuần hoàn Chú ý rằng biểu thức chỉ
áp dụng cho hai dãy có chung một chu kỳ, và chiều dài của dãy tính theo biểu thức trên là 2N-1 Kết quả này chứng minh rằng trong DFT, tín hiệu số mẫu lớn hơn N sẽ được biến đổi thành dãy tuần hoàn có chu kỳ N
Trang 153.3 DFT hai chiều:
3.3.1 Định nghĩa:
DFT hai chiều của một ảnh NxN { ( , )} là một phép biến đổi tách được và được định nghĩa như sau:
Nếu U và V được ánh xạ vào các vecto sắp xếp thao hạng u,v thì:
Trang 16- Tính chất 4: Biến đổi nhanh
Vì DFT hai chiều là tách được, biến đổi tương đương với 2N phép DFT một chiều với độ phức tạp tính toán O (N log2 ) theo cách tính FFT Do vậy độ phức tạp tính toán tổng là: O ( 2 log 2 ).
Với ℎ(m,n)c = h (m module N, n module N)
knoncker ta có
(F ⊗ F).H = D.(F ⊗ F)
Với Hlaf ma trận vòng hai lần và Dlaf ma trận đường chéo có các thành phần cho bởi :[ ] +, +≜ ,={ℎ( , )} 0≤ , ≤ −1
Từ các tính chất của phép biến đổi nhanh ta có thể rút ra: Một ma trận vòng khối hai
lần có thể được chéo hóa bằng O( N 2 log 2 N) phép toán Trị riêng của K cho bởi DFT hai chiều của h (m, n) giống như phép tính N F trong cột đầu tiên của K là các thành phần h(m,n) được ánh xạ vào theo thứ tự từ điển.
12
Trang 17CHƯƠNG 4: ỨNG DỤNG CỦA KHAI TRIỂN
FOURIER RỜI RẠC TRONG NÉN DỮ LIỆU (CỤ THỂ
Trang 18Hình 3
Vì biến đổi Fourier cho bạn biết những gì đang xảy ra trong hình ảnh của bạn,nên việc mô tả các hoạt động xử lý hình ảnh theo những gì chúng làm với tần số cótrong hình ảnh thường rất thuận tiện Ví dụ, loại bỏ tần số cao làm mờ hình ảnh Loại
bỏ tần số thấp mang lại cho bạn các cạnh Và tăng cường tần số cao trong khi vẫn giữtần số thấp làm sắc nét hình ảnh
Nén ảnh bằng DFT là một cách nén mất dữ liệu Khi chúng ta dùng DFT đểnén dữ liệu thì ta sẽ loại bỏ một số hệ số và khi xuất ta sẽ tái tạo lại bằng cách thay thếcác hệ số đã bị loại bỏ thành các số 0 và thực hiện DFT nghịch đảo Vì thế nên khi nénảnh bằng DFT thì ảnh sẽ bị mờ tùy thuộc vào mức độ chúng ta nén, và đó cũng chính
là hạn chế của DFT Phần sau chúng ta sẽ thấy rõ hơn về việc này
Trang 19CHƯƠNG 5: GIỚI THIỆU VỀ MATLAB
5.1 Tổng quan về Matlab:
• Matlab (viết tắt của matrix laborary) là một ngôn ngữ lập trình bậc cao bốn thế
hệ, môi trường để tính toán số học, trực quan và lập trình Được phát triển bởiMathWorks
• Matlab cho phép thao tác với ma trận, vẽ biểu đồ với hàm và số liệu, hiện thựcthuật toán, tạo ra giao diện người dùng, bao gồm C,C++, Java và Fortran; phân tích dữliệu, phát triển thuật toán, tạo các kiểu mẫu và ứng dụng
• Matlab có rất nhiều lệnh và hàm toán học nhằm hỗ trợ đắc lực cho bạn trongviệc tính toán, vẽ các hình vẽ, biểu đồ thông dụng và thực thi các phương pháp tính toán
5.2 Các hàm thường dùng trong Matlab:
Lệnh Cú pháp Ý nghĩa
Disp disp(x) Hiển thị nội dung của mảng hoặc chuỗi
disp(‘chuỗi tự’) Syms syms x Khai báo biến x là một biến kí hiệu
Input x=input(‘tên biến’) Hiển thị dấu nhắc lệnh và chờ đầu vào
Plot plot(x,y) Tạo đồ thị xy
Title title(‘tên đồ thị’) Tựa đề đồ thị
Legend legend(‘vị trí’) Thêm chú giải vào đồ thị
Label xlabel(‘tên’) Thêm nhãn vào trục x
yabel(‘tên’) Thêm nhãn vào trục y Double Double(‘tên’) Chuyển đổi số thập phân với độ chính xác kép
15
Trang 20CHƯƠNG 6: CODE MATLAB VÀ HƯỚNG DẪN
ÁP DỤNG PHÉP BIẾN ĐỔI FOURIER VÀO NÉN
DỮ LIỆU
6.1 Các bước áp dụng phép biến đổi Fourier vào nén dữ liệu:
Bước 1: Đọc ghi file hình ảnh vào
Bước 2: Áp dụng phép biến đổi Fourier 2 chiều vào từng ô trong ma trận
Bước 3: Lấy giá trị tuyệt đối các phần tử và sắp xếp các phần tử
theo chiều giảm dần
Bước 4: Chọn ngưỡng để lọc các giá trị
Bước 5: Tạo ra ma trận lưu giá trị ma trận để thực hiện lọc các chi
tiết để giảm dung lượng file hình
Bước 6: Đối với các giá trị nhỏ hơn giá trị ngưỡng sẽ tự động đặt là 0
Bước 7: Thực hiện phép biến đổi Fourier ngược để khôi phục lại hình
6.2 Code Matlab và diễn giải:
Trang 2116
Trang 22Kết quả sau khi mô phỏng:
6.2.2 Các hàm được sử dụng:
1) imread(): Đọc vào 1 file dưới dạng ma trận
2) rgb2gray(img) Chuyển đổi ảnh thành màu đen trắng
3) imagesc(img) Hiển thị các hình ảnh trên các trục đồ thị với giá trị min làmàu đen và giá trị tối đa là màu trắng
4) fft2() Thực hiện phép biển đổi Fourier nhanh 2 chiều đối với hình ảnh.5) sort() Thực hiện sắp xếp dữ liệu
6) abs() Thực hiện lấy giá trị tuyệt đối
7) subplot(m,n,p) Hiển thị lên theo m hàng n cột tính từ vị trí p hiện tại.8) ifft2() Thực hiện phép biến đổi Fourier nhanh 2 chiều ngược
9) imshow() Hiển thị ảnh
Trang 236.2.3 Giải thích code:
A=imread( 'z4227721378424_bbc94a333140ad8676df24e3b6f5be37.jpg ' );% đọc file a 9nh thành 1 ma trận và gán vào biế? n A
và gán vào B
%%FFT
%%Fast Fourier Transform
fs=sort(abs(f(:)));
counter=1;
a
9nh
sổ? 0
Trang 24KẾT LUẬN
Thông qua đề tài này, chúng em đã tìm hiểu về khái niệm và các tính chất của Fourierrời rạc (DFT) - một công cụ quan trọng trong xử lý tín hiệu số, là một phương pháptính toán để biến đổi một tín hiệu thời gian liên tục thành một chuỗi các giá trị tần sốrời rạc và nghiên cứu về Fourier nhanh (FFT) - một thuật toán cho phép chúng ta tínhtoán biến đổi Fourier nhanh hơn so với phương pháp truyền thống, giúp giảm thiểuthời gian tính toán và tăng hiệu suất Ngoài ra, chúng em còn biết được tầm quantrọng của ứng dụng nén dữ liệu của DFT, từ đó nghiên cứu kỹ lưỡng và đưa ra ví dụliên quan bằng sự trợ giúp của phần mềm MatLab Với sự phân công cẩn thận, cốgắng chuẩn bị kiến thức để hoàn thành đề tài sớm nhất có thể, nhóm đã hoàn thànhnhiệm vụ được giao và sử dụng MatLab để minh họa những ví dụ cũng đã cho ra kếtquả như mong muốn Tuy vẫn còn nhiều hạn chế về mặt kiến thức, nhưng cũng nhờquá trình làm việc nhóm, chúng em đã tiếp thu được nhiều bài học kỹ năng bổ ích vàkinh nghiệm cần thiết
Trang 25LỜI CÁM ƠN
Lời đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến trường Đại học Bách Khoa
- ĐHQG Thành phố Hồ Chí Minh đã cho chúng em cơ hội để tìm hiểu và nghiên cứumôn học “Đại số tuyến tính” Tiếp đó, chúng em xin gửi lời tri ân sâu sắc đến thầyNguyễn Hữu Hiệp - giảng viên môn học “Đại số tuyến tính”, người đã tận tình giảngdạy và đồng hành với chúng em trong suốt học kì vừa qua và cung cấp rất nhiều trithức bổ ích cho nhiều thế hệ sinh viên Bên cạnh đó, qua báo cáo lần này, chúng emhọc hỏi được nhiều kinh nghiệm, kỹ năng và cách thức để cùng nhau làm việc nhómmột cách tối ưu và hiệu quả nhất Do lượng kiến thức của chúng em còn nhiều hạn chế,chưa thực sự hiểu sâu về môn học nên dù có cố gắng hoàn thiện đề tài qua tham khảotài liệu, trao đổi và tiếp thu ý kiến đóng góp nhưng cũng không thể tránh khỏi thiếusót Chúng em rất mong nhận được sự đóng góp từ thầy để từ đó có thể rút kinhnghiệm, hoàn thiện hơn trong những lần làm đề tài sau này
Chúng em xin chân thành cảm ơn !
20
Trang 26TÀI LIỆU THAM KHẢO
[1] Slide bài giảng thầy Đặng Văn Vinh ( Đại Học Bách Khoa Tp.HCM)
[2] Đặng Văn Vinh ,Giáo trình Đại số tuyến tính, NXB ĐHQG Tp.HCM, 2020
[3] Blog tại Matlab-Mathworks, (13/5/2023), Code,
Truy cập từ: https://www.mathworks.com/products/matlab.html