You are on page 1of 7

Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

CHƢƠNG I:
TÌM HIỂU CƠ BẢN VỀ MATLAB VÀ GUI
I) Cơ bản về Matlab:
1) Giới thiệu chung về Matlab:
Matlab là một công cụ tính toán trong kỹ thuật, đặc biệt là các bài toán về ma trận.
Matlab còn cung cấp các toolboxes chuyên dụng để giải quyết những vấn đề cụ thể như
xử lý ảnh, xử lý số tín hiệu, neuron, mô phỏng…
Matlab cung cấp Image Processing toobox, chuyên về xử lý ảnh. Có thể nói Matlab là
một công cụ lợi hại giúp cho việc thực hiện các giải thuật xử lý ảnh nhanh chóng và dễ
hiểu.

2) Khởi động Matlab:


2.1) Mở chƣơng trình:

-Click vào biểu tượng để mở chương trình.

2.2) Nhập lệnh trong Matlab:


- Cửa sổ Command line hiện ra, đây là nơi chúng ta sẽ nhập lệnh và Matlab đưa ra kết
quả.
- Lệnh sẽ thực hiện ngay và thể hiện kết quả thực thi trên màn hình.
Vd: >> 5+3

ans =
8
- Trong nhiều trường hợp ta không muốn thể hiện kết quả thì sau khi gõ lệnh phải thêm
dấu “;”.

2.3) Sử dụng công cụ giúp đỡ:


-Đánh lệnh help ten_lenh để biết được cách sử dụng và công dụng của ten_lenh.
Ví dụ: help convert
-Nếu không biết chính xác tên lệnh là gì, ta có thể dùng lệnh lookfor.
-Ví dụ: lookfor convert sẽ cho ta danh sách các lệnh có từ convert trong phần trợ giúp.
Trang 1
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

3) Phép toán với vector và ma trận:


3.1) Các toán tử:
-Trong Matlab, không cần khai báo biến. Matlab phân biệt biến chữ hoa và thường
Ví dụ: A và a là hai biến khác nhau
-Các phép toán số học: +,-,*,/,\(chia đảo), ^.
-Các toán tử quan hệ :< , <= , > , >= , == , ~=
-Các toán tử logic : & , | (or) , ~ (not)

-Các hằng : pi 3.14159265


i số ảo
j tương tự i
eps sai số 2-52
inf vô cùng lớn
NaN Not a number

3.2) Làm việc với vector và ma trận:


-Trong Matlab, tất cả các đối tượng đều xem là ma trận. Một chữ số là một ma trận 1*1 .
Một vector là ma trận một hàng hay một cột.
Ví dụ: >> a=[5 10 2;10 2 4; 2 4 5]

a=
5 10 2
10 2 4
2 4 5

-Chỉ số : Phần tử ở hàng i cột j của ma trận có kí hiệu là A(i,j). Tuy nhiên ta cũng có thể
tham chiếu tới phần tử của mảng nhờ một chỉ số A(k). Ví dụ: A(6) là tham chiếu của
A(3,2).
-Toán tử “:” là một toán tử quan trọng, xuất hiện ở nhiều dạng khác nhau
Ví dụ: >> 5:10
Trang 2
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

ans =
5 6 7 8 9 10
>> 1:2:10
ans=

1 3 5 7 9
 A(:,j) để trích ra cột thứ j của A
 A(i,:) để trích ra hàng thứ i
 A(k:l,m:n) trích ra ma trận con của A
 V(i:j) trích ra một phần vector V
Ví dụ: >> A=[2 4 6; 1 3 5; 3 1 4];

>> A(3,:)
ans =
3 1 4
-Chuyển vị: Dùng dấu „ để tạo ma trận chuyển vị
Ví dụ: >>a=[1 3; 2 4]
a=

1 3
2 4
>> a„
ans =
1 2
3 4

-Phép toán số học với ma trận:

Cộng, trừ ma trận:


>> a=[2 3];

Trang 3
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

>> b=[1 2];


>> a+b
ans =
3 5

Nhân hai ma trận:


>> a*b„
ans =
8
>> a.*b
ans =

2 6

Chia các thành phần của ma trận này cho một ma trận khác:
>> a./b
ans =
2.0000 1.5000

Lũy thừa của ma trận:


>> a.^2
ans =

4 9
>> c=[1 2; 3 4];
>> c^2
ans =
7 10
15 22

-Ma trận đặc biệt:


 zeros(m,n): ma trận toàn 0
 eye(n):ma trận đơn vị
Trang 4
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

 ones(m,n): Ma trận toàn 1

4) Lập trình trong matlab:


4.1) Biểu thức điều kiện: Gần giống trong C
-If, else , elseif.

-switch( chỉ thực thi duy nhất một nhóm lệnh)

4.2) Vòng lập:


-for, while.

5)Hàm m-file:
 Hàm m-file là một chương trình con do chúng ta yêu cầu các đối số ngõ vào và có thể trả
về đối số ngõ ra
 Cú pháp:
function[outputArgs]=function_name(inputArgs)
-Chú thích(đặt sau dấu %, chú thích sẽ hiện ra khi dùng lệnh help)
-Các lệnh.

-return;
Phải lưu lại với tên giống tên hàm.
Ví dụ:Vẽ hàm sau trong khoảng [-10,10]
Giải:
function f = function1(x)
y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6 ;

Lưu lại với tên function1.m


>>fplot(„function1‟,[-10,10]);

6)Vẽ hình trong Matlab:


-Matlab cung cấp nhiều hàm để biểu diễn đồ thị 2D và 3D.
 plot: vẽ đồ thị 2D
 plot3: vẽ đồ thị 3D

Trang 5
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

PQ=paddedsize(size(image1));
D0=str2num(get(handles.cutoff,'String'));
if D0<=0
msgbox('Please input meaningful cut off frequency')
return
end
n=str2num(get(handles.order,'String'));
if n<=0
msgbox('Invalid order number for Butterworth Filter!')
return
end
W=str2num(get(handles.bandwidth,'String'));
if W<=0
msgbox('Please input meaningful width of band-reject')
end
filsize=get(handles.size,'Value');
switch filsize
case 1
m=3;
n=3;
case 2
m=5;
n=5;
case 3
m=7;
n=7;
end
value=get(handles.filtertype,'Value');
switch value
case 1 %Arithmetic Mean Filter
H=fspecial('average',[m n]);
filimage=imfilter(noiseimage,H);
case 2 %Geometric Mean Filter
filimage=gmean(noiseimage,m,n);
case 3 %Median Filter
filimage=medfilt2(noiseimage,[m n],'symmetric');
case 4 %Harmonic Filter
filimage=harmean(noiseimage,m,n);
case 5 %Max Filter
filimage=ordfilt2(noiseimage,m*n,ones(m,n),'symmetric');
case 6 %Min Filter
filimage=ordfilt2(noiseimage,1,ones(m,n),'symmetric');
case 7 %Adaptive Filter (Weiner)
filimage=wiener2(noiseimage,[m n]);
Trang 98
Báo cáo đồ án ĐTVT1 GVHD : Bùi Minh Thành

case 8 %Ideal Bandreject Filter


type='ideal';
H=bandreject(PQ,D0,W,type,n);
F=fftshift(fft2(image1,PQ(1),PQ(2)));
J=F.*H;
filimage=real(ifft2(J));
filimage=filimage(1:size(image1,1),1:size(image1,2));
case 9 %Gaussian Bandreject Filter
type='butter';
H=bandreject(PQ,D0,W,type,n);
F=fftshift(fft2(image1,PQ(1),PQ(2)));
J=F.*H;
filimage=real(ifft2(J));
filimage=filimage(1:size(image1,1),1:size(image1,2));
case 10 %Butterworth Bandreject Filter
type='Gaussian';
H=bandreject(PQ,D0,W,type,n);
F=fftshift(fft2(image1,PQ(1),PQ(2)));
J=F.*H;
filimage=real(ifft2(J));
filimage=filimage(1:size(image1,1),1:size(image1,2));
end

Trang 99

You might also like