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

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

22 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 22
Dung lượng 1,65 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Trang 2

MỤC LỤC

CHƯƠNG I: PHÂN TÍCH ẢNH TRONG MIỀN TẦN SỐ 3

1.1Phép dịch chuyển trong DFT 3

1.1.1 Tính chất dịch chuyển theo thời gian của DFT 4

1.1.2 Bài tập áp dụng 4

CHƯƠNG II: MỘT SỐ HÀM XỬ LÝ ẢNH TRONG MATLAB 13

2.1 Hàm imread 13

2.2 Hàm imshow 13

2.3 Hàm fft2 13

2.4 Hàm ifft2 13

CHƯƠNG III: MÔ PHỎNG BẰNG MATLAB 14

3.1 Giao diện chương trình 14

3.2 Tính DFT 2 chiều 14

3.3 Vẽ phổ DFT của bức ảnh 21

TÀI LIỆU THAM KHẢO 22

Trang 3

CHƯƠNG I: PHÂN TÍCH ẢNH TRONG MIỀN TẦN SỐ

Trang 4

1.1.1 Tính chất dịch chuyển theo thời gian của DFT

Trang 5

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ỏ hơn số điểm N thì ta phải thêm

vào các điểm 0 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òngtròn để vẽ Trên vòng tròn lấy số điểm bằng N sau đó dịch các điểm này Như trongbài tập này trên vòng tròn ta lấy 5 điểm rồi 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 của x(n) Gọi DFT này là X(k)

b, Cho y(n) có biến đổi DFT 10 điểm là Y(k) thỏa Y (k )=2 X (k )e

Trang 6

Ghi chú: Nếu bài toán yêu cầu tìm X(k) ta chỉ cần viết biểu thức X(k) là đủ.

Nếu bài toán yêu cầu vẽ phổ tần số ta lần lượt cho k=0,1,2,3…N-1 sau đó tìm module

và đối số ứng với từng trường hợp để vẽ hai đồ thị theo tần số k (đồ thị biên độ vè đồthị góc pha)

Vậy ta có y(n) như sau:

c, Từ công thức lượng giác:

Trang 8

Biến đổi DFT 2 chiều:

Bức ảnh trong miền không gian có hai chiều, chiều ngang là m, chiều dọc là n,

do đó để thực hiện biến đổi DFT bức ảnh ta phải thực hiện biến đổi DFT hai chiều.Chiều theo trục m lấy M điểm và ta được bức ảnh diễn tả trong miền tần số p, chiềutheo trục n ta lấy N điểm và ta diễn tả bức ảnh theo trục tần số q

Như vậy, sau khi biến đổi ta được bức ảnh trong miền tần số với các giá trịF(p,q) trong hai miền tần số p,q

Bài tập áp dụng

Bài 1: Cho bức ảnh gốc như hình vẽ sau đây:

0≤p≤M−1

0≤m≤M−1

Trang 9

Tìm bức ảnh biến đổi trong miền tần số bằng cách thực hiện biến đổi DFT 2x2.

Vậy ta có bức ảnh biến đổi F(p,q):

Ta nhận thấy, sau biến đổi bức ảnh sẽ rơi vào trong miền tần số không phải là ảnh gốc như các phép biến đổi toán tử không gian

Bài 2: Cho bức ảnh như hình vẽ:

Tìm bức ảnh biến đổi trong miền tần số bằng cách thực hiện biến đổi DFT 4x4.

Trang 10

2+ e

+ ej2 πej

π

2+ ej2 πejπ =(−1)(− j)+(−1)(−1)+1.(− j )+1.(−1)=0

Trang 11

Vậy ta có bức ảnh biến đổi trong miền tần số:

Ghi chú: Trong những bài toán phức tạp, ta thực hiện nhanh phép toán bằng

cách để ý tới các số hạng f(m,n) khác 0 Xác định tọa độ m,n tại các điểm này sau đó thay vào công thức

=(−1)(−1)+(−1).1+1.(−1)+1.1=0

Trang 12

Qua bài tập này ta nhận xét: bức ảnh gốc có mức xám là số thực nhưng khi thực hiện biến đổi DFT để tìm bức ảnh trong miền tần số, các mức xám tương ứng sẽ biến thành các số phức Tuy nhiên đây chỉ là bức ảnh trung gian về tần số, sau đó qua các mạch lọc và thực hiện biến đổi ngược DFT để thành bức ảnh thực gốc ban đầu.

Trang 13

CHƯƠNG II: MỘT SỐ HÀM XỬ LÝ ẢNH TRONG MATLAB

2.1 Hàm imread

- Hàm imread đọc các file ảnh với bất kỳ định dạng ảnh và lưu lại với dạng một

ma trận biểu diễn ảnh trong matlab

- Cú pháp :>>A=imread (‘filename.jpg’)

Trong đó A là tên biến, “filename” là đường dẫn đến ảnh cần đọc, jpg là địnhdạng của ảnh

- VD: Đọc 1 file ảnh có tên là Nha Dam, có định dạng ảnh là 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’) hoặc >>imshow(A)

Trong đó A là tên biến được gán cho ma trận ảnh

- VD: >>A = imread ('Nha Dam.jpg');

>> imshow(‘Nha Dam.jpg’ hoặc imshow(A);

Trang 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 bằng Gui trong matlab để thục hiện tính DFT 2 chiều và vẽ phổ DFT bức ảnh

Từ mục tiêu trên ta vẽ được giao diện như sau:

Hình 3.1 Giao diện chương trình

Trang 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)));

set(handles.edit3200, 'string' ,num2str(y(1,1)));

set(handles.edit3210, 'string' ,num2str(y(2,1)));

set(handles.edit3220, 'string' ,num2str(y(3,1)));

Trang 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)));

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);

Trang 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 5

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' )) ;

Trang 18

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)));

Trang 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)));

Trang 20

Hình 3.3 Thực hiện tính DFT 2 chiều kích thước 3x3

Hình 3.4 Thực hiện tính DFT 2 chiều kích thước 4x4

Trang 21

Hình 3.5 Thực hiện tính DFT 2 chiều kích thước 5x5

3.3 Vẽ phổ DFT của bức ảnh

Ở đây ta thực hiện vẽ phổ DFt của bức ảnh, đưa tần số F(0,0) về vị trí trung tâm

và thực hiện biến đổi DFt ngược

Để thực hiện các công việc trên ta có đoạn code như sau:

global im_original filsize im_filtered value

Trang 22

Hình 3.6 Phổ DFT và DFT ngược của bức ảnh

TÀI LIỆU THAM KHẢO

[1] Bài giảng Xử lý âm thanh & hình ảnh, Ths Tôn Thất Nghiêm

[2] Matlab và ứng dụng trong 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 bằng phương pháp toán tử điểm, Nhóm 1[4] Báo cáo kỹ thuật Historgam, Nhóm 4

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

HÌNH ẢNH LIÊN QUAN

Hình 3.1 Giao diện chương trình - Phân tích ảnh trong miền tần số
Hình 3.1 Giao diện chương trình (Trang 14)
Hình 3.2 Thực hiện tính DFT 2 chiều kích thước 2x2 - Phân tích ảnh trong miền tần số
Hình 3.2 Thực hiện tính DFT 2 chiều kích thước 2x2 (Trang 19)
Hình 3.6  Phổ DFT và DFT ngược của bức ảnh - Phân tích ảnh trong miền tần số
Hình 3.6 Phổ DFT và DFT ngược của bức ảnh (Trang 22)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w