Uploaded by User103327

KELOMPOK 5 MAKALAH PENGENAL PLAT NOMOR KENDARAAN

advertisement
MAKALAH
PENGENAL PLAT NOMOR KENDARAAN MENGGUNAKAN MATLAB
PEMROGRAMAN KOMPUTER II
Disusun oleh :
Kelompok 5
1.
Muhammad Akbar Ramadhan
(1513619001)
2.
Sri Ulina
(1513619021)
3.
Nova Dwi Astuti
(1513619031)
4.
Iqbal Alfajar
(1513619038)
5.
Raka Abi Affan Arifin
(1513619061)
6.
Lugina Adisaputra
(1513617060)
Dosen Pengampu
: Dr. Baso Maruddani, S.T., M.T.
PENDIDIKAN VOKASIONAL TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI JAKARTA
2021
KATA PENGANTAR
Assalamu’alaikum Warahmatullahi Wabarakatuh
Kami panjatkan puja dan puji syukur kehadirat Allah SWT yang telah melimpahkan
taufiq dan hidayah-Nya serta telah memberi kami kesempatan menerima dan menyelesaikan
tugas mata kuliah ini, membantu kami dalam menyelesaikan tugas ini. Terimakasih kepada
Bapak Dr. Baso Maruddani, S.T., M.T. selaku dosen pembimbing mata kuliah Pemrograman
Komputer II yang telah memberi banyak ilmu dan pengetahuan kepada kami. Serta tak lupa
pula kami ucapkan terimakasih kepada orang tua kami yang telah memberi do’a, dukungan,
dorongan, dan memfasilitasi kami dalam kehidupan sehari-hari termasuk fasilitas dibidang
pendidikan.
Adapun makalah yang kami buat ini adalah makalah tentang Pengenal Plat Nomor
Kendaraan Menggunakan Matlab. Kami berharap pembuatan makalah ini dapat menambah
wawasan, pengetahuan dan kreatifitas kami maupun pembaca. Kami menyadari bahwa
makalah ini masih jauh dari kata sempurna karena masih terdapat kekurangan, baik dari segi
pengetahuan kami, maupun segi penyusunan isi makalah ini. Oleh karena itu kami
membutuhkan kritik dan saran dari berbagai pihak untuk memperbaiki laporan ini.
Terimakasih.
Wassalamu’alaikum Warahmatullahi Wabarakatuh.
Jakarta, 23 April 2021
Penyusun
ii
DAFTAR ISI
KATA PENGANTAR ...............................................................................................................ii
DAFTAR ISI............................................................................................................................ iii
BAB I ......................................................................................................................................... 1
PENDAHULUAN ..................................................................................................................... 1
1.1.
Latar Belakang ............................................................................................................ 1
1.2.
Rumusan Masalah ....................................................................................................... 1
1.3.
Tujuan.......................................................................................................................... 1
1.4.
Manfaat........................................................................................................................ 2
BAB II........................................................................................................................................ 3
PEMBAHASAN ........................................................................................................................ 3
2.1.
Sistem Number Plate Recognition (NPR) ................................................................... 3
2.2.
Langkah Kerja Sistem Number Plate Recognition (NPR) .......................................... 3
2.3.
Cara Kerja Program Pengenal Plat Nomor Kendaraan menggunakan Matlab ........... 8
2.4.
Flowchart Program Pengenal Plat Nomor Kendaraan menggunakan Matlab............. 9
2.5.
List Program Pengenal Plat Nomor Kendaraan menggunakan Matlab..................... 10
BAB III .................................................................................................................................... 29
PENUTUP................................................................................................................................ 29
3.1.
Kesimpulan................................................................................................................ 29
3.2.
Saran .......................................................................................................................... 29
DAFTAR PUSTAKA .............................................................................................................. 30
LAMPIRAN .............................................................................................................................. 31
iii
BAB I
PENDAHULUAN
1.1. Latar Belakang
Hukum Indonesia mewajibkan setiap kendaraan pribadi memiliki pengenal
berupa plat nomor kendaraan. Pengenal kendaraan tersebut harus tercatat dalam
database yang disimpan oleh pemerintah pusat. Umumnya, pencatatan pengenal
kendaraan dilakukan secara manual oleh petugas. Penginputan data identitas secara
manual memungkinkan terjadi kesalahan. Oleh karena itu, aplikasi-aplikasi baru
berbasis teknologi canggih harus dimanfaatkan dengan sedemikian rupa agar dapat
memenuhi tujuannya yaitu mempercepat dan mempermudah kinerja manusia. Salah
satu contohnya yaitu Pengenal Plat Nomor Kendaraan Otomatis. Sistem identifikasi
kendaraan otomatis digunakan untuk tujuan kontrol lalu lintas yang efektif dan aplikasi
keamanan seperti kontrol akses ke area terbatas dan pelacakan kendaraan yang
diinginkan.
1.2. Rumusan Masalah
1.2.1. Apa sistem yang digunakan sebagai Pengenal Plat Nomor Kendaraan?
1.2.2. Bagaimana langkah kerja sistem yang digunakan sebagai Pengenal Plat Nomor
Kendaraan?
1.2.3. Bagaimana cara kerja program Pengenal Plat Nomor Kendaraan dengan
menggunakan Matlab?
1.3. Tujuan
1.3.1. Mengetahui sistem yang digunakan sebagai Pengenal Plat Nomor Kendaraan
1.3.2. Mengetahui langkah kerja sistem yang digunakan sebagai Pengenal Plat
Nomor Kendaraan
1.3.3. Memahami cara kerja program Pengenal Plat Nomor Kendaraan dengan
menggunakan Matlab
1
1.4. Manfaat
1.4.1. Memperoleh pengetahuan berkaitan dengan sistem Pengenal Plat Nomor
Kendaraan
1.4.2. Memperoleh pemahaman berkaitan dengan langkah kerja sistem yang
digunakan sebagai Pengenal Plat Nomor Kendaraan
1.4.3. Dapat membuat program Pengenal
menggunakan Matlab
2
Plat Nomor Kendaraan dengan
BAB II
PEMBAHASAN
2.1. Sistem Number Plate Recognition (NPR)
Number Plate Recognition (NPR) atau LPR (Licence Plate Recognition)
merupakan salah satu pemanfaatan pengolahan citra untuk mengenali karakter nomor
plat pada kendaraan, yang dimana biasanya digunakan untuk proses pencatatan plat
nomor kendaraan secara otomatis ke sistem salah satunya adalah proses penginputan
secara otomatis ke dalam sistem parkir. Proses LPR (Licence Plate Recognition)
memanfaatkan teknologi pengolahan citra yaitu OCR (Optical Character Recognition)
yang dimana digunakan untuk mengenali karakter yang ada pada plat nomor sehingga
dapat dilakukan proses pencatatan plat nomor kendaraan ke sistem secara otomatis.
Dengan hal tersebut, maka akan meningkatkan keamanan saat melakukan proses
pencatatan keluar masuk kendaraan bermotor.
2.2. Langkah Kerja Sistem Number Plate Recognition (NPR)
a. Input gambar yang ditangkap
b. Ekstraksi Plat
Ekstraksi plat adalah proses untuk menentukan daerah letak plat yang berada
pada citra gambar yang nanti akan diproses untuk pengenalan karakter huruf pada
plat gambar tersebut.
1) Color to Gray Conversion
Pada proses ini citra inputan yang pada awalnya merupakan citra berwarna
kemudian
akan
diubah
menjadi
citra
abu-abu
(grayscale)
dengan
mengeliminasi hue dan saturation sementara tetap mempertahankan luminance
dari citra input tersebut. Proses ini memanggil fungsi rgb2gray yang ada pada
matlab dan citra grayscale tersebut disimpan ke dalam sebuah variabel yang
bertipe image.
3
Gambar 2. Proses RGB ke Grayscale
2) Filter Penghalusan (Smooting)
Filter smooting digunakan untuk mengaburkan (bluring) dan untuk
mengurangi noise pada citra seperti membuang detai kecil citra untuk
mengekstraksi objek yang besar. Pada proses ini mengunakan median filter
yang termasuk dalam filter non-linier yang berfungsi menganti nilai piksel
dengan median dari nilai intensitas piksel tersebut dengan perintah medfilt2(f,
[m n]) pada matlab, yang mana fungsi [mn] mendefinisikan ukuran m x n
dimana median dihitung.
Gambar 3. Proses Median Filter
3) Dilasi
Pada proses ini dilakukan penebalan pada citra gambar yang berfungsi
untuk memperbaiki huruf dan angka yang berada pada plat agar terlihat lebih
jelas dan mudah terbaca. Proses tersebut dapat dijalankan pada matlab dengan
perintah imdilate.
Gambar 4. Proses Dilasi
4) Erosi
Erosi adalah proses kebalikan dari proses dilasi yang dimana berfungsi
untuk penipisan dan pengkecilan objek dari citra. Fungsi tersebut dapat
dijalankan dengan fungsi emrode.
4
Gambar 5. Proses Erosi
5) Morpologi Gradient
Pada proses ini berfungsi sebagai penggabungan antara proses dilasi dan
erosi pada citra.
Gambar 6. Proses Morphologi Gradient
6) Konvolusi
Pada proses ini konvolusi berfungsi sebagai penerangan pada sudut citra
gambar untuk menghasilkan citra yang terang.
Gambar 7. Proses Konvolusi
7) Historigram Equalization
Histogram equalization bekerja dengan melakukan pemetaan linier
terhadap nilai intensitas pada histogram awal menjadi nilai intensitas pada
histogram yang baru.Hal ini bertujuan meningkatkan ketajaman gambar.
Proses ini sangat berpengaruh dalam pendeteksian tepi.
Gambar 8. Proses Histogram
8) Restorasi Citra
Pada banyak kasus pengolahan citra baik proses binerisasi maupun deteksi
tepi menghasilkan citra yang pada umumnya masih belum baik, oleh karena
itu perlu dilakukan perbaikan citra/restorasi citra kembali. Dalam proses ini
restorasi citra berfungsi untuk mengembalikan nilai citra yang hilang akibat
5
proses histogram untuk memperbaiki karakter angka atau huruf pada plat.
Gambar 9. Proses Restorasi Citra
9) Operasi Morfologi
Pada proses ini kita akan menerapkan Operasi morfologi untuk
memperkecil citra biner dan menghapus nilai piksel kecil pada gambar agar
terlihat lebih halus
Gambar 10. Proses Morfologi
Setelah itu lakukan proses penentuan daerah plat nomor dan melakukan
ektraksi plat menggunakan algoritma yang telah ditentukan
Gambar 11. Daerah Calon Plat
Gambar 12. Hasil Calon Plat
c. Segmentasi plat dan Pengenalan Karakter
1) Tahap Segmentasi Plat
Dalam tahap ini merupakan tahap pemecahan image kedalam obyek-obyek
yang terkandung didalamnya yang dapat menjadi sarana untuk automated
image analysis, misal untuk pengenalan obyek-obyek dalam image.
Segmentasi dapat dilakukan berdasar pada kemiripan (similarity), dimana
image dibagi berdasar kemiripan gray level.
6
Tahapan segmentasi plat adalah sebagai berikut:
a) Mengindex semua objek yang terdapat pada image
b) Mencari luas masing-masing objek
c) Mencari objek yang mempunyai luas sebagai plat nomor
Tujuan dari proses ini adalah untuk mengekstrak plat nomor dari gambar
yang diambil. Output dari proses ini adalah gambar plat nomor yang tepat pada
plat nomornya.
2) Tahap Pengenalan Karakter
Proses pengenalan karakter dilakukan dengan menggunakan metode
template matching yang dimana hasil dari citra yang telah terekstrak akan
dibandingkan dengan hasil dari segmantasi karakter yang telah dibuat dan di
dalam database. Pendekatan dengan pencocokan template diperlukan untuk
mengenali karakter yang ada pada plat. Untuk pencocokan gambar
menggunakan database, gambar yang mempunyai kesamaan yang dianggap
terbaik.
Proses pencocokan dilakukan dengan memindahkan template gamber untuk
seluruh posisi yang memungkinkan pada sumber gambar yang lebih besar
dengan menhitung indeks numeric yang menunjukan seberapa baik template
sesuai dengan gambar pada posisi itu. Selain itu pencocokan dilakukan dengan
cara piksel-by-piksel. Pembuatan template ini adalah proses penting untuk
menentukan pengenalan karakter, yang dimana template yang telah dibuat
akan dibandingkan dengan citra pembanding untuk mengenali karakter yang
ada pada plat. Pembuatan template ini menggunakan profile projection sebagai
detector baris dari citra dan menggunakan titik massa (centroid) sebagai cara
pemotongan perkarakter. Kemudian karakter yang telah dipotong diubah
ukuranya menjadi 24 x 42 agar bisa dikolerasi dengan template.
Dalam pembuatan template dibagi beberapa tahapan pembuatanya yaitu:
a) Langkah pertama adalah membuat sebuah yang isinya alphabet dari A-Z
dan angka dari 0-9
7
Gambar 13. Pembuatan Template
b) Dengan menggunakan teknik vertical profile projection potong citra
tersebut menjadi 3 baris.
c) Tiap potongan baris akan mencari centroid (titik pusat massa) lalu crop
sesuai dengan bounding box tiap centroid tersebut.
d) Lalu setiap karakter hasil pemotongan di resize menjadi 24 x 42.
e) Lalu hasil resize akan disimpan pada sebuah matriks secara berurutan
sesuai dengan gambar diatas. Tujuannya adalah ketika melakukan
kolerasi, pemenang dari kolerasi akan otomatis menunjukan indeks dari
karakter tersebut.
d. Menampilkan nomor plat kendaraan
B 313 EEK
2.3. Cara Kerja Program Pengenal Plat Nomor Kendaraan menggunakan Matlab
1. Run program file Tampilan_Plat.m
2. Pilih (Pendahuluan/Tim Kami/Mulai)
3. Jika pilih Pendahuluan maka program akan menjalankan file Pendahuluan.fig ->
akan menampilkan Pendahuluan
4. Jika pilih Tim Kami maka program akan menjalankan file Team_Kami.fig -> akan
menampilkan Team_Kami
5. Jika pilih Mulai maka program akan menjalankan file Mulai.fig -> Menampilkan
8
Mulai -> Tekan Browse untuk menginput gambar plat nomor yang akan dideteksi >Tekan Start untuk menjalankan program pendeteksian plat nomor -> perhatikan
result -> menampilkan hasil pendeteksian plat nomor pada result. Jika ingin
mengulangi program silahkan tekan browse kembali.
6. Jika ingin kembali pada Tampilan_Plat (menu home) Tekan icon home untuk
kembali pada Tampilan_Plat
7. Jika ingin mengakhiri program silahkan tekan tombol silang pada pojok kanan atas
untuk mengakhiri program
2.4. Flowchart Program Pengenal Plat Nomor Kendaraan menggunakan Matlab
9
2.5. List Program Pengenal Plat Nomor Kendaraan menggunakan Matlab
Tampilan_Plat.m
1 function varargout = Tampilan_Plat(varargin)
2 % TAMPILAN_PLAT MATLAB code for Tampilan_Plat.fig
3%
4%
TAMPILAN_PLAT, by itself, creates a new TAMPILAN_PLAT or raises the existing
singleton*.
5%
6%
7%
H = TAMPILAN_PLAT returns the handle to a new TAMPILAN_PLAT or the handle to
the existing singleton*.
8%
9%
10 %
TAMPILAN_PLAT('CALLBACK',hObject,eventData,handles,...) calls the local
function named CALLBACK in TAMPILAN_PLAT.M with the given input arguments.
11 %
12 %
13 %
TAMPILAN_PLAT('Property','Value',...) creates a new TAMPILAN_PLAT or raises the
14 %
applied to the GUI before Tampilan_Plat_OpeningFcn gets called.
15 %
16 %
unrecognized property name or invalid value makes property application
existing singleton*.
stop.
Starting from the left, property value pairs are
An
All inputs are passed to Tampilan_Plat_OpeningFcn via varargin.
17 %
18 %
19 %
*See GUI Options on GUIDE's Tools menu.
Choose "GUI allows only one
instance to run (singleton)".
20 %
21 % See also: GUIDE, GUIDATA, GUIHANDLES
22
23 % Edit the above text to modify the response to help Tampilan_Plat
24
25 % Last Modified by GUIDE v2.5 09-Apr-2021 23:47:31
26
27 % Begin initialization code - DO NOT EDIT
28 gui_Singleton = 1;
29 gui_State = struct('gui_Name',
mfilename, ...
30
'gui_Singleton',
31
'gui_OpeningFcn', @Tampilan_Plat_OpeningFcn, ...
32
'gui_OutputFcn',
@Tampilan_Plat_OutputFcn, ...
33
'gui_LayoutFcn',
[] , ...
34
'gui_Callback',
35 if nargin && ischar(varargin{1})
36
gui_Singleton, ...
[]);
gui_State.gui_Callback = str2func(varargin{1});
37 end
38
39 if nargout
40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41 else
42
gui_mainfcn(gui_State, varargin{:});
43 end
44 % End initialization code - DO NOT EDIT
45
46
47 % --- Executes just before Tampilan_Plat is made visible.
48 function Tampilan_Plat_OpeningFcn(hObject, eventdata, handles, varargin)
10
49 % This function has no output args, see OutputFcn.
50 % hObject
51 % eventdata
handle to figure
52 % handles
structure with handles and user data (see GUIDATA)
53 % varargin
command line arguments to Tampilan_Plat (see VARARGIN)
reserved - to be defined in a future version of MATLAB
54
55 % Choose default command line output for Tampilan_Plat
56 handles.output = hObject;
57
58 % Update handles structure
59 guidata(hObject, handles);
60
61 % UIWAIT makes Tampilan_Plat wait for user response (see UIRESUME)
62 % uiwait(handles.figure1);
63
64
65 % --- Outputs from this function are returned to the command line.
66 function varargout = Tampilan_Plat_OutputFcn(hObject, eventdata, handles)
67 % varargout
cell array for returning output args (see VARARGOUT);
68 % hObject
69 % eventdata
handle to figure
70 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
71
72 % Get default command line output from handles structure
73 varargout{1} = handles.output;
74
75 % --- Executes during object creation, after setting all properties.
76 function figure1_CreateFcn(hObject, eventdata, handles)
77 handles.output = hObject;
78
79 guidata(hObject, handles);
80 hback = axes('units','normalized','position',[0 0 1 1 ]);
81 uistack(hback,'bottom');
82 [back map] = imread('awal.png');
83 image(back)
84 colormap(map)
85 background=imread('awal.png');
86 set(hback,'handlevisibility','off','visible','off')
87
88 % Update handles structure
89 guidata(hObject, handles);
90
91
92 % --- Executes during object creation, after setting all properties.
93 function axes1_CreateFcn(hObject, eventdata, handles)
94 % hObject
handle to axes1 (see GCBO)
95 % eventdata
96 % handles
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns called
97
98 % Hint: place code in OpeningFcn to populate axes1
99 imshow('p.png');
100
101
102 % --- Executes during object creation, after setting all properties.
103 function axes2_CreateFcn(hObject, eventdata, handles)
104 % hObject
handle to axes2 (see GCBO)
11
105 % eventdata
reserved - to be defined in a future version of MATLAB
106 % handles
empty - handles not created until after all CreateFcns called
107
108 % Hint: place code in OpeningFcn to populate axes2
109 imshow('team.png');
110
111
112 % --- Executes during object creation, after setting all properties.
113 function axes3_CreateFcn(hObject, eventdata, handles)
114 % hObject
handle to axes3 (see GCBO)
115 % eventdata
116 % handles
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns called
117
118 % Hint: place code in OpeningFcn to populate axes3
119 imshow('mulai.png');
120
121
122 % --- Executes on button press in pushbuttonPEN.
123 function pushbuttonPEN_Callback(hObject, eventdata, handles)
124 % hObject
125 % eventdata
handle to pushbuttonPEN (see GCBO)
126 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
127 close
128 Pendahuluan
129
130 % --- Executes on button press in pushbuttonTIM.
131 function pushbuttonTIM_Callback(hObject, eventdata, handles)
132 % hObject
handle to pushbuttonTIM (see GCBO)
133 % eventdata
134 % handles
reserved - to be defined in a future version of MATLAB
structure with handles and user data (see GUIDATA)
135 close
136 Team_Kami
137
138 % --- Executes on button press in pushbuttonMULAI.
139 function pushbuttonMULAI_Callback(hObject, eventdata, handles)
140 % hObject
handle to pushbuttonMULAI (see GCBO)
141 % eventdata
reserved - to be defined in a future version of MATLAB
142 % handles
structure with handles and user data (see GUIDATA)
143 close
144 Mulai
12
Pendahuluan.m
1 function varargout = Pendahuluan(varargin)
2 % PENDAHULUAN MATLAB code for Pendahuluan.fig
PENDAHULUAN, by itself, creates a new PENDAHULUAN or raises the existing
3%
4%
singleton*.
5%
6%
H = PENDAHULUAN returns the handle to a new PENDAHULUAN or the handle to
7%
the existing singleton*.
8%
9%
PENDAHULUAN('CALLBACK',hObject,eventData,handles,...) calls the local
10 %
function named CALLBACK in PENDAHULUAN.M with the given input arguments.
11 %
12 %
PENDAHULUAN('Property','Value',...) creates a new PENDAHULUAN or raises the
13 %
existing singleton*.
14 %
15 %
applied to the GUI before Pendahuluan_OpeningFcn gets called.
16 %
stop.
17 %
18 %
*See GUI Options on GUIDE's Tools menu.
19 %
instance to run (singleton)".
Starting from the left, property value pairs are
An
unrecognized property name or invalid value makes property application
All inputs are passed to Pendahuluan_OpeningFcn via varargin.
Choose "GUI allows only one
20 %
21 % See also: GUIDE, GUIDATA, GUIHANDLES
22
23 % Edit the above text to modify the response to help Pendahuluan
24
25 % Last Modified by GUIDE v2.5 19-Apr-2021 11:33:07
26
27 % Begin initialization code - DO NOT EDIT
28 gui_Singleton = 1;
29 gui_State = struct('gui_Name',
'gui_Singleton',
30
mfilename, ...
gui_Singleton, ...
31
'gui_OpeningFcn', @Pendahuluan_OpeningFcn, ...
32
'gui_OutputFcn',
@Pendahuluan_OutputFcn, ...
33
'gui_LayoutFcn',
[] , ...
34
'gui_Callback',
35 if nargin && ischar(varargin{1})
36
[]);
gui_State.gui_Callback = str2func(varargin{1});
37 end
38
39 if nargout
40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41 else
42
gui_mainfcn(gui_State, varargin{:});
43 end
44 % End initialization code - DO NOT EDIT
45
46
47 % --- Executes just before Pendahuluan is made visible.
48 function Pendahuluan_OpeningFcn(hObject, eventdata, handles, varargin)
49 % This function has no output args, see OutputFcn.
50 % hObject
51 % eventdata
handle to figure
reserved - to be defined in a future version of MATLAB
52 % handles
structure with handles and user data (see GUIDATA)
53 % varargin
command line arguments to Pendahuluan (see VARARGIN)
54
13
55 % Choose default command line output for Pendahuluan
56 handles.output = hObject;
57
58 % Update handles structure
59 guidata(hObject, handles);
60
61 % UIWAIT makes Pendahuluan wait for user response (see UIRESUME)
62 % uiwait(handles.figure1);
63
64
65 % --- Outputs from this function are returned to the command line.
66 function varargout = Pendahuluan_OutputFcn(hObject, eventdata, handles)
67 % varargout
cell array for returning output args (see VARARGOUT);
68 % hObject
69 % eventdata
handle to figure
70 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
71
72 % Get default command line output from handles structure
73 varargout{1} = handles.output;
74
75
76 % --- Executes during object creation, after setting all properties.
77 function figure1_CreateFcn(hObject, eventdata, handles)
78 % hObject
handle to figure1 (see GCBO)
79 % eventdata
reserved - to be defined in a future version of MATLAB
80 % handles
empty - handles not created until after all CreateFcns called
81 handles.output = hObject;
82
83 guidata(hObject, handles);
84 hback = axes('units','normalized','position',[0 0 1 1 ]);
85 uistack(hback,'bottom');
86 [back map] = imread('awal.png');
87 image(back)
88 colormap(map)
89 background=imread('awal.png');
90 set(hback,'handlevisibility','off','visible','off')
91
92 % Update handles structure
93 guidata(hObject, handles);
94
95
96 % --- Executes on button press in pushbutton5.
97 function pushbutton5_Callback(hObject, eventdata, handles)
98 % hObject
99 % eventdata
100 % handles
handle to pushbutton5 (see GCBO)
reserved - to be defined in a future version of MATLAB
structure with handles and user data (see GUIDATA)
101 close
102 Tampilan_Plat
14
Team_Kami.m
1 function varargout = Team_Kami(varargin)
2 % TEAM_KAMI MATLAB code for Team_Kami.fig
TEAM_KAMI, by itself, creates a new TEAM_KAMI or raises the existing
3%
4%
singleton*.
5%
6%
H = TEAM_KAMI returns the handle to a new TEAM_KAMI or the handle to
7%
the existing singleton*.
8%
9%
TEAM_KAMI('CALLBACK',hObject,eventData,handles,...) calls the local
10 %
function named CALLBACK in TEAM_KAMI.M with the given input arguments.
11 %
12 %
TEAM_KAMI('Property','Value',...) creates a new TEAM_KAMI or raises the
13 %
existing singleton*.
14 %
15 %
applied to the GUI before Team_Kami_OpeningFcn gets called.
16 %
stop.
17 %
18 %
*See GUI Options on GUIDE's Tools menu.
19 %
instance to run (singleton)".
Starting from the left, property value pairs are
An
unrecognized property name or invalid value makes property application
All inputs are passed to Team_Kami_OpeningFcn via varargin.
Choose "GUI allows only one
20 %
21 % See also: GUIDE, GUIDATA, GUIHANDLES
22
23 % Edit the above text to modify the response to help Team_Kami
24
25 % Last Modified by GUIDE v2.5 19-Apr-2021 14:43:51
26
27 % Begin initialization code - DO NOT EDIT
28 gui_Singleton = 1;
29 gui_State = struct('gui_Name',
'gui_Singleton',
30
mfilename, ...
gui_Singleton, ...
31
'gui_OpeningFcn', @Team_Kami_OpeningFcn, ...
32
'gui_OutputFcn',
@Team_Kami_OutputFcn, ...
33
'gui_LayoutFcn',
[] , ...
34
'gui_Callback',
35 if nargin && ischar(varargin{1})
36
[]);
gui_State.gui_Callback = str2func(varargin{1});
37 end
38
39 if nargout
40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41 else
42
gui_mainfcn(gui_State, varargin{:});
43 end
44 % End initialization code - DO NOT EDIT
45
46
47 % --- Executes just before Team_Kami is made visible.
48 function Team_Kami_OpeningFcn(hObject, eventdata, handles, varargin)
49 % This function has no output args, see OutputFcn.
50 % hObject
51 % eventdata
handle to figure
52 % handles
structure with handles and user data (see GUIDATA)
53 % varargin
command line arguments to Team_Kami (see VARARGIN)
reserved - to be defined in a future version of MATLAB
54
15
55 % Choose default command line output for Team_Kami
56 handles.output = hObject;
57
58 % Update handles structure
59 guidata(hObject, handles);
60
61 % UIWAIT makes Team_Kami wait for user response (see UIRESUME)
62 % uiwait(handles.figure1);
63
64
65 % --- Outputs from this function are returned to the command line.
66 function varargout = Team_Kami_OutputFcn(hObject, eventdata, handles)
67 % varargout
cell array for returning output args (see VARARGOUT);
68 % hObject
69 % eventdata
handle to figure
70 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
71
72 % Get default command line output from handles structure
73 varargout{1} = handles.output;
74 guidata(hObject, handles);
75 hback = axes('units','normalized','position',[0 0 1 1 ]);
76 uistack(hback,'bottom');
77 [back map] = imread('awal.png');
78 image(back)
79 colormap(map)
80 background=imread('awal.png');
81 set(hback,'handlevisibility','off','visible','off')
82
83 % Update handles structure
84 guidata(hObject, handles);
85
86
87 % --- Executes on button press in pushbutton2.
88 function pushbutton2_Callback(hObject, eventdata, handles)
89 % hObject
90 % eventdata
handle to pushbutton2 (see GCBO)
91 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
92 close
93 Tampilan_Plat
94
95
96 % --- Executes during object creation, after setting all properties.
97 function axes1_CreateFcn(hObject, eventdata, handles)
98 % hObject
99 % eventdata
100 % handles
handle to axes1 (see GCBO)
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns called
101
102 % Hint: place code in OpeningFcn to populate axes1
103 imshow('akbar.jpg');
104
105
106 % --- Executes during object creation, after setting all properties.
107 function axes7_CreateFcn(hObject, eventdata, handles)
108 % hObject
handle to axes7 (see GCBO)
109 % eventdata
reserved - to be defined in a future version of MATLAB
110 % handles
empty - handles not created until after all CreateFcns called
16
111
112 % Hint: place code in OpeningFcn to populate axes7
113 imshow('uli.jpg');
114
115
116 % --- Executes during object creation, after setting all properties.
117 function axes8_CreateFcn(hObject, eventdata, handles)
118 % hObject
119 % eventdata
handle to axes8 (see GCBO)
120 % handles
empty - handles not created until after all CreateFcns called
reserved - to be defined in a future version of MATLAB
121
122 % Hint: place code in OpeningFcn to populate axes8
123 imshow('nova.jpg');
124
125
126 % --- Executes during object creation, after setting all properties.
127 function axes9_CreateFcn(hObject, eventdata, handles)
128 % hObject
handle to axes9 (see GCBO)
129 % eventdata
reserved - to be defined in a future version of MATLAB
130 % handles
empty - handles not created until after all CreateFcns called
131
132 % Hint: place code in OpeningFcn to populate axes9
133 imshow('Iqbal.jpg');
134
135
136 % --- Executes during object creation, after setting all properties.
137 function axes10_CreateFcn(hObject, eventdata, handles)
138 % hObject
handle to axes10 (see GCBO)
139 % eventdata
140 % handles
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns called
141
142 % Hint: place code in OpeningFcn to populate axes10
143 imshow('raka.jpg');
144
145
146 % --- Executes during object creation, after setting all properties.
147 function axes11_CreateFcn(hObject, eventdata, handles)
148 % hObject
149 % eventdata
handle to axes11 (see GCBO)
150 % handles
empty - handles not created until after all CreateFcns called
reserved - to be defined in a future version of MATLAB
151
152 % Hint: place code in OpeningFcn to populate axes11
153 imshow('lugina.jpg');
17
Mulai.m
1 function varargout = Mulai(varargin)
2 % MULAI MATLAB code for Mulai.fig
MULAI, by itself, creates a new MULAI or raises the existing
3%
4%
singleton*.
5%
6%
H = MULAI returns the handle to a new MULAI or the handle to
7%
the existing singleton*.
8%
9%
MULAI('CALLBACK',hObject,eventData,handles,...) calls the local
10 %
function named CALLBACK in MULAI.M with the given input arguments.
11 %
12 %
MULAI('Property','Value',...) creates a new MULAI or raises the
13 %
existing singleton*.
14 %
15 %
applied to the GUI before Mulai_OpeningFcn gets called.
16 %
stop.
17 %
18 %
*See GUI Options on GUIDE's Tools menu.
19 %
instance to run (singleton)".
Starting from the left, property value pairs are
An
unrecognized property name or invalid value makes property application
All inputs are passed to Mulai_OpeningFcn via varargin.
Choose "GUI allows only one
20 %
21 % See also: GUIDE, GUIDATA, GUIHANDLES
22
23 % Edit the above text to modify the response to help Mulai
24
25 % Last Modified by GUIDE v2.5 19-Apr-2021 23:18:01
26
27 % Begin initialization code - DO NOT EDIT
28 gui_Singleton = 1;
29 gui_State = struct('gui_Name',
'gui_Singleton',
30
mfilename, ...
gui_Singleton, ...
31
'gui_OpeningFcn', @Mulai_OpeningFcn, ...
32
'gui_OutputFcn',
@Mulai_OutputFcn, ...
33
'gui_LayoutFcn',
[] , ...
34
'gui_Callback',
35 if nargin && ischar(varargin{1})
36
[]);
gui_State.gui_Callback = str2func(varargin{1});
37 end
38
39 if nargout
40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41 else
42
gui_mainfcn(gui_State, varargin{:});
43 end
44 % End initialization code - DO NOT EDIT
45
46
47 % --- Executes just before Mulai is made visible.
48 function Mulai_OpeningFcn(hObject, eventdata, handles, varargin)
49 % This function has no output args, see OutputFcn.
50 % hObject
51 % eventdata
handle to figure
52 % handles
structure with handles and user data (see GUIDATA)
53 % varargin
command line arguments to Mulai (see VARARGIN)
reserved - to be defined in a future version of MATLAB
54
18
55 % Choose default command line output for Mulai
56 handles.output = hObject;
57
58 % Update handles structure
59 guidata(hObject, handles);
60
61 % UIWAIT makes Mulai wait for user response (see UIRESUME)
62 % uiwait(handles.figure1);
63
64
65 % --- Outputs from this function are returned to the command line.
66 function varargout = Mulai_OutputFcn(hObject, eventdata, handles)
67 % varargout
cell array for returning output args (see VARARGOUT);
68 % hObject
69 % eventdata
handle to figure
70 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
71
72 % Get default command line output from handles structure
73 varargout{1} = handles.output;
74
75 % --- Executes during object creation, after setting all properties.
76 function figure1_CreateFcn(hObject, eventdata, handles)
77 % hObject
78 % eventdata
handle to figure1 (see GCBO)
79 % handles
empty - handles not created until after all CreateFcns called
reserved - to be defined in a future version of MATLAB
80 handles.output = hObject;
81
82 guidata(hObject, handles);
83 hback = axes('units','normalized','position',[0 0 1 1 ]);
84 uistack(hback,'bottom');
85 [back map] = imread('awal.png');
86 image(back)
87 colormap(map)
88 background=imread('awal.png');
89 set(hback,'handlevisibility','off','visible','off')
90
91 % Update handles structure
92 guidata(hObject, handles);
93
94
95 % --- Executes on button press in pushbutton1.
96 function pushbutton1_Callback(hObject, eventdata, handles)
97 % hObject
handle to pushbutton1 (see GCBO)
98 % eventdata
99 % handles
reserved - to be defined in a future version of MATLAB
structure with handles and user data (see GUIDATA)
100 f=handles.a;
%Membaca Gambar Plat Nomor
101 f=imresize(f,[400 NaN]);
102 tetap sama
%Mengubah ukuran rasio untuk menjaga gambar
103 g=rgb2gray(f);
%Mengonversi gambar RGB (warna) menjadi abu-abu
104 (intensitas)
105 g=medfilt2(g,[3 3]);
%Pemfilteran (filter penghalusan) untuk
106 menghilangkan noise.
107 se=strel('disk',1);
108 pemrosesan morfologi.
%Elemen struktural (disk dengan radius 1) untuk
109 gi=imdilate(g,se);
%Mendilasi gambar (penebalan pada citra gambar
110 untuk memperbaiki huruf dan angka
19
111 ge=imerode(g,se);
%Kebalikan dari dilasi (untuk penipisan dan
112 pengecilan objek dari citra
113 gdiff=imsubtract(gi,ge);
%Morphological Gradient untuk peningkatan tepi
114 gdiff=mat2gray(gdiff);
%Mengubah kelas menjadi dua kali lipat (tebal)
115 gdiff=conv2(gdiff,[1 1;1 1]);
116 tepinya
%Konvolusi gambar ganda untuk mencerahkan
117 gdiff=imadjust(gdiff,[0.5 0.7],[0 1],0.1);
118 1.
119 B=logical(gdiff);
%Skala intensitas antara rentang 0 hingga
%Konversi kelas dari ganda ke biner.
120 er=imerode(B,strel('line',50,0));
121 out1=imsubtract(B,er);
122 F=imfill(out1,'holes');
%Mengisi semua wilayah gambar.
123 H=bwmorph(F,'thin',1);
%Menipiskan gambar untuk memastikan isolasi
124 karakter.
125 H=imerode(H,strel('line',3,90));
126 final=bwareaopen(H,100);
%%Menyeleksi semua wilayah yang luas pikselnya
127 lebih dari 100.
128 Iprops=regionprops(final,'BoundingBox','Image');
129 NR=cat(1,Iprops.BoundingBox);
130 r=controlling(NR);
131 if ~isempty(r)
132
I={Iprops.Image};
133
noPlate=[];
for v=1:length(r)
134
135
N=I{1,r(v)};
136
letter=readLetter(N);
while letter=='O' || letter=='0'
137
138
if v<=3
139
letter='O';
else
140
141
letter='0';
end
142
break;
143
end
144
145
noPlate=[noPlate letter];
146
end
147
fid = fopen('noPlate.txt', 'wt');
148
fprintf(fid,'%s\n',noPlate);
149
fclose(fid);
150
%winopen('noPlate.txt') %misalnya mau make notepad
151
%imshow(gdiff); %misalnya mau gambar ke biner doang
152
detect = noPlate
153
axes(handles.axes1);
154
imshow(final);
155 else
156
fprintf('Unable to extract the characters from the number plate.\n');
157
fprintf('The characters on the number plate might not be clear or touching with
158 each other or boundries.\n');
159 end
160 set(handles.result,'String',noPlate);
161
162 function result_Callback(hObject, eventdata, handles)
163 % hObject
164 % eventdata
handle to result (see GCBO)
165 % handles
structure with handles and user data (see GUIDATA)
reserved - to be defined in a future version of MATLAB
166
20
167 % Hints: get(hObject,'String') returns contents of result as text
168 %
str2double(get(hObject,'String')) returns contents of result as a double
169
170
171 % --- Executes during object creation, after setting all properties.
172 function result_CreateFcn(hObject, eventdata, handles)
173 % hObject
handle to result (see GCBO)
174 % eventdata
175 % handles
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns called
176
177 % Hint: edit controls usually have a white background on Windows.
See ISPC and COMPUTER.
178 %
179 if ispc && isequal(get(hObject,'BackgroundColor'),
180 get(0,'defaultUicontrolBackgroundColor'))
181
set(hObject,'BackgroundColor','white');
182 end
183
184
185 % --- Executes during object creation, after setting all properties.
186 function axes1_CreateFcn(hObject, eventdata, handles)
187 % hObject
handle to axes1 (see GCBO)
188 % eventdata
reserved - to be defined in a future version of MATLAB
189 % handles
empty - handles not created until after all CreateFcns called
190
191 % Hint: place code in OpeningFcn to populate axes1
192
193
194 % --- Executes on button press in browse.
195 function browse_Callback(hObject, eventdata, handles)
196 % hObject
handle to browse (see GCBO)
197 % eventdata
reserved - to be defined in a future version of MATLAB
198 % handles
structure with handles and user data (see GUIDATA)
199 [Filename,Pathname]=uigetfile('*.jpg','File Selector');
200 name=strcat(Pathname,Filename);
201 a=imread(name);
202 set(handles.edit2,'string',name);
203 axes(handles.axes2);
204 imshow(a);
205 handles.a=a;
206 guidata(hObject, handles);
207
208
209
210 function edit2_Callback(hObject, eventdata, handles)
handle to edit2 (see GCBO)
211 % hObject
212 % eventdata
reserved - to be defined in a future version of MATLAB
213 % handles
structure with handles and user data (see GUIDATA)
214
215 % Hints: get(hObject,'String') returns contents of edit2 as text
216 %
str2double(get(hObject,'String')) returns contents of edit2 as a double
217
218
219 % --- Executes during object creation, after setting all properties.
220 function edit2_CreateFcn(hObject, eventdata, handles)
221 % hObject
handle to edit2 (see GCBO)
222 % eventdata
reserved - to be defined in a future version of MATLAB
21
223 % handles
empty - handles not created until after all CreateFcns called
224
225 % Hint: edit controls usually have a white background on Windows.
See ISPC and COMPUTER.
226 %
227 if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton6 (see GCBO)
% eventdata
reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
close
Tampilan_Plat
22
Create_templates.m
1 A=imread('A.bmp');B=imread('B.bmp');
2 C=imread('C.bmp');D=imread('D.bmp');
3 E=imread('E.bmp');F=imread('F.bmp');
4 G=imread('G.bmp');H=imread('H.bmp');
5 I=imread('I.bmp');J=imread('J.bmp');
6 K=imread('K.bmp');L=imread('L.bmp');
7 M=imread('M.bmp');N=imread('N.bmp');
8 O=imread('O.bmp');P=imread('P.bmp');
9 Q=imread('Q.bmp');R=imread('R.bmp');
10 S=imread('S.bmp');T=imread('T.bmp');
11 U=imread('U.bmp');V=imread('V.bmp');
12 W=imread('W.bmp');X=imread('X.bmp');
13 Y=imread('Y.bmp');Z=imread('Z.bmp');
14 Afill=imread('fillA.bmp');
15 Bfill=imread('fillB.bmp');
16 Dfill=imread('fillD.bmp');
17 Ofill=imread('fillO.bmp');
18 Pfill=imread('fillP.bmp');
19 Qfill=imread('fillQ.bmp');
20 Rfill=imread('fillR.bmp');
21
22
23
24
25 one=imread('1.bmp');
two=imread('2.bmp');
26 three=imread('3.bmp');four=imread('4.bmp');
27 five=imread('5.bmp'); six=imread('6.bmp');
28 seven=imread('7.bmp');eight=imread('8.bmp');
29 nine=imread('9.bmp'); zero=imread('0.bmp');
30 zerofill=imread('fill0.bmp');
31 fourfill=imread('fill4.bmp');
32 sixfill=imread('fill6.bmp');
33 sixfill2=imread('fill6_2.bmp');
34 eightfill=imread('fill8.bmp');
35 ninefill=imread('fill9.bmp');
36 ninefill2=imread('fill9_2.bmp');
37
38
39
40
41
42 letter=[A Afill B Bfill C D Dfill E F G H I J K L M...
43
N O Ofill P Pfill Q Qfill R Rfill S T U V W X Y Z];
44
45 number=[one two three four fourfill five...
46
six sixfill sixfill2 seven eight eightfill nine ninefill ninefill2 zero zerofill];
47
48 character=[letter number];
49
50 NewTemplates=mat2cell(character,42,[24 24 24 24 24 24 24 24 ...
24 24 24 24 24 24 24 ...
51
52
24 24 24 24 24 24 24 ...
53
24 24 24 24 24 24 24 ...
54
24 24 24 24 24 24 24 ...
23
55
24 24 24 24 24 24 24 ...
56
24 24 24 24 24 24 24]);
57
58
59
60
61
62
63 save ('NewTemplates','NewTemplates')
64 clear all
24
readLetter.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function letter=readLetter(snap)
load NewTemplates
snap=imresize(snap,[42 24]);
comp=[ ];
for n=1:length(NewTemplates)
sem=corr2(NewTemplates{1,n},snap);
comp=[comp sem];
end
vd=find(comp==max(comp));
if vd==1 || vd==2
letter='A';
elseif vd==3 || vd==4
letter='B';
elseif vd==5
letter='C';
elseif vd==6 || vd==7
letter='D';
elseif vd==8
letter='E';
elseif vd==9
letter='F';
elseif vd==10
letter='G';
elseif vd==11
letter='H';
elseif vd==12
letter='I';
elseif vd==13
letter='J';
elseif vd==14
letter='K';
elseif vd==15
letter='L';
elseif vd==16
letter='M';
elseif vd==17
letter='N';
elseif vd==18 || vd==19
letter='O';
elseif vd==20 || vd==21
letter='P';
elseif vd==22 || vd==23
letter='Q';
elseif vd==24 || vd==25
letter='R';
elseif vd==26
letter='S';
elseif vd==27
letter='T';
elseif vd==28
letter='U';
elseif vd==29
letter='V';
25
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
elseif vd==30
letter='W';
elseif vd==31
letter='X';
elseif vd==32
letter='Y';
elseif vd==33
letter='Z';
elseif vd==34
letter='1';
elseif vd==35
letter='2';
elseif vd==36
letter='3';
elseif vd==37 ||
letter='4';
elseif vd==39
letter='5';
elseif vd==40 ||
letter='6';
elseif vd==43
letter='7';
elseif vd==44 ||
letter='8';
elseif vd==46 ||
letter='9';
else
letter='0';
end
end
vd==38
vd==41 || vd==42
vd==45
vd==47 || vd==48
takeboxes.m
1 function r=takeboxes(NR,container,chk)
2
3 takethisbox=[];
4 for i=1:size(NR,1)
5
if NR(i,(2*chk))>=container(1) && NR(i,(2*chk))<=container(2)
6
7
takethisbox=cat(1,takethisbox,NR(i,:));
end
8 end
9 r=[];
10 for k=1:size(takethisbox,1)
11
12
13
14
var=find(takethisbox(k,1)==reshape(NR(:,1),1,[]));
if length(var)==1
r=[r var];
else
for v=1:length(var)
15
16
M(v)=NR(var(v),(2*chk))>=container(1) && NR(var(v),(2*chk))<=container(2);
17
end
18
var=var(M);
19
20
r=[r var];
end
21 end
22 end
26
guessthesix.m
1
function container=guessthesix(Q,W,bsize)
2
3
for l=5:-1:2
4
val=find(Q==l);
5
var=length(val);
6
if isempty(var) || var == 1
if val == 1
7
8
index=val+1;
else
9
10
index=val;
11
end
12
if length(Q)==val
13
index=[];
14
end
15
if Q(index)+Q(index+1) == 6 | Q(index)+Q(index+1) == 7 | Q(index)+Q(index+1) == 8
16
container=[W(index)-(bsize/2) W(index+1)+(bsize/2)];
break;
17
elseif Q(index)+Q(index-1) == 6 | Q(index)+Q(index-1) == 7 | Q(index)+Q(index-1) == 8
18
19
container=[W(index-1)-(bsize/2) W(index)+(bsize/2)];
break;
20
end
21
else
22
for k=1:1:var
23
if val(k)==1
24
25
index=val(k)+1;
else
26
27
index=val(k);
28
end
29
if length(Q)==val(k)
30
index=[];
31
end
32
if Q(index)+Q(index+1) == 6 | Q(index)+Q(index+1) == 7 | Q(index)+Q(index+1) == 8
33
container=[W(index)-(bsize/2) W(index+1)+(bsize/2)];
break;
34
elseif Q(index)+Q(index-1) == 6 | Q(index)+Q(index-1) == 7 | Q(index)+Q(index-1) == 8
35
36
container=[W(index-1)-(bsize/2) W(index)+(bsize/2)];
break;
37
end
38
39
end
40
if k~=var
break;
41
end
42
end
43
44
end
45
if l==2
46
container=[];
47
end
48
end
27
controlling.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function r=controlling(NR)
[Q,W]=hist(NR(:,4));
ind=find(Q==6 | Q==7 | Q==8);
for k=1:length(NR)
C_5(k)=NR(k,2) * NR(k,4);
end
NR2=cat(2,NR,C_5');
[E,R]=hist(NR2(:,5),20);
Y=find(E==6 | E==7 | E==8);
if length(ind)==1
MP=W(ind);
binsize=W(2)-W(1);
container=[MP-(binsize/2) MP+(binsize/2)];
r=takeboxes(NR,container,2);
elseif length(Y)==1
MP=R(Y);
binsize=R(2)-R(1);
container=[MP-(binsize/2) MP+(binsize/2)];
r=takeboxes(NR2,container,2.5);
elseif isempty(ind) || length(ind)>1
[A,B]=hist(NR(:,2),20);
ind2=find(A==6 | A==7 | A==8);
if length(ind2)==1
MP=B(ind2);
binsize=B(2)-B(1);
container=[MP-(binsize/2) MP+(binsize/2)];
r=takeboxes(NR,container,1);
else
container=guessthesix(A,B,(B(2)-B(1)));
if ~isempty(container)
r=takeboxes(NR,container,1);
elseif isempty(container)
container2=guessthesix(E,R,(R(2)-R(1)));
if ~isempty(container2)
r=takeboxes(NR2,container2,2.5);
else
r=[];
end
end
end
end
end
28
BAB III
PENUTUP
3.1. Kesimpulan
Pengenal kendaraan tersebut harus tercatat dalam database yang disimpan oleh
pemerintah pusat. Number Plate Recognition (NPR) atau LPR (Licence Plate
Recognition) merupakan salah satu pemanfaatan pengolahan citra untuk mengenali
karakter nomor plat pada kendaraan, yang dimana biasanya digunakan untuk proses
pencatatan plat nomor kendaraan secara otomatis ke sistem salah satunya adalah proses
penginputan secara otomatis ke dalam sistem parkir. Dalam sistem ini, perangkat lunak
aplikasi dirancang untuk mendeteksi pelat nomor kendaraan menggunakan pelat nomor
asli. Pada lokasi pelat pertama diekstraksi menggunakan operasi morfologis kemudian
dipisahkan karakter pelat secara individual berdasarkan segmentasi. Akhirnya
pencocokan template diterapkan dengan penggunaan korelasi untuk pengenalan
karakter pelat.
3.2. Saran
Untuk pembuatan project ini disarankan untuk memakai kamera yang HD untuk
mendeteksi nomor plat lebih akurat. Dan disarankan juga untuk menggunakan nomor
plat yang jelas bukan yang sudah rusak agar memudahkan pendektesian nomor plat
dengan baik.
29
DAFTAR PUSTAKA
Kiki Kusumawati dan Dery Willy Cahyadi. (2017). Penerapan Teknologi Optical Character
Recognition untuk Mendeteksi Plat Nomor Kendaraan. ISSN 2580-5495
Ragini Bhat dan Bijender Mehandia. (2014). RECOGNITION OF VEHICLE NUMBER
PLATE USING MATLAB. INTERNATIONAL JOURNAL OF INNOVATIVE
RESEARCH IN ELECTRICAL, ELECTRONICS, INSTRUMENTATION AND
CONTROL ENGINEERING, Vol.2, No.8. 1899-1903
Wakhidah, Nur. (2012). Deteksi Plat Nomor Kendaraan Bermotor Berdasarkan Area pada
Image Segmentation. JURNAL TRANSFORMATIKA, Vol.9, No.2. 55-63
30
LAMPIRAN
Tampilan_Plat
Pendahuluan
31
Team_Kami
Mulai
32
Download