Tải bản đầy đủ - 0 (trang)
MATLAB VÀ CODE CỦA CHƯƠNG TRÌNH

MATLAB VÀ CODE CỦA CHƯƠNG TRÌNH

Tải bản đầy đủ - 0trang

Hình 4.1.3: Hướng dẫn bật giao diện chính

4.1.3.1 Test bằng ảnh trong thư viện:

 Chọn “ Ảnh trong thư viện”



Hình 4.1.3.1a: Hướng dẫn chọn ảnh trong thư viện



 Chọn một ảnh trong thư viện



Nhấn “Open”

Hệ thống sẽ tự động nhận dạng và xuất ra kết quả dạng text.



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 78



Hình 4.1.3.1b: Chọn một ảnh trong thư viện

 Kết quả nhận được:



Hình 4.1.3.1c: Kết quả nhận dạng

 Kết quả khi xuất ra file Excel:



Hình 4.1.3.1d: Kết quả khi xuất ra file Excel

4.1.3.1 Test ảnh bằng camera:

 Chọn camera “1”

SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 79



Hình 4.1.3.2a: Chọn camera

 Chọn “Mở camera”



Hình 4.1.3.2b: Chọn mở camera



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 80



 Chọn “Chạy” để nhận dạng biển số



Hình 4.1.3.2c: Chọn chạy để nhận dạng biển số

 Kết quả khi xuất ra file Excel:



Hình 1.3.2d: Kết quả xuất ra Excel

4.2

4.2.1



Code chương trình:

Code hiển thị giao diện của chương trình:

function axes2_CreateFcn(hObject, eventdata, handles)

% hObject

handle to axes2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

empty - handles not created until after all CreateFcns

called

imshow('logoa.jpg');

function axes3_CreateFcn(hObject, eventdata, handles)

% hObject

handle to axes3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

empty - handles not created until after all CreateFcns

called

imshow('logokhoa.jpg');

% Hint: place code in OpeningFcn to populate axes3



4.2.2 Code chương trình chính:

4.2.2.1 Chương trình test bằng camera:



Chương trình khi nhấn chọn camera



% --- Executes on button press in get_camera.

function get_camera_Callback(hObject, eventdata, handles)



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 81



% hObject

handle to get_camera (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of get_camera

global vid

if get(hObject,'value')

if ~isempty(vid)&& strcmp('on',get(vid,'Running'))

set(handles.run_button,'enable','on');

set(handles.off_line_,'enable','off');

set(handles.analysic_button,'enable','off');

set(handles.radiobutton1,'value',0);

else

errordlg('Camera chua san sang, chon lai camera!');

set(hObject,'value',0);

end

else

set(handles.run_button,'enable','off');

set(handles.off_line_,'enable','on');

set(handles.analysic_button,'enable','on')

end



Chương trình chụp ảnh từ camera

% --- Executes on button press in pushbutton40.

function pushbutton40_Callback(hObject, eventdata, handles)

% hObject

handle to pushbutton40 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

stop(handles.timer1);

global ID;

global vid;

global data

vid=videoinput('winvideo',ID,'YUY2_640x480','returnedcolorspace','rgb');

vid.TriggerRepeat = Inf;

triggerconfig(vid, 'manual');

set(vid,'Framespertrigger',1);

start(vid);

set(handles.run_button,'enable','on');

start(handles.timer1);

data.check=1;



Chương trình nhận dạng khi test bằng camera

% --- Executes on button press in run_button.

function run_button_Callback(hObject, eventdata, handles)

% hObject

handle to run_button (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

global data;

global vid

stop(handles.timer1);

trigger(vid);

data.rgb=getdata(vid);

try

xu_ly(hObject,eventdata,handles);



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 82



catch e

errordlg(e.message);

start(handles.timer1);

end

start(handles.timer1);



Chương trình xuất kết quả ra Excel

% --- Executes on button press in pushbutton39.

function pushbutton39_Callback(hObject, eventdata, handles)

% hObject

handle to pushbutton39 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

global data;

set(hObject,'Enable','off');

pause(0.25);

xlswrite('data.xls',data.TD);

winopen('data.xls');

set(hObject,'Enable','off');



Lưu kết quả trong Excel

% --- Executes on button press in save_button.

function save_button_Callback(hObject, eventdata, handles)

% hObject

handle to save_button (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

s=get(handles.name_edit,'string');

s=sprintf('%s.xls',s);

xlswrite(s,handles.result);

set(handles.open_button,'enable','on');



Chương trình cắt biển số xe máy:

% --- Executes on button press in recognize_button.

function recognize_button_Callback(hObject, eventdata, handles)

% hObject

handle to recognize_button (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

X='';

for i=1:length(handles.digits1)

x=my_num_recog(handles.digits1{i},handles.numbers,handles.chars,1);

X=cat(2,X,x);

end

Y='';

for i=1:length(handles.digits2)

y=my_num_recog(handles.digits2{i},handles.numbers,handles.chars,2);

Y=cat(2,Y,y);

end

s=sprintf('%s - %s',X,Y);

handles.count=handles.count+1;

handles.result{handles.count,1}=s;

set(handles.result_text,'string',s);

set(handles.save_button,'enable','on');

guidata(hObject,handles);



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 83



Chương trình tách biển số:

function [im1,im2]=tach1( rgb )

%TACH1 Summary of this function goes here

%

Detailed explanation goes here

g=rgb2gray(rgb);

g=imadjust(g);

% g1=255-g;

g1=imadjust(g,[0 1],[1 0],2);

g1=imadjust(g1);

g1=imclearborder(g1,8);

g1=imadjust(g1);

bw=edge(g1,'canny');

bw=imdilate(bw,[0 1 0; 1 1 1; 0 1 0]);

bw=imfill(bw,'holes');

bw=imopen(bw,strel('disk',2));

stat=regionprops(bw,'Area','Image','BoundingBox','Centroid');

count=0;

for i=1:length(stat)

a=stat(i).Area; % Dien tich cac doi tuong

b=stat(i).Image;% anh crop cua cac doi tuong

d=stat(i).BoundingBox(1:2);% Khung bao cua cac doi tuong

[r,c]=size(b);% Lay kich thuoc

if r>c && c>0.2*r&& c<0.55*r

count=count+1;

t(count,1)=a;% luu lai dien tich

t(count,2)=i;% luu lai vi tri

t(count,3)=round(r*c);% lay kich thuoc anh

t(count,4:5)=[d(2),d(1)];% Lay Vi Tri ?i?m ??u

end

end

n=length(t);

t=sortrows(t,1);% Xep theo dien tich tang dan

count=0;

if n>=9 % truong hop phat hien nhieu hon 9 doi tuong

ts=t(end-8:end,:);% lay 9 doi tuong co dien tich lon nhat

su=sum(ts(:,3))/9;

for i=1:9

if ts(i,3)>0.2*su;

count=count+1;

ts1(count,:)=ts(i,:);

end

end

else

ts1=t;

end

ts1=sortrows(ts1,4);

t1=ts1(1:4,:);

t1=sortrows(t1,5);

t2=ts1(5:end,:);

t2=sortrows(t2,5);

n1=size(t1,1);

im1=cell(1,n1);

n2=size(t2,1);

im2=cell(1,n2);



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 84



for i=1:n1

a=(stat(t1(i,2)).BoundingBox);

b=imcrop(rgb,a);

b=rgb2gray(b);

b=imadjust(b);

b=imadjust(b,[0 1],[1 0],2);

b=im2bw(b);

b=my_BwTrim(b);

b=imopen(b,strel('disk',1));

im1{i}=b;

end

for i=1:n2

a=(stat(t2(i,2)).BoundingBox);

b=imcrop(rgb,a);

b=rgb2gray(b);

b=imadjust(b);

b=imadjust(b,[0 1],[1 0],2);

b=im2bw(b);

b=my_BwTrim(b);

b=imopen(b,strel('disk',1));

im2{i}=b;

end

end



Chương trình biến đổi ảnh vào thành ảnh nhị phân

function y = inputanh(rgb)

%INPUTANH Summary of this function goes here

%

Detailed explanation goes here

gray=rgb2gray(rgb); % chuyen anh mau thanh anh xam

gray=imadjust(gray);% can bang cuong do sang

[row,col]=size(gray);% Lay kich thuoc anh

cp=[round(row/2),round(col/2)];% toa do diem tam

de=round(0.01*row);% khoang cong tru

cm1=cp(1)-de:cp(1)+de;% khoang thoa man theo hang

cm2=cp(2)-de:cp(2)+de;% khoang thoa man theo cot

doituongnho=round(0.02*row*col);% so diem anh doi tuong nho

biensonho=[round(0.08*row),round(0.08*19*row/14)];% bien so duoc cho la nho

thresh=0; % khoi tao nguong

check=0; % khoi tao kiem tra

while check==0

thresh=thresh+0.01;

if thresh==1

msgbox('Khong phat hien duoc bien so');

break;

else

bw=im2bw(gray,thresh);

bw=bwareaopen(bw,doituongnho);

bw=imfill(bw,'holes');

bw=imclearborder(bw,4);

bw=imopen(bw,strel('rectangle',biensonho));

[L,n]=bwlabel(bw);

%

close all;imshow(bw);

if n>0



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 85



for i=1:n

[row1,col1]=find(bw==i);

a=sum(ismember(cm1,row1));

b=sum(ismember(cm2,col1));

stat=regionprops((L==i),'BoundingBox');%xac dinh hinh chu nhat

bao quanh

try

mat=stat.BoundingBox;

if a>0&&b>0&&mat(4)
check=1;

%

bw=(L==i);

break;

else

check=0;

end

catch e

msgbox(e.message);

end

end

end

end

end

%img la anh nhi phan cua bang so

if thresh<1

rgbcrop=imcrop(rgb,mat);

y=rgbcrop;

else

y=rgb;

end

end



Chương trình điều chỉnh góc xoay của biển số:

function y= angle(rgb )

%ANGLE Summary of this function goes here

%

Detailed explanation goes here

gray=rgb2gray(rgb);

BW=edge(gray,'canny');

BW=imclose(BW,strel('line',10,90));

[H,theta,rho] = hough(BW);

P = houghpeaks(H,1,'threshold',ceil(0.3*max(H(:))));

lines = houghlines(BW,theta,rho,P,'FillGap',5,'MinLength',7);

% figure, imshow(rgb), hold on

max_len = 0;

p=0;

for k = 1:length(lines)

%

xy = [lines(k).point1; lines(k).point2];

%

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');



%

%



% Plot beginnings and ends of lines

plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');

plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

len = norm(lines(k).point1 - lines(k).point2);

if ( len > max_len)

max_len = len;



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 86



p=k;

end

end

A=lines(p).point1;

B=lines(p).point2;

goc=atan2(B(2)-A(2),B(1)-A(1));

goc=rad2deg(goc);

if goc <80

y=imrotate(rgb,goc,'crop');

end

end



Chuỗi ký tự số và chữ cái của biển số:

function y= ind2char( ind )

%IND2CHAR Summary of this function goes here

%

Detailed explanation goes here

y='NaN';

switch ind

case 1

y='0';

case 2

y='1';

case 3

y='2';

case 4

y='3';

case 5

y='4';

case 6

y='5';

case 7

y='6';

case 8

y='7';

case 9

y='8';

case 10

y='9';

case 11

y='A';

case 12

y='B';

case 13

y='C';

case 14

y='D';

case 15

y='F';

case 16

y='G';

case 17

y='H';

case 18



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 87



y='K';

case 19

y='L';

case 20

y='M';

case 21

y='N';

case 22

y='P';

case 23

y='S';

case 24

y='T';

case 25

y='U';

case 26

y='V';

case 27

y='X';

case 28

y='Y';

case 29

y='Z';

end

end



4.2.2.2 Chương trình test bằng ảnh trong thư viện:

% --- Executes on button press in off_line_.

function off_line__Callback(hObject, eventdata, handles)

% hObject

handle to off_line_ (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles

structure with handles and user data (see GUIDATA)

global data

if strcmp('on',get(handles.timer1,'Running'))

stop(handles.timer1);

data.check=1;

end

set(hObject,'Enable','off');

pause(0.25);

for i=1:8

set(gcf,'CurrentAxes',handles.tren{i});

imshow(ones(90,40));

set(gcf,'CurrentAxes',handles.duoi{i});

imshow(ones(90,40));

end

set(gcf,'CurrentAxes',handles.axes2);

imshow(ones(90,40))

oldFolder=cd;

if exist('a.mat','file')

load a.mat

[fName, dirName] = uigetfile({'*.bmp;*.tif;*.jpg;*.tiff;*.png'},'Chon

Anh',dirName);



SVTH: Hồ Xuân Hiền

Lớp: KT ĐT-TT K37A



Page 88



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

MATLAB VÀ CODE CỦA CHƯƠNG TRÌNH

Tải bản đầy đủ ngay(0 tr)

×