Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
2,06 MB
Nội dung
Báo cáo cuối kỳ Mơn: Biến hình xử lý ảnh Giảng viên: thạc sĩ Phạm Thế Bảo Tên đề tài: Ghép hình Nhóm sinh viên thực hiện: Huỳnh Nguyễn Duy Nhân Nguyễn Quang Thái Mssv: 0511027 Mssv: 0511323 1.Cơ sở lý thuyết: Xử lý ảnh miền tần số 1.1 Biến đổi Fourier chiều rời rạc : Đặt f(x,y) ký hiệu cho ảnh M*N với x = 0,1,2,…,M-1 y = 0,1,2,…,N1.Trong không gian hai chiều , biến đổi Fourier rời rạc (DFT) f , ký hiệu F(u,v) , cho phương trình sau: Cho u = 0,1,2,…M-1 v = 0,1,2, ,N-1 Chúng ta mở rộng hàm mũ thành dạng sin hay cosine với biến u v việc xác định tần số (x y tính tổng) Miền tần số đơn giản hệ tọa độ dựa theo F(u,v) với u v biến tần số Nó tương tự miền khơng gian chương trước, theo hệ tọa độ dựa theo f(x,y) với x, y biến không gian Vùng hình chữ nhật M*N đươc định nghĩa u= 0,1,2,……,M-1 v = 0,1,2,……,N-1 thường xem hình chữ nhật tần số Rõ ràng hơn, hình chữ nhật tần số kích thước với ảnh đầu vào Đảo lại, biến đổi Fourier rời rạc cho bởi: Với x = 0,1,2,……,M-1 y = 0,1,2,…….N-1 Vì vậy, cho F(u,v), thu f(x,y) trở lại biến đổi ngược DFT Giá trị F(u,v) phương trình đơi suy hệ số khai triển Fourier Trong vài công thức DFT, 1/MN đứng trước phép biến đổi số khác nằm phép biến đổi ngược Để thống việc cài đặt Matlab biến đổi Fourier, giả sử suốt sách 1/MN đứng trước phép biến đổi ngược nêu phươn trình Bởi dãy số bắt đầu Matlab bắt đầu 1, 0, F(1,1) f(1,1) Matlab tương ứng với giá trị toán học F(0,0) f(0,0) biến đổi biến đổi ngược Giá trị biến đổi gốc tọa độ miền tần số [ví dụ F[0,0]] gọi thành phần dc thành phần biến đổi Fourier Thuật ngữ xuất phát từ khoa học điện tử, ‘dc’ ký hiệu cho ‘direct current’ (hiện tần số 0) Chúng ta dễ dàng chứng minh F(0,0) MN lần giá trị trung bình f(x,y) Ngay f(x,y) số thực, biến đổi dạng tổng quát số phức Phương pháp việc phân tích tính tốn phổ [ ví dụ độ lớn F(u,v)] biểu diễn ảnh Đặt R(u,v) I(u,v) biểu diễn thành phần thực ảo F(u,v), phổ Fourier định nghĩa sau : Góc pha biến đổi định nghĩa : Hai hàm có trước dùng để biểu diễn F(u,v) mối liên quan biểu diên cực giá trị số phức : Năng lượng phổ định nghĩa hình vng độ lớn : Để dễ hình dung chọn hai cách biểu diễn | F(u,v)| hay P(u,v) Nếu f(x,y) số thực, biến đổi Fourier đối xứng liên hợp qua gốc tọc độ : Điêu có nghĩa phổ Fourier đối xứng qua gốc tọa độ : Chúng ta kiểm chứng : Nói cách khác, DFT vơ hạn tuần hồn theo u v, với chu kỳ xác định trước M N Tuần hoàn đặc trưng biến đổi ngược DFT : Có nghĩa mơt ảnh thu phép biến đổi ngược Fourier vô hạn tuần hồn Điều gây nhầm lân khơng phải ảnh thu từ biến đổi fourier tuần hồn Chúng ta hiểu đon tính chất tốn học DFT phép biến đổi ngược Chúng ta nên nhớ cài đặt tính tốn DFT tính chu kỳ, làm việc với kích thước MN Hàm tuần hồn quan trọng xem xét liệu DFT liên quan đến chu kỳ biến đổi Ví dụ, hình 1.1(a) biểu diễn phổ biến đổi chiều, F(u) Trong trường hợp này, biểu thức tuần hồn F(u) = F(u+M), từ ta có |F(u)| = | F(u+M)| Đồng thời tính đối xứng nên |F(u)| = |F(-u)| Tính chất tuần hồn F(u) có chu kỳ chiều dài M, tính đối xứng độ lớn biến đổi trung tâm hóa gốc tọa độ, hình 1.1(a) Hình 1.1 : (a) Phổ Fourier minh họa nửa chu kỳ khoảng [0, M-1] (b) Trung tâm phổ khoảng thu việc nhân f(x) (-1) trước tính tốn biến đổi Fourier x Hình lời thích trước minh họa độ lớn biến đổi giá trị từ M/2 tới M-1 lăp lại giá trị nửa chu kỳ bên trái gốc tọa độ Bởi biến đổi DFT chiều cài đặt cho M điểm (ví dụ cho giá trị u khoảng [0, M-1]), nên tính toán theo biến đổi chiều nửa chu kỳ khoảng [0, M-1] Khơng khó để chứng minh chu kỳ thích hợp chu kỳ thu việc nhân f(x) với (-1)x trước tính tốn biến đổi Nó có tác dụng chuyển gốc tọa độ biến đổi tới điểm u = M/2, hình 1.1(b) Bây giá trị phổ u = hình 1.1(b) tương ứng với |F(-M/2)| hình 1.1(a) Tương tự giá trị | F(M/2)| |F(M-1)| hình 1.1(b) tương ứng với |F(0)| |F(M/2-1)| hình 1.1(a) Điều củng xảy tương tự hàm biến đổi hai chiều Tính tốn biến đổi DFT hai chiều tương ứng với điểm biến đổi khoảng hình chữ nhật hình 1.2(a), vùng hình chữ nhật đổ bóng giá trị F(u,v) thu cài đặt phương trình biến đổi Fourier hai chiều định nghĩa phần chương Vùng hình chữ nhật đứt nét lặp lại, giống hình 1.1(a) Phân tích cách trực quan ta thấy di chuyển phổ từ gốc tọa độ đến trung tâm vùng tần số Việc thực cách nhân f(x,y) với (-1)x+y trước tính tốn biến đổi Fourier hai chiều Chu kỳ biểu diễn rõ ràng hình 1.2(b) Như bàn luận phần trước cho hàm chiều, giá trị phổ (M/2, N/2) hình 1.2(b) giá trị với phổ (0,0) hình 1.2(a), giá trị (0,0) hình 1.2(b) giá trị với giá trị (-M/2, - N/2) hình 1.2(a) Tương tự, giá trị (M-1, N-1) hình 1.2(b) giá trị với giá trị (M/2-1, N/2-1) hình 1.2(a) Hình 1.2 (a) M*N phổ Fourier (phần đổ bóng), ¼ chu kỳ chứa phổ liệu (b) Phổ thu việc nhân f(x,y) với (-1)x+y trước tính tốn biến đổi Fourier Chỉ có chu kỳ biểu diễn đổ bóng liệu thu việc cài đặt phương trình cho F(u,v) Những bàn luận phần việc trung tâm hóa cách nhân f(x,y) (-1) khái niệm quan trọng Khi làm việc MATLAB, tính tốn khơng bao gồm việc nhân (-1)x+y sau xếp liệu lại hàm fftshift Hàm cách sử dụng bàn phần x+y 1.2 Tính tốn hình dung biến đổi DFT hai chiều MATLAB: Biến đổi DFT biến đổi ngược thu thực nghiệm thuật toán biến đổi Fourier nhanh (FFT) FFT ảnh kích thước M*N f thu hộp công cụ với hàm fft2 với cú pháp sau: F = fft2(f) Hàm trả biến đổi fourier có kích thước M*N, với liệu xếp hình 1.2(a); gốc tọa độ đặt góc bên trái, với góc phần tư gặp tâm vùng tần số Như giải thích phần 1.3.1, cần thiết ảnh đầu vào thêm vào số biến đổi Fourier sử dụng hàm lọc Trong trường hợp này, cú pháp trở thành F = fft2(f, P, Q) Với cú pháp này, fft2 thêm vào đầu vào số yêu cầu để hàm kết có kích thước P*Q Phổ Fourier thu cách sử dụng hàm abs: S = abs(F) Hàm tính tốn độ lớn (căn bậc hai tổng bình phương phần thực phần ảo) phần tử mảng Phân tích trực quan phổ bẳng việc biểu diễn ảnh khía cạnh quan trọng miền tần số Như minh họa xem có ảnh mẫu f, hình 1.3(a) Chúng ta tính tốn biển đổi Fourier biểu diễn phổ theo bước sau: >> F = fft2(f); >> S= abs(F); >> imshow(S, [ ]) Hình 1.3(b) minh họa kết điểm sáng màu trắng góc ảnh tính chất đề cập phần trước Hàm fftshift sử dụng để di chuyển gốc tọa độ biến đổi tới trung tâm vùng tần số Cú pháp sau: Fc = fftshift(F) Trong F biến đổi fft2 Fc biến đổi trung tâm hóa Hàm fftshift thực thi việc trao đổi góc phần tư F Ví dụ, a = [1 2;3 4], fftshift(a) = [4 3; 1] Khi áp dụng biến đổi sau tính tốn fft2 kết cho giống nhân (-1)x+y trước tính tốn Tuy nhiên điều khơng có nghĩa hai biến đổi thay lẫn Cụ thể hơn, ta ký hiệu F biến đổi fourier F[(-1)x+yf(x,y)] fftshift(fft2(t)) lại khơng fft2(fftshift(f)) Trong ví dụ thêm: >> Fc = fftshift(F); >> imshow(abs(Fc),[ ]) Tương ứng với ảnh 1.3(c) Kết việc trọng tâm hóa minh chứng ảnh Mặc dầu chuyển đổi hoàn thành mong muốn, xếp động giá trị phổ lớn (0 tới 24000) trội so với bit biểu diễn giá trị độ sáng Như bàn luận mụch 3.2.2, khó khăn giải biến đổi log Ta thực câu lệnh sau: >> S2 = log(1+abs(Fc)); >> imshow(S2, [ ]) Kết hình 1.3(d).Sự gia tăng chi tiết nhìn thấy được minh chứng ảnh Hình 1.3 ab cd (a) Ảnh đơn giản (b) Phổ fourier (c) Trung tâm hóa phổ (d) Phổ dễ nhìn thơng qua biến đổi log Hàm ifftshift nghịch đảo lại việc trông tâm hóa Cú pháp là: F = ifftshift(Fc) Hàm chuyển đổi hàm có trung tâm tâm hình chữ nhật thành hàm có trung tâm góc bên trái hình chữ nhật Chúng ta sử dụng tính chất mụch 1.4 Chúng ta nên nhớ trung tâm miền tần số (M/2,N/2) biến u v chạy từ đến M-1 N-1 Ví dụ, tâm miền tần số có kích thước 8*8 điểm (4,4), xác điểm thứ dọc theo trục tọa độ tính từ (0,0) Trong MATLAB biến chạy từ tới M tới N trọng tâm nằm [M/2 +1, N/2 +1] Trong trường hợp trung tâm nằm điểm (5,5), tính từ (1,1) Nếu M, N lẻ, trung tâm MATLAB tính cách làm trịn M/2, N/2 tới số ngun gần nhỏ Phần cịn lại giống phân tích phần Ví dụ, trung tâm vùng 7*7 (3,3) tính từ (0,0) (4,4) tính từ (1,1) Trong hai trường hợp trên, trung tâm điểm thứ gốc tọa độ Nếu chiều lẻ tọa độ trung tâm theo chiều đượclàm tròn tương tự Sử dụng hàm floor MATLAB (nhớ gốc tọa độ đặt (1,1)), trung tâm miền tần số tính sau : [floor(M/2) +1, floor(N/2) +1] Trung tâm tính theo biểu thức dùng cho giá trị chẵn lẻ M, N Cuối cùng, cần biết biến đổi ngược Fourier tính tốn dựa theo hàm ifft2, có cú pháp: >> f = ifft2(F) Trong F biến đổi Fourier f ảnh kết Nếu F số thực kết số thực Tuy nhiên thực nghiệm đầu ifft2 thường có phần ảo nhỏ (nhờ phép làm trịn ) đặc trưng tính tốn Vì người ta tính phần thưc kết sau tính hàm ngược để thu ảnh bao gồm giá trị thực Ta thực sau : >> f = real(ifft2(F)); Như trường hợp trước, hàm thay ifft2(F, P, Q), lệnh thêm vào F để có kích thước P*Q trước tính hàm ngược Tuy nhiên lựa chọn không dùng sách 1.3 Lọc miền tần số: Lọc miền tần số khái niệm đơn giản Trong phần chúng tơi đưa tóm tắt tổng quan khái niễm xoay quanh lọc miền tần số cài đặt MATLAB 1.3.1 Khái niệm bản: Khái niệm cho lọc tuyến tính miền khơng gian tần số lý thuyết tích chập Ta biểu diễn sau: Hay ngược lại: Ở đây, biểu tượng “*” tích chập hai hàm, biểu thức hai phía tạo thành cặp biến đổi Fourier Ví dụ, biểu thức thứ rằng, tích chập hai hàm khơng gian tính bến đổi ngược Fourier tích biến đổi Fourier hai hàm Ngược lại, ta tính tích biến đổi Fourier hai việc lấy tính tích chập hai hàm Ta có suy diễn tương tự cho biểu thức thứ hai Trong phần lọc, quan tâm trước hết đến biểu thức Lọc miền không gian tính tích chập ảnh f(x,y) với mặt nạ lọc h(x,y) Theo lý thuyết tích chập, thu kết miền tần số việc nhân F(u,v) với H(u,v), (H(u,v) biến đổi Fourier lọc không gian) Người ta xem H(u,v) hàm lọc chuyển đổi Ý tưởng lọc miền tần số tìm hàm lọc chuyển đổi hiệu chỉnh F(u,v) theo cách đặt biệt Ví dụ, lọc hình 1.4(a) có hàm chuyển đổi có dạng sau: Hình 1.4 (a) Hàm chuyển đổi hàm lọc băng thông thấp (b) Định dạng sử dụng cho lọc DFT Chú ý có nhiều hàm lọc miền tân số Khi hàm lọc nhân với F(u,v), làm mỏng thành phần tần số cao F(u,v), thành phần tần số thấp không thay đổi Bộ lọc với đặc trưng gọi lọc băng thông thấp Như bàn luận mụch 1.5.2, kết lọc băng thông thấp làm ảnh mờ (mịn hóa ảnh) Hình 1.4(b) lọc tương tự sau xử lý với fftshift Đây định dạng lọc sử dụng thương xuyên sách làm việc với miền tần số biến đổi Fourier đầu vào chưa trọng tâm hóa Dựa theo lý thuyết tích chập, biết để thu ảnh lọc tương ứng miền khơng gian đơn giản tính biến đổi ngược biến đổi Fourier tích H(u,v)F(u,v) Điều quan trọng cần nhớ tiến trình đồng với việc sử dụng tích chập miền khơng gian với mặt nạ h(x,y), hàm biến đổi Fourier ngược H(u,v) Trong thực nghiệm, tích chập tổng quát miền không gian sử dụng mặt nạ nhỏ để cố thu miền tần số tương ứng Như lưu ý mụch 1.1, ảnh biến đổi tự động xử lý tuần hoàn chọn DFT để cài đặt hàm lọc Khơng khó để nhận hàm tích chập tuần hồn ngun nhân ảnh hưởng tới tác động chu kỳ liên quan tới khoảng thời gian phần khác hàm Sự tác động gọi lỗi vịng trịn khép kín (wraparound error), tránh việc thêm vào hàm số Giả sử hàm f(x,y) h(x,y) có kích thước A*B C*D Chúng ta định dạng hai hàm mở rộng, có kích thước P*Q việc thêm vào hàm f g Chúng ta lỗi vịng trịn khép kín tránh cách chọn: P>= A+C-1 Q>= B+D-1 Phần lớn chương làm việc với hàm có kích thước M*N, trường hợp thêm giá trị : P>=2M-1 Q>=2N-1 Hàm gọi hàm paddedsize, tính toán giá trị chẵn cực tiểu P Q thỏa u cầu phương trình trước Ta lựa chọn thêm vào ảnh để định dạng ảnh hình vng (có kích thước chiều dài rộng nhau) Việc thực thi thuật toán FFT phụ thuộc mạnh mẽ vào số thừa số nguyên tố P Q Thuật toán tổng quát nhanh P Q số phương chậm P Q số nguyên tố Trong thực nghiệm nên sử dụng ảnh vng lọc để công việc lọc xảy hai hướng ảnh Hàm paddedsize cung cấp linh hoạt cho ta thực lời khuyên thông qua việc lựa chọn tham số Trong hàm paddedsize, vecto AB, CD, PQ có phần tử [A B], [C D], [P Q], giá trị định nghĩa trước function PQ = paddedsize(AB, CD, PARAM) % PADDEDSIZE tính tốn kích thước cần thiết thêm vào cho FFT dựa theo hàm lọc % PQ = PADDEDSIZE(AB), AB vecto gồm hai phần tử, tính PQ = 2*AB % % PQ = PADDEDSIZE(AB, ‘PWR2’) tính tốn vecto PQ để PQ(1) = PQ(2) = 2^nextpow2(2*m), m max(AB) % % PQ = PADDEDSIZE(AB, CD), AB CD vecto gồm hai phần tử, tính tốn PQ Những phần tử PQ số nguyên chẵn nhỏ lớn AB + CD -1 % % PQ = PADDEDSIZE(AB,CD,’PWR2’) tính toán vecto PQ để PQ(1) = PQ(2) = 2^nextpow2(2*m), m max([AB CD]) if nargin = = PQ = 2*AB; esleif nargin = = & -ischar(CD) PQ = AB + CD -1; PQ = 2* ceil(PQ/2); esleif nargin = = m = max(AB); % chiều cực đại % Tìm kiếm số mũ gần nhấn lớn lần m P = 2^nextpow2(2*m); PQ = [P, P]; esleif nargin = = m = max([AB CD]); % chiều cực đại P = 2^nextpow2(2*m); PQ = [P, P]; else error(‘đối số nhập vào không đúng.’) end Với PQ tính từ hàm paddedsize, sử dụng lệnh fft2 để tính sau: F = fft2(f, PQ(1), PQ(2)) Câu lệnh thực đơn giản thêm đủ số cho f để ảnh có kích thước PQ(1)*PQ(2), sau tính FFT mơ tả trước Chú ý sử thủ tục hàm lọc miền tần số phải có kích thước PQ(1)*PQ(2) Ảnh f hình 1.5(a) sử dụng ví dụ để minh họa hàm lọc sử dụng không sử dụng thủ tục thêm vào Trong phần bàn luận đây, sử dụng lpfilter để sinh lọc băng thông thấp Gauss [tương tự hình 1.4(b)] với giá trị đặc 10 Ảnh thu sử dụng hàm lọctrong miền không gian miền tần số cho tất cách mụch tiêu đồng nhất, tiến hành tính tốn khác biệt sau: >> d = abs(gs - gf); Cực đại cực tiểu khác biệt: >> max(d(:)) ans = 5.4015e-012 >> min(d(:)) ans = 1.5 Sinh hàm lọc cách trực tiếp từ miền không gian Trong phần minh họa cách cài đặt hàm lọc trực tiếp miền không gian Chúng ta quan tâm tới hàm lọc đối xứng vòng đặc trưng hàm khác khoảng cách từ gốc tọa độ biến đổi Những hàm M phát triển để cài đặt hàm lọc sở để dễ dàng mở rộng cài đặt hàm khác ngữ cảnh Chúng ta bắt đầu việc cài đặt vài hàm lọc mịn (băng thơng thấp) Sau làm để dùng wireframe khả thiết lập bề mặt Matlab, chức làm tăng khả hình dung hàm lọc Chúng ta có bàn luận vắn tắt hàm lọc sắc nét(băng thông cao) 1.5.1 Thiết lập dãy lưới việc cài đặt hàm lọc miền tần số: Vấn đề chủ yếu hàm M phần bàn luận tính tốn hàm khoảng cách từ điểm tới điểm đặc biệt hình chữ nhật tần số Bởi việc tính toán FFT Matlab giả sử gốc tọa độ nằm góc bên trái hình chữ nhật tần số, mà khoảng cách tính tốn lại liên quan tới điểm Dữ liệu xếp lại cho mụch đích quan sát cách dùng hàm fftshift (chuyển giá trị gốc tọa độ trung tâm hình chữ nhật tần số) Những hàm M sau gọi dftuv, cung cấp dãy lưới cho việc tính tốn khoảng cách ứng dụng tương tự (xem thêm mụch 2.10.1 dể hiểu giải thích hàm meshgrid sử dụng đoạn code này) Dãy lưới sinh dftuv theo thứ tự phục vụ cho việc xử lý fft2 ifft2, khơng có yêu cầu xếp lại liệu trường hợp function [U,V] = dftuv(M,N) %DFTUV tính tốn ma trận lưới tần số % [U,V] = DFTUV(M,N) tính tốn ma trận lưới tần số U V, U V hữu dụng cho việc tính tốn hàm lọc miền tần số, hàm lọc sau dùng hàm DFTFILT U V có kích thước M*N % % Thiết lập trật tự biến: u = 0: (M-1); v = 0: (N-1); % Tính tốn số cho việc dùng lưới idx – find(u>M/2); u(idx) = u(idx) –M; idy = find(v> N/2); 19 v(idy) = v(idy) –N; % Tính tốn dãy lưới [V,U] = meshgrid(v,u); Như minh họa trên, câu lệnh sau tính tốn bình phương khoảng cách từ điểm hình chữ nhật kích thước 8*5 tới gốc tọa độ hình chữ nhật : >> [U,V] = dftuv(8,5) ; >> D = U.^2 + V.^2 ; D= 4 1 5 8 10 13 13 10 16 17 20 20 17 10 13 13 10 8 5 Chú ý khoảng cách góc bên trái khoảng cách lớn tâm hình chữ nhật tần số, theo định dạng cở sở hình 1.2(a) Chúng ta dùng hàm fftshift để tính tốn khoảng cách liên quan tới tâm hình chữ tần số >> fftshift(D) ans = 20 17 16 17 20 13 10 10 13 5 2 1 2 5 13 10 10 13 Khoảng cách tọa độ (5,3), dãy đối xứn qua điểm 1.5.2 Hàm lọc băng thông thấp miền tần số : Hàm lọ băng thông thấp theo vành (ILPF) : D(u,v) Do Trong Do giá trị đặc biệt không âm D(u,v) khoảng cách từ điểm (u,v) tới tâm hàm lọc Quỹ tích điểm D(u,v) = Do hình tròn Nhớ hàm lọc H nhân với biến đổi Fourier ảnh, thấy hàm lọc theo vành bỏ (bằng cách nhân với 0) tất thành phần F bên ngồi hình trịn khơng đổi tất thành phần nằm hình trịn (nhân với 1) Mặc dù hàm lọc không nhận cách dùng thành phần điện tử, thiết lập nhờ hàm chuyển Tính chất hàm lọc theo vành thường hữu dụng việc giải thích khái niệm vịng trịn khép kín 20