IV – Màu sắc 1 Bảng thuật ngữ
c- Các ứng dụng sử dụng phép biến đổi Fourier Đáp ứng tần số của bộ lọc tuyến tính
Đáp ứng tần số của bộ lọc tuyến tính
- Biến đổi Fourier của đáp ứng xung của bộ lọc tuyến tính cho phép nhận được đáp ứng tần số của bộ lọc . Hàm freqz2 tính toán và hiển thị đáp ứng tần số của một bộ lọc . Đáp ứng tần số của bộ lọc Gauss chỉ ra rằng bộ lọc này là một bộ lọc thông thấp .
h = fspecial('gaussian'); freqz2(h)
Nhân chập nhanh
- Một tính chất quan trọng của biến đổi Fourier là nhân hai biến đổi Fourier tương ứng với nhân chập (convolution ) của hai hàm kết hợp trong không gian . Tính chất này kết hợp với biến đổi Fourier nhanh làm cơ sở cho giải thuật nhân chập nhanh .
Chú ý : FFT dựa trên phương pháp nhân chập thường được sử dụng với đầu vào lớn . Với
các đầu vào nhỏ , nhìn chung sử dụng hàm imfiler sẽ nhanh hơn .
- Để minh hoạ , ví dụ sau thực hiện nhân chập của A và B trong đó A là một ma trận MxN và B là ma trận PxQ
1. Tạo ra hai ma trận A = magic(3);
B = ones(3);
2. Thêm các giá trị 0 vào A và B để chúng có chiều ít nhất là (M+P-1)x(N+Q-1) ( chú ý rằng : hàm fft2 sẽ nhanh hơn nếu các kích thước của A và B là luỹ thừa của 2 ) .Ví dụ sau chèn thêm các phần tử 0 để hai ma trận có kích thước 8x8
A(8,8)=0; B(8,8)=0;
3. Tính biến đổi Fourier hai chiều của A và B sử dụng hàm fft2 4. Nhân hai biến đổi Fourier lại với nhau
5. Tính biến đổi Fourier ngược của kết quả trên bằng hàm ifft2 C = ifft2(fft2(A).*fft2(B));
6. Trích ra thành phần khác 0 của kết quả và loại bỏ phần ảo do sai số làm tròn C = C(1:5,1:5);
C = 8.0000 9.0000 15.0000 7.0000 6.0000 11.0000 17.0000 30.0000 19.0000 13.0000 15.0000 30.0000 45.0000 30.0000 15.0000 7.0000 21.0000 30.0000 23.0000 9.0000 4.0000 13.0000 15.0000 11.0000 2.000
Phát hiện chi tiết của ảnh
- Biến đổi Fourier có thể được sử dụng để thực thi tương quan – có liên hệ gần với nhân chập ( convolution ) . Tương quan có thể được sử dụng để phát hiện chi tiết trong một ảnh , trong trường hợp này , tương quan thường được gọi là hợp mẫu ( template matching ) - Ví dụ sau minh hoạ việc sử dụng tương quan để phát hiện sự có mặt của kí tự “a” trong một ảnh có chữ :
1. Đọc vào ảnh mẫu : bw=imread(‘text.png’);
2. Tạo một mẫu ( template ) để làm hợp bằng cách trích kí tự “a” từ ảnh : a=bw(32:45,88:98);
Ta có thể tạo ảnh mẫu bằng cách sử dụng phiên bản tương tác của hàm imcrop , sử dụng
hàm pixval để tính toạ độ của một chi tiết trong ảnh . Hình sau đây chỉ ra ảnh gốc và ảnh mẫu :
3. Tính toán tương quan của ảnh mẫu a với ảnh gốc bw bằng cách quay ảnh mẫu 180 độ và sau đó dùng biến đổi Fourier nhanh trên cơ sở phép nhân chập như đã đề cập trước đây ( Nhân chập sẽ tương đương với tương quan nếu ta quay nhân chập 180 độ ) . Để hợp với ảnh mẫu , dùng hàm fft2 và ifft2 .
C = real(ifft2(fft2(bw) .* fft2(rot90(a,2),256,256)));
Ảnh sau đây minh hoạ kết quả của tương quan . Đốm sáng trong ảnh tương ứng với sự xuất hiện của kí tự :
figure, imshow(C,[]) % Scale image to appropriate display range.
4. Để quan sát vị trí của mẫu trong ảnh , tìm giá trị pixel lớn nhất sau đó định nghĩa một giá trị ngưỡng nhỏ hơn giá trị này . Vị trí của đỉnh được chỉ ra bằng một điểm trắng trong ảnh tương quan mẫu ( để xác định chúng dễ hơn , ảnh ngưỡng đã được mở rộng kích thước điểm )
max(C(:)) ans = 68.0000