1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phân tích ảnh trong miền tần số

23 429 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,65 MB

Nội dung

Phân tích ảnh trong miền tần số

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TP HỒ CHÍ MINH BÁO CÁO MÔN HỌC XỬ LÝ ÂM THANH HÌNH ẢNH Đề Tài: PHÂN TÍCH ẢNH TRONG MIỀN TẦN SỐ Lớp : GVHD : L12CQVT02-N Ths Tôn Thất Nghiêm Nhóm TP Hồ Chí Minh, Tháng 10 Năm 2013 MỤC LỤC CHƯƠNG I: PHÂN TÍCH ẢNH TRONG MIỀN TẦN SỐ 1.1Phép dịch chuyển DFT x(n, ( ModuloN )) Ví dụ: x( n, ( Modulo 3)) x(n − n0 , ( ModuloN )) Ví dụ: x(n − 2, ( Modulo 3)) x(n − 2, ( Modulo 3)) (0 ≤ n ≤ 2) Phương pháp dịch vòng tròn: 1.1.1 Tính chất dịch chuyển theo thời gian DFT DFT x(n) − − − −− → X (k ) N DFT x(n − n0 , ( ModuloN )) − − − −− → e −j 2πkn0 N N 1.1.2 Bài tập áp dụng Bài 1: Cho tín hiệu x(n) hình vẽ sau: a, Hãy vẽ b, Hãy vẽ x( n, ( Modulo 5)) x(n − 3, ( Modulo 5)) (0 ≤ n ≤ 4) Giải a, x( n, ( Modulo 5)) (0 ≤ n ≤ N − 1) b, x(n − 3, ( Modulo 5)) ( ≤ n ≤ 4) Theo phương pháp vòng tròn: Ghi chú: Nếu tín hiệu x(n) có số mẫu xung nhỏ số điểm N ta phải thêm vào điểm cho đủ N điểm Khi cần vẽ tín hiệu dịch chuyển theo thời gian ta nên dùng phương pháp vòng tròn để vẽ Trên vòng tròn lấy số điểm N sau dịch điểm Như tập vòng tròn ta lấy điểm dịch Bài 2: Cho tín hiệu x(n): x(n) = δ (n − 1) + 2δ (n − 4) − δ (n − 7) a, Tìm DFT 10 điểm x(n) Gọi DFT X(k) b, Cho y(n) có biến đổi DFT 10 điểm Y(k) thỏa Y ( k ) = X ( k )e Z (k ) = X (k ) cos c, Tìm z(n) biết biến đổi z(n) j 3πk Tìm y(n) 3πk Giải a, Ta vẽ lại x(n) sau: DFT x(n) − − − −− → X (k ) = ∑ x(n)e 10 −j 2πkn 10 ( ≤ k ≤ 9) n =0 ⇒ X (k ) = e 2πk 10 + 2e 2.4πk 10 +e 2.7 πk 10 =e πk + 2e 4πk +e 7πk Ghi chú: Nếu toán yêu cầu tìm X(k) ta cần viết biểu thức X(k) đủ Nếu toán yêu cầu vẽ phổ tần số ta cho k=0,1,2,3…N-1 sau tìm module đối số ứng với trường hợp để vẽ hai đồ thị theo tần số k (đồ thị biên độ vè đồ thị góc pha) b, Ta có: Y ( k ) = X ( k )e j 3πk = X ( k )e j 6πk 10 = 2e j 2πk ( −3) 10 ⇒ n0 = −3 Vậy y (n) = x(n + 3, (mod ulo10)) ( ≤ n ≤ 9) Theo phương pháp vòng tròn ta có: X (k ) Vậy ta có y(n) sau: c, Từ công thức lượng giác: cos ϕ = e jϕ + e − jϕ sin ϕ = e jϕ − e − jϕ Z (k ) = X (k ) cos Ta có: j 3πk = X (k )(e 3πk +e −j 3πk Lại có: X ( k )e j 3πk = X ( k )e j 6πk 10 = 2e j 2πk ( −3) 10 X (k ) ⇒ n0 = −3 Vậy z (n) = x (n + 3, (mod ulo10)) ( ≤ n ≤ 9) Theo phương pháp vòng tròn ta có: ) = X ( k )e j 3πk + X ( k )e −j 3πk X ( k )e −j 3πk = X ( k )e −j 6πk 10 = 2e −j 2π k 10 X (k ) ⇒ n0 = Vậy z (n) = x (n − 3, (mod ulo10)) ( ≤ n ≤ 9) Theo phương pháp vòng tròn ta có: Vậy ta có z(n) là: Biến đổi DFT ảnh DFT chiều Biến đổi DFT chiều: DFT ≤ p ≤ M −1 M −1 N −1 MxN m =0 f (m, n) − − − −− → F ( p, q) = ∑ ∑ f (m, n)e −j 2πqn 2πpm −j N M e n =0 ≤ q ≤ N −1 Biến đổi DFT ngược chiều: M −1 N −1 DFT −1 M F ( p, q) − − − −− → f (m, n) = MxN MN ∑ ∑ F ( p, q)e p =0 −j 2πqn 2πpm −j N M e q =0 ≤ m ≤ M −1 ≤ n ≤ N −1 DFT N −1 N 2πkn N n =0 x(n) − − − −− → X (k ) = ∑ x(n)e DFT −1 X (k ) − − − −− → x(n) = N N −j ≤ n ≤ N −1 N −1 ∑ X (k )e −j 2πkn N n =0 ≤ k ≤ N −1 Bức ảnh miền không gian có hai chiều, chiều ngang m, chiều dọc n, để thực biến đổi DFT ảnh ta phải thực biến đổi DFT hai chiều Chiều theo trục m lấy M điểm ta ảnh diễn tả miền tần số p, chiều theo trục n ta lấy N điểm ta diễn tả ảnh theo trục tần số q Như vậy, sau biến đổi ta ảnh miền tần số với giá trị F(p,q) hai miền tần số p,q Bài tập áp dụng Bài 1: Cho ảnh gốc hình vẽ sau đây: Tìm ảnh biến đổi miền tần số cách thực biến đổi DFT 2x2 Giải M −1 N −1 DFT f (m, n) − − − −− → F ( p, q ) = ∑ 2Χ2 m=0 ∑ f (m, n)e −j 2πqn 2πpm −j N M e n =0 ≤ p ≤ M −1 ≤ q ≤ N −1 1 F ( p, q ) = ∑∑ f (m, n)e −j 2πpm e −j 2πqn ≤ p ≤1 m =0 n = ≤ q ≤1 F ( p, q ) = ∑∑ f (m, n)e − jπpm e − jπqn m =0 n = Vì p q có giá trị khoảng từ tới nên ta có trường hợp sau đây: F(0,0)=1+2+1=4 1 F (0,1) = ∑∑ f (m, n)e − jπn = + 2e − jπ + + 1e − jπ = − + − = −2 m =0 n =0 1 F (1,0) = ∑∑ f (m, n)e − jπm = + + e − jπ = + − = m =0 n =0 1 F (1,1) = ∑∑ f (m, n)e − jπm e − jπn = + 2e − jπ + + 1e − jπ e − jπ = − + (−1)( −1) = m =0 n =0 Vậy ta có ảnh biến đổi F(p,q): Ta nhận thấy, sau biến đổi ảnh rơi vào miền tần số ảnh gốc phép biến đổi toán tử không gian Bài 2: Cho ảnh hình vẽ: 10 Tìm ảnh biến đổi miền tần số cách thực biến đổi DFT 4x4 Giải M −1 N −1 DFT f (m, n) − − − −− → F ( p, q) = ∑ 2Χ2 m =0 ∑ f (m, n)e −j 2πqn 2πpm −j N M e n =0 ≤ p ≤ M −1 ≤ q ≤ N −1 3 −j F ( p, q ) = ∑∑ f (m, n)e 2πpm e −j 2πqn 0≤ p≤3 0≤q≤3 m =0 n = 3 F ( p, q ) = ∑∑ f (m, n)e −j πpm πqn −j 2 e m =0 n = Vì p q có giá trị khoảng từ tới nên ta có trường hợp sau: F(0,0)=1+1+1+1=4 3 F (0,1) = ∑∑ f (m, n)e −j πn =e −j π −j +e π + e − jπ + e − jπ = − j − j − − = −2 − j m = n =0 3 F (0,2) = ∑∑ f (m, n)e − jπn = e − jπ + e − jπ + e − j 2π + e − j 2π = −1 − + + = m = n =0 3 F (0,3) = ∑∑ f (m, n)e −j 3πn =e −j 3π +e −j 3π + e − j 3π + e − j 3π = j + j − − = −2 + j m = n =0 3 F (1,0) = ∑∑ f (m, n)e −j πn =e −j π +e −j π + e − jπ + e − jπ = − j − j − − = −2 − j m =0 n = 3 F (1,1) = ∑∑ f (m, n)e −j πm e −j πn =e −j π e −j π +e −j π e − jπ +e − jπ e −j π + e − jπ e − jπ m =0 n =0 = (− j )( − j ) + (− j ).( −1) + (−1)( − j ) + (−1)( −1) = j 3 F (1,2) = ∑∑ f (m, n)e −j πm e − jπn =e −j π e − jπ +e −j π e − j π + e − jπ e − jπ + e − jπ e − j 2π m = n =0 = ( − j )( −1) + ( − j ).1 + (−1)( −1) + (−1).1 = 11 3 F (1,3) = ∑∑ f ( m, n)e −j πm e −j 3πn =e −j π e −j 3π +e −j π e − j 3π +e − jπ e −j 3π + e − jπ e − j 3π m =0 n =0 = (− j ) j + (− j )( −1) + (−1) j + (−1)( −1) = 3 F (2,0) = ∑∑ f (m, n)e − jπm = e − jπ + e − jπ + e − j 2π + e − j 2π = −1 − + + = m =0 n = 3 F (2,1) = ∑∑ f (m, n)e − jπm e −j πn =e − jπ e −j π +e − jπ e − jπ +e − j 2π e −j π + e − j 2π e − jπ m = n =0 = ( −1)( − j ) + ( −1)( −1) + 1.( − j ) + 1.( −1) = = (−1)( −1) + (−1).1 + 1.( −1) + 1.1 = 3 F (2,2) = ∑∑ f (m, n)e − jπm e − jπn = e − jπ e − jπ + e − jπ e − j 2π + e − j 2π e − jπ + e − j 2π e − j 2π m =0 n =0 3 F (2,3) = ∑∑ f (m, n)e − jπm e −j 3πn =e − jπ e −j 3π +e − jπ e − j 3π +e − j 2π e −j 3π + e − j 2π e − j 3π m =0 n =0 = ( −1) j + ( −1)( −1) + j + 1.( −1) = 3 F (3,0) = ∑∑ f (m, n)e −j 3πm =e −j 3π +e − j 3π +e −j 3π + e − j 3π m =0 n =0 = j + ( −1) + j + ( −1) = −2 + j 3 F (3,1) = ∑∑ f ( m, n)e −j 3πm e −j πn =e −j 3π e −j π +e −j 3π e − jπ +e − j 3π e −j π + e − j 3π e − jπ m =0 n =0 = j.( − j ) + j.( −1) + (−1)( − j ) + (−1)( −1) = 3 F (3,2) = ∑∑ f (m, n)e −j 3πm e − jπn =e −j 3π e − jπ +e −j 3π e − j 2π + e − j 3π e − jπ + e − j 3π e − j 2π m =0 n =0 = j ( −1) + j.1 + (( −1)( −1) + (−1).1 = 12 3 F (3,3) = ∑∑ f (m, n)e −j 3πm e −j 3πm =e −j 3π e −j 3π +e −j 3π e − j 3π +e − j 3π e −j 3π + e − j 3π e − j 3π m =0 n = = j j + j ( −1) + (−1) j + (−1)( −1) = −2 j Vậy ta có ảnh biến đổi miền tần số: Ghi chú: Trong toán phức tạp, ta thực nhanh phép toán cách để ý tới số hạng f(m,n) khác Xác định tọa độ m,n điểm sau thay vào công thức Qua tập ta nhận xét: ảnh gốc có mức xám số thực thực biến đổi DFT để tìm ảnh miền tần số, mức xám tương ứng biến thành số phức Tuy nhiên ảnh trung gian tần số, sau qua mạch lọc thực biến đổi ngược DFT để thành ảnh thực gốc ban đầu 13 CHƯƠNG II: MỘT SỐ HÀM XỬ LÝ ẢNH TRONG MATLAB 2.1 Hàm imread - Hàm imread đọc file ảnh với định dạng ảnh lưu lại với dạng ma trận biểu diễn ảnh matlab - Cú pháp:>>A=imread (‘filename.jpg’) Trong A tên biến, “filename” đường dẫn đến ảnh cần đọc, jpg định dạng ảnh - VD: Đọc file ảnh có tên Nha Dam, có định dạng ảnh jpg >>A = imread ('Nha Dam.jpg'); 2.2 Hàm imshow - Hàm imshow cho phép hiển thị file ảnh - Cú pháp:>>imshow(‘filename.jpg’) >>imshow(A) Trong A tên biến gán cho ma trận ảnh - VD: >>A = imread ('Nha Dam.jpg'); >> imshow(‘Nha Dam.jpg’ imshow(A); 2.3 Hàm fft2 - Hàm fft dùng để diến đổi DFT ảnh Cú pháp:>>F=fft2(f) Trong x hàm muốn biến đổi DFT 2.4 Hàm ifft2 - Hàm biến đổi DFT ngược Cú pháp:>>f=ifft2(F) Trong F hàm xxax biến đổi DFT 14 CHƯƠNG III: MÔ PHỎNG BẰNG MATLAB 3.1 Giao diện chương trình Mục tiêu: Viết chương trình Gui matlab để thục tính DFT chiều vẽ phổ DFT ảnh Từ mục tiêu ta vẽ giao diện sau: Hình 3.1 Giao diện chương trình 3.2 Tính DFT chiều Ở ta thực tính DFT chiều ảnh có kích thước 2x2, 3x3, 4x4, 5x5 Ta có đoạn code thực công việc sau: filsize=get(handles.popupmenu2,'value'); switch filsize case a=str2double(get(handles.edit2100,'string')) ; 15 b=str2double(get(handles.edit2110,'string')) ; c=str2double(get(handles.edit2101,'string')) ; d=str2double(get(handles.edit2111,'string')) ; if(isnan(a)==1 || isnan(b)==1 || isnan(c)==1 || isnan(d)==1) msgbox('YEU CAU NHAP TAT CA LA SO') else x=[a b;c d]; y=fft2(x); set(handles.edit2200,'string',num2str(y(1,1))); set(handles.edit2210,'string',num2str(y(1,2))); set(handles.edit2201,'string',num2str(y(2,1))); set(handles.edit2211,'string',num2str(y(2,2))); end case a=str2double(get(handles.edit3100,'string')) ; b=str2double(get(handles.edit3110,'string')) ; c=str2double(get(handles.edit3120,'string')) ; d=str2double(get(handles.edit3101,'string')) ; e=str2double(get(handles.edit3111,'string')) ; f=str2double(get(handles.edit3121,'string')) ; g=str2double(get(handles.edit3102,'string')) ; h=str2double(get(handles.edit3112,'string')) ; i=str2double(get(handles.edit3122,'string')) ; if(isnan(a)==1 || isnan(b)==1 || isnan(c)==1 || isnan(d)==1 || isnan(e)==1 || isnan(f)==1 || isnan(g)==1 || isnan(h)==1 || isnan(i)==1) msgbox('YEU CAU NHAP TAT CA LA SO') else x=[a b c;d e f;g h i]; y=fft2(x); set(handles.edit3200,'string',num2str(y(1,1))); set(handles.edit3210,'string',num2str(y(2,1))); set(handles.edit3220,'string',num2str(y(3,1))); 16 set(handles.edit3201,'string',num2str(y(1,2))); set(handles.edit3211,'string',num2str(y(2,2))); set(handles.edit3221,'string',num2str(y(3,2))); set(handles.edit3202,'string',num2str(y(1,3))); set(handles.edit3212,'string',num2str(y(2,3))); set(handles.edit3222,'string',num2str(y(3,3))); end case a=str2double(get(handles.edit4100,'string')) ; b=str2double(get(handles.edit4110,'string')) ; c=str2double(get(handles.edit4120,'string')) ; d=str2double(get(handles.edit4130,'string')) ; e=str2double(get(handles.edit4101,'string')) ; f=str2double(get(handles.edit4111,'string')) ; g=str2double(get(handles.edit4121,'string')) ; h=str2double(get(handles.edit4131,'string')) ; i=str2double(get(handles.edit4102,'string')) ; j=str2double(get(handles.edit4112,'string')) ; k=str2double(get(handles.edit4122,'string')) ; l=str2double(get(handles.edit4132,'string')) ; m=str2double(get(handles.edit4103,'string')) ; n=str2double(get(handles.edit4113,'string')) ; o=str2double(get(handles.edit4123,'string')) ; p=str2double(get(handles.edit4133,'string')) ; if(isnan(a)==1 || isnan(b)==1 || isnan(c)==1 || isnan(d)==1 || isnan(e)==1 || isnan(f)==1 || isnan(g)==1 || isnan(h)==1 || isnan(i)==1 || isnan(j)==1 || isnan(k)==1 || isnan(l)==1 || isnan(m)==1 || isnan(n)==1 || isnan(o)==1 || isnan(p)==1) msgbox('YEU CAU NHAP TAT CA LA SO') else x=[a b c d;e f g h;i j k l;m n o p]; y=fft2(x); 17 set(handles.edit4200,'string',num2str(y(1,1))); set(handles.edit4210,'string',num2str(y(2,1))); set(handles.edit4220,'string',num2str(y(3,1))); set(handles.edit4230,'string',num2str(y(4,1))); set(handles.edit4201,'string',num2str(y(1,2))); set(handles.edit4211,'string',num2str(y(2,2))); set(handles.edit4221,'string',num2str(y(3,2))); set(handles.edit4231,'string',num2str(y(4,2))); set(handles.edit4202,'string',num2str(y(1,3))); set(handles.edit4212,'string',num2str(y(2,3))); set(handles.edit4222,'string',num2str(y(3,3))); set(handles.edit4232,'string',num2str(y(4,3))); set(handles.edit4203,'string',num2str(y(1,4))); set(handles.edit4213,'string',num2str(y(2,4))); set(handles.edit4223,'string',num2str(y(3,4))); set(handles.edit4233,'string',num2str(y(4,4))); end case a=str2double(get(handles.edit5100,'string')) ; b=str2double(get(handles.edit5110,'string')) ; c=str2double(get(handles.edit5120,'string')) ; d=str2double(get(handles.edit5130,'string')) ; e=str2double(get(handles.edit5140,'string')) ; f=str2double(get(handles.edit5101,'string')) ; g=str2double(get(handles.edit5111,'string')) ; h=str2double(get(handles.edit5121,'string')) ; i=str2double(get(handles.edit5131,'string')) ; j=str2double(get(handles.edit5141,'string')) ; k=str2double(get(handles.edit5102,'string')) ; l=str2double(get(handles.edit5112,'string')) ; m=str2double(get(handles.edit5122,'string')) ; n=str2double(get(handles.edit5132,'string')) ; 18 o=str2double(get(handles.edit5142,'string')) ; p=str2double(get(handles.edit5103,'string')) ; q=str2double(get(handles.edit5113,'string')) ; r=str2double(get(handles.edit5123,'string')) ; s=str2double(get(handles.edit5133,'string')) ; t=str2double(get(handles.edit5143,'string')) ; aa=str2double(get(handles.edit5104,'string')) ; bb=str2double(get(handles.edit5114,'string')) ; z=str2double(get(handles.edit5124,'string')) ; u=str2double(get(handles.edit5134,'string')) ; w=str2double(get(handles.edit5144,'string')) ; if(isnan(a)==1 || isnan(b)==1 || isnan(c)==1 || isnan(d)==1 || isnan(e)==1 || isnan(f)==1 || isnan(g)==1 || isnan(h)==1 || isnan(i)==1 || isnan(j)==1 || isnan(k)==1 || isnan(l)==1 || isnan(m)==1 || isnan(n)==1 || isnan(o)==1 || isnan(p) || isnan(q)==1 || isnan(r)==1 || isnan(s)==1 || isnan(t)==1 || isnan(aa)==1 || isnan(bb)==1 || isnan(z)==1 || isnan(u)==1 || isnan(w)==1) msgbox('YEU CAU NHAP TAT CA LA SO') else x=[a b c d e;f g h i j;k l m n o;p q r s t;aa bb z u w]; y=fft2(x); set(handles.edit5200,'string',num2str(y(1,1))); set(handles.edit5210,'string',num2str(y(2,1))); set(handles.edit5220,'string',num2str(y(3,1))); set(handles.edit5230,'string',num2str(y(4,1))); set(handles.edit5240,'string',num2str(y(5,1))); set(handles.edit5201,'string',num2str(y(1,2))); set(handles.edit5211,'string',num2str(y(2,2))); set(handles.edit5221,'string',num2str(y(3,2))); set(handles.edit5231,'string',num2str(y(4,2))); set(handles.edit5241,'string',num2str(y(5,2))); set(handles.edit5202,'string',num2str(y(1,3))); set(handles.edit5212,'string',num2str(y(2,3))); 19 set(handles.edit5222,'string',num2str(y(3,3))); set(handles.edit5232,'string',num2str(y(4,3))); set(handles.edit5242,'string',num2str(y(5,3))); set(handles.edit5203,'string',num2str(y(1,4))); set(handles.edit5213,'string',num2str(y(2,4))); set(handles.edit5223,'string',num2str(y(3,4))); set(handles.edit5233,'string',num2str(y(4,4))); set(handles.edit5243,'string',num2str(y(5,4))); set(handles.edit5204,'string',num2str(y(1,5))); set(handles.edit5214,'string',num2str(y(2,5))); set(handles.edit5224,'string',num2str(y(3,5))); set(handles.edit5234,'string',num2str(y(4,5))); set(handles.edit5244,'string',num2str(y(5,5))); end end Từ đoạn code ta thực biến đổi DFT chiều ảnh số sau: Hình 3.2 Thực tính DFT chiều kích thước 2x2 20 Hình 3.3 Thực tính DFT chiều kích thước 3x3 Hình 3.4 Thực tính DFT chiều kích thước 4x4 21 Hình 3.5 Thực tính DFT chiều kích thước 5x5 3.3 Vẽ phổ DFT ảnh Ở ta thực vẽ phổ DFt ảnh, đưa tần số F(0,0) vị trí trung tâm thực biến đổi DFt ngược Để thực công việc ta có đoạn code sau: global im_original filsize im_filtered value F=fft2(im_original); F2=ifft2(F); axes(handles.axes3); imshow(F2); axes(handles.axes4); imshow(F); Từ đoạn code ta có phổ DFT ảnh sau: 22 Hình 3.6 Phổ DFT DFT ngược ảnh TÀI LIỆU THAM KHẢO [1] Bài giảng Xử lý âm & hình ảnh, Ths Tôn Thất Nghiêm [2] Matlab ứng dụng viễn thông, Phạm Hồng Liên [3] Báo cáo nâng cao chất lượng hình ảnh phương pháp toán tử điểm, Nhóm [4] Báo cáo kỹ thuật Historgam, Nhóm 23

Ngày đăng: 09/07/2016, 10:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w