You are on page 1of 13

TRƯỜNG ĐẠI HỌC

SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH


HCMC University of Technology and Education
KHOA ĐIỆN - ĐIỆN TỬ

MÔN HỌC: XỬ LÝ ẢNH

BÁO CÁO

ĐỀ TÀI: PHỔ FOURIER VÀ GIÁ TRỊ TRUNG BÌNH

GVHD:
ThS.Nguyễn Duy Thảo [ngduythao76@gmail.com]
LỚP:
IMPR432463 - Nhóm 10 – Thứ 3 tiết 13-15
SVTH:
Nguyễn Đức Ngọc Cảnh [17119059@student.hcmute.edu.vn]
Nguyễn Văn Sỹ [17119099@student.hcmute.edu.vn]
Trần Nguyễn Thanh Duy [17119064@student.hcmute.edu.vn]

Thành phố Hồ Chí Minh, tháng 01, năm 2020


MỤC LỤC
1. LÝ THUYẾT........................................................................................................................................1

1.1. Chuỗi Fourier.....................................................................................................................1


1.2. Biến đổi Fourier rời rạc......................................................................................................3
2. THỰC HÀNH.....................................................................................................................................6
1. LÝ THUYẾT
I.1. Chuỗi Fourier

Cho là một hàm liên tục với biến có chu kỳ được biểu diễn dưới dạng
là tổng của các hàm sine và cosine với các hệ số xấp xỉ. Và tổng này, được biết
như là chuỗi Fourier có dạng như sau:

(1.1)
với

(1.2)

là các hệ số. Thật sự biểu thức (1.1) là dạng triển khai của hàm sine và cosine theo
như trong công thức Euler

Trong xử lý tín hiệu, xung đơn vị được định nghĩa như sau:

(1.3)

và có đáp ứng

(1.4)
Xung đơn vị chỉ có thể được quan sát tại thời điểm với biên độ vô cực,
do đó, nó có đặc trưng chọn lọc thông tin với tích phân như sau:

(1.5)
Biểu thức (1.5) chỉ đơn giản giữ lại thành phần tại thời điểm . Từ
đây, việc trích xuất thành phần tín hiệu tại thời điểm chỉ đơn giản thay đổi
vị trí của xung đơn vị . Trong trường hợp này, với đặc trưng chọn lọc:

1
(1.6)
Ví dụ, nếu hàm , sử dụng xung đơn vị trong biểu thức (1.6) sẽ
cho kết quả .

Hình 1.1. Xung đơn vị rời rạc tại vị trí

. Biến là rời rạc và bằng 0 tại bất

kỳ điểm
nào mà

Còn đối với biến rời rạc , trong


trường hợp này, ta có xung đơn vị rời rạc
tương ứng cũng thực hiện nhiệm vụ tương ứng với như trong hệ thống
liên tục. Cụ thể, nó được định nghĩa như sau:

(1.7)

Từ đó, biểu thức (1.6) tương ứng dưới dạng rời rạc được viết lại như sau:

(1.8)
Với một hàm liên tục trên miền thời gian, biểu thức biến đổi Fourier
được viết gọn như sau:

(1.9)
Sử dụng công thức Euler, ta có

(1.10)
Ngược lại, cho , hàm đạt được bằng phép biến đổi ngược
2
Fourier:

(1.11)
Nếu là thực thì biến đổi Fourier của nó có dạng phức. Do chỉ còn mỗi
biến tần số tồn tại sau khi tích phân nên thông thường người ta còn gọi biến đổi
Fourier là biến đổi tần số.

Xem như đã biết, tích chập hai tín hiệu được viết theo sau:

(1.12)

Khi đó biến đổi Fourier của tích chập hai tín hiệu có dạng:

(1.13)

Có thể thấy biến đổi Fourier của tích chập hai tín hiệu là tích của Fourier
của hai tín hiệu riêng lẻ. Hay nói cách khác, và là một cặp biến
đổi Fourier. Kết quả này là một phần lý thuyết tích chập và có thể được viết như
sau:
(1.14a)

Cần lưu ý vế phải đạt được bằng phép biến đổi Fourier vế trái, trong khi đó,
vế trái cũng thu được bằng phép biến đổi Fourier ngược vế phải. Phần còn lại của
lý thuyết tích chập có thể được biểu diễn dưới dạng biểu thức sau:

(1.14b)

I.2. Biến đổi Fourier rời rạc

Gọi là hàm liên tục được lấy mẫu với khoảng đồng nhất, biến đổi
Fourier của có dạng
3
(1.15)
Trong đó . Thế vào (1.15), ta có

(1.16)
Mặc dù là hàm rời rạc nhưng Fourier của nó là liên tục và tuần hoàn
với chu kỳ . Và vì thế chỉ cần xét đặc trưng trong một chu kỳ.

Giả sử ta lấy M mẫu trong khoảng thời gian và .


Khi đó ta hoàn toàn có thể suy luận được rằng bao gồm các giá trị:

(1.17)

Thay kết quả (1.16) vào (1.17) thu được

(1.18)

Đây là dạng mở rộng của biến đổi Fourier rời rạc, trong đó gồm mẫu
được lấy từ hàm liên tục . Do đó, kết quả của biến đổi Fourier rời rạc, tập ,
cũng gồm giá trị rời rạc dạng phức. Một cách ngược lại, chúng ta hoàn toàn có
thể thu được tập mẫu với phép biến đổi Fourier rời rạc.

(1.19)

Trong môi trường đa chiều, cụ thể là 2 chiều đối với ảnh số, thì hàm biến đổi
Fourier phải thỏa mãn hai biến số tương ứng với chiều ngang và dọc của ảnh. Cụ
thể, biến đổi Fourier rời rạc 2-D được thực hiện theo biểu thức sau:

(1.20)

4
Với là ảnh số có kích thước . Như ở dạng 1-D, biểu thức (1.20)
thỏa mãn toàn bộ các biến và trong khoảng và
. Từ dạng Fourier , chúng ta thu được hàm bằng
hàm biến đổi ngược Fourier rời rạc:

(1.21)

Với và . Hai biểu thức (1.20) và (1.21)


tạo thành cặp biến đổi Fourier rời rạc 2-D. Giá trị của trong biểu thức
(1.20) đôi khi còn được xem như là các hệ số Fourier ở dạng triển khai.
Giá trị biến đổi tại gốc của miền tần số (nghĩa là hệ số ) được gọi là
thành phần một chiều DC của biến đổi Fourier. Thuật ngữ này có thể gọi là thành
phần có tần số bằng không. Không khó để chứng minh bằng lần giá trị
trung bình của . Ngay cả khi hàm là dạng số thực thì biến đổi Fourier
của nó luôn là dạng phức. Phương pháp cơ bản của việc phân tích hàm biến đổi
một cách trực quan chính là tính toán phổ của nó (nghĩa là biên độ của hàm F
và biểu diễn nó như là một ảnh độc lập. Bằng việc giả sử và biểu
diễn các thành phần thực và phần ảo của , phổ Fourier được định nghĩa như
sau:

(1.22)

Góc pha của của biến đổi được xác định như sau:

(1.23)

Hai hàm này có thể được sử dụng để biểu diễn dưới dạng hệ tọa độc
cực thông thường cho một đại lượng:

(1.24)

Phổ công suất được định nghĩa như là bình phương của độ lớn
5
(1.25)

6
2. THỰC HÀNH
Dựa trên công thức (1.20), biến đổi Fourier rời rạc theo thời gian có
thể được thực hiện thông qua các phép tính thông thường. Thực hiện project thông
qua python với một hình cụ thể để hiểu rõ hơn về phương pháp tính biến đổi
Fourier.

Project 04-02 Phổ Fourier và Giá trị trung bình

a) Tính toán phổ Fourier (trung tâm) của ảnh

import cv2
import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(6.4*5, 4.8*5), constrained_layout=False)

img_c1 = cv2.imread("tt.tif", 0)
img_c2 = np.fft.fft2(img_c1)
img_c3 = np.fft.fftshift(img_c2)

plt.subplot(131), plt.imshow(img_c1, "gray"), plt.title("Original Image")


plt.subplot(132), plt.imshow(np.log(1+np.abs(img_c2)), "gray"), plt.title("Spectrum")
plt.subplot(133), plt.imshow(np.log(1+np.abs(img_c3)), "gray"), plt.title("Centered Spectrum")

plt.show()

Biến đổi DFT và biển đổi ngược DFT được thực hiện bằng phương pháp sử
dụng thuật toán biến đổi nhanh Fourier FFT, nó có sẵn hàm fft trong toolbox.
Hàm này sẽ trả về biến đổi Fourier cũng với kích thước M x N, khi đó, gốc tọa độ
nằm ở góc trên bên trái của ma trận và chu kỳ kết thúc tại trung tâm của hình chữ
nhật tần số.

Hàm abs tính biên độ (căn bậc hai của tổng bình phương phần thực và ảo của
từng phần tử trong mảng. Hình 2.2 trình bày phổ Fourier, trong đó, các điểm sáng

7
tại các góc có biên độ lớn nhất tương ứng với 4 góc phần tư của 4 chu kỳ tiếp giáp
nhau.

Hình 2.1 Ảnh gốc đầu vào

Hình 2.2 Phổ Fourier của ảnh

8
Phân tích phổ bằng cách biểu diễn nó như một ảnh độc lập được xem là một
khía cạnh quan trọng trong miền tần số. Hàm fftshift trong Toolbox được sử dụng
để chuyển gốc tọa độ của biến đổi đến trung tâm của hình chữ nhật.

Với img_c2 là biến đổi Fourier đã được tính toán bằng hàm fft2 và img_c3 là
biến đổi trung tâm. Hàm fftshift thực hiện hoán đổi các gốc phần tư của img_c2
như trong hình 2.3, khi đó, việc tái sắp xếp các góc phần tư này làm cho các điểm
sáng đều được đặt tại vị trí trung tâm và cho phép hiển thị trọn vẹn một chu kỳ
hoàn chỉnh.

Hình 2.3 Phổ trung tâm của ảnh

b) Hiển thị phổ

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('tt.jpg',0)

9
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))

plt.subplot(121),plt.imshow(img, cmap = 'gray')


plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])

plt.show()
Hiển thị phổ ở câu b) này thì trong câu a) cũng đã làm rồi, nên trong câu b) ta
tăng cường biểu diễn lên bằng hàm log.

Trước tiên, chúng ta sẽ xem cách tìm Fourier Transform bằng Numpy.
Numpy có một gói FFT để thực hiện việc này. np.fft.fft2() cung cấp cho chúng ta
phép biến đổi tần số sẽ là một mảng phức tạp. Đối số đầu tiên của nó là hình ảnh
đầu vào, có thang độ xám. Đối số thứ hai là tùy chọn quyết định kích thước của
mảng đầu ra. Nếu nó lớn hơn kích thước của hình ảnh đầu vào, hình ảnh đầu vào
sẽ được đệm bằng các số 0 trước khi tính FFT. Nếu nó nhỏ hơn hình ảnh đầu vào,
hình ảnh đầu vào sẽ bị cắt. Nếu không có đối số nào được truyền, kích thước
mảng đầu ra sẽ giống với đầu vào.

Bây giờ khi bạn nhận được kết quả, thành phần tần số 0 (thành phần DC) sẽ
nằm ở góc trên cùng bên trái. Nếu bạn muốn đưa nó vào trung tâm, bạn cần phải
dịch chuyển kết quả theo cả hai hướng. Điều này đơn giản được thực hiện bởi hàm
np.fft.fftshift().

10
Hình 2.4 Phổ Fourier của ảnh

c) Tính toán giá trị trung bình của ảnh

import cv2
import numpy

myimg = cv2.imread("tt.tif", 0)
avg_per_row = numpy.average(myimg, axis=0)
avg = numpy.average(avg _per_row, axis=0)
print(avg)
Kết quả nhận được từ đoạn chương trình trên = 207.3146992462142

11

You might also like