Pembuatan Aplikasi Penipisan Citra Tulisan Dengan Metoda Hilditch.
i
Universitas Kristen Maranatha ABSTRAK
Dewasa ini era modernisasi berkembang cukup pesat. Hal ini membuat orang – orang yang ahli di bidang elektronika berlomba – lomba membuat alat yang dapat memudahkan pekerjaan manusia. Salah satunya adalah mesin pencatat plat nomor otomatis. Namun seringkali terjadi kendala tidak terbacanya tulisan oleh jaringan saraf tiruan (JST) karena tulisan yang terlalu tebal.
Maka dibuatlah sebuah aplikasi untuk menipiskan huruf dan angka tersebut sebelum akhirnya dibaca oleh JST tersebut agar tingkat kegagalan pembacaan oleh JST tersebut dapat berkurang. Proses ini disebut dengan thinning atau skeletonization. Metoda Hilditch akan dipakai dalam proses thinning tersebut karena merupakan metoda yang paling efisien untuk proses penipisan ini.
(2)
ii
Universitas Kristen Maranatha ABSTRACT
Today's era of modernization developed rapidly. This made peoples who experts in the field of electronics race to make a tool that can facilitate the work of man. One of it is the automatic plate number recording machine. But the problem is often the artificial neural network did not recognize the letters because the size of the letters is too thick.
Therefore an application to thin the letters and numbers before being read by an artificial neural network made so that the failure rate for reading by the ANN can be reduced. This process is called thinning or skeletonization. The Hilditch method will be used in thinning process because it is the most eficient method for this thinning process.
(3)
v
Universitas Kristen Maranatha
DAFTAR ISI
Halaman
ABSTRAK ... i
ABSTRACT ... ii
KATA PENGANTAR ... iii
DAFTAR ISI ... v
DAFTAR GAMBAR ... vii
DAFTAR TABEL ... ix
BAB 1 PENDAHULUAN 1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 1
1.3 Tujuan ... 1
1.4 Pembatasan Masalah ... 2
1.5 Sistematika Penulisan ... 2
BAB 2 LANDASAN TEORI 2.1 Citra ... 3
2.1.1 Citra analog ... 3
2.1.2 Citra digital ... 4
2.1.3 Citra biner ... 4
2.1.4 Citra greyscale ... 5
2.1.5 Citra berwarna ... 5
2.2 Bitmap ... 6
2.3 Pixel (picture element) ... 6
2.4 Operasi morfologi ... 7
2.5 Thinning ... 7
2.5.1 Algoritma Hilditch... 8
2.5.2 Algoritma Zhangsuen ... 15
2.6 Borland delphi 7... 16
BAB 3 PERANCANGAN 3.1 Diagram blok ... 17
(4)
vi
Universitas Kristen Maranatha
3.2 Flowchart keseluruhan ... 18
3.3 Tampilan awal dan komponen yang digunakan ... 20
3.4 Coding untuk open file ... 21
3.5 Coding untuk save as ... 21
3.6 Coding untuk animate ... 22
3.7 Coding untuk button1 thin ... 22
3.8 Coding untuk button2 undo ... 23
3.9 Coding untuk struktur ketetanggaan ... 24
3.10 Coding untuk penipisan citra ... 24
BAB 4 PENGUJIAN DAN ANALISIS 4.1 Proses penipisan citra ... 30
4.1.1 Tampilan awal ... 30
4.1.2 Data pengamatan penipisan angka ... 31
4.1.3 Data pengamatan penipisan huruf ... 32
4.1.4 Data pengamatan penipisan tulisan ... 34
4.1.5 Data pengamatan penipisan huruf asing ... 35
4.1.6 Contoh penipisan citra perlangkah ... 39
4.2 Data kuesioner untuk pembacaan huruf cina dan arab ... 40
BAB 5 KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 42
5.2 Saran ... 42
DAFTAR PUSTAKA ... 43 LAMPIRAN A CODING PROGRAM ... A-1
(5)
vii
Universitas Kristen Maranatha
DAFTAR GAMBAR
Halaman
Gambar 2.1 Representasi citra biner ... 4
Gambar 2.2 matriks ketetanggaan ... 8
Gambar 2.3 B(p1)=2 , A(p1)=1 ... 9
Gambar 2.4 B(p1)=2, A(p1)=2 ... 9
Gambar 2.5 end point B(p1)=1 ... 10
Gambar 2.6 terisolasi B(p1)=0 ... 10
Gambar 2.7 B(p1)=7 ... 11
Gambar 2.8
A(p1)=2
... 12Gambar 2.9
A(p1)=2
... 12Gambar 2.10
A(p1)=3
... 12Gambar 2.11 A(p2)!=1 ... 13
Gambar 2.12 p2.p4.p8 = 0 ... 13
Gambar 2.13 p2.p4.p6!=0 dan A(p4)=1... 13
Gambar 2.14 garis vertical sebesar 2 piksel ... 14
Gambar 2.15 A(p4)!=1 ... 14
Gambar 2.16 p2.p4.p6=0 ... 14
Gambar 2.17 p2.p4.p6!=0 dan A(p4)=1... 15
Gambar 2.18 Garis horizontal sebesar 2 pixel. ... 15
Gambar 3.1 Diagram blok ... 17
Gambar 3.2 flowchart ... 18
Gambar 3.3 flowchart ... 19
Gambar 3.4 tampilan awal ... 20
Gambar 4.1 tampilan awal ... 30
Gambar 4.2 hasil penipisan angka ... 32
Gambar 4.3 hasil penipisan huruf ... 34
Gambar 4.4 hasil penipisan tulisan ... 35
(6)
viii
Universitas Kristen Maranatha
Gambar 4.6 hasil penipisan huruf cina... 36
Gambar 4.7 hasil penipisan huruf arab ... 36
Gambar 4.8 hasil penipisan kaligrafi tulisan arab ... 37
Gambar 4.9 hasil penipisan huruf ibrani ... 38
Gambar 4.10 hasil penipisan huruf ibrani ... 38
(7)
ix
Universitas Kristen Maranatha
DAFTAR TABEL
Halaman Tabel 4.1 tabel kuesioner pembacaan huruf cina ... 40 Tabel 4.2 tabel kuesioner pembacaan huruf arab ... 41
(8)
A-1 LAMPIRAN A CODING PROGRAM
unit Thinning; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, ExtDlgs, StdCtrls;
type
TRGBTripleArray = array[0..1000] of RGBTriple; PRGBTripleArray = ^TRGBTripleArray;
TPoints = array of TPoint;
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; Image1: TImage;
MainMenu1: TMainMenu; File1: TMenuItem;
Open1: TMenuItem; SaveAs1: TMenuItem; N1: TMenuItem; Animate1: TMenuItem; N2: TMenuItem;
(9)
A-2
Exit1: TMenuItem; Button1: TButton; Button2: TButton; Image2: TImage;
StaticText1: TStaticText; StaticText2: TStaticText;
procedure Open1Click(Sender: TObject); procedure SaveAs1Click(Sender: TObject); procedure Animate1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Skeletonize(var Points : TPoints ; ALebar, ATinggi : integer); procedure SkeletonizeAnimate(var Points : TPoints ; ALebar, ATinggi : integer); function Tetangga(ATetangga : byte) : TPoint; procedure Button1Click(Sender: TObject); private
{ Private declarations } UndoBitmap : TBitmap; public
{ Public declarations } end;
(10)
A-3
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
UndoBitmap := TBitmap.Create; UndoBitmap.PixelFormat := pf24bit; end;
procedure TForm1.Open1Click(Sender: TObject); begin
if not OpenPictureDialog1.Execute then Exit;
Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName); Image1.Picture.Bitmap.PixelFormat := pf24bit;
Image1.AutoSize := True;
Image2.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName); Image2.Picture.Bitmap.PixelFormat := pf24bit;
Image2.AutoSize := True; Button1.Enabled := true; end;
(11)
A-4
procedure TForm1.SaveAs1Click(Sender: TObject); begin
if not SavePictureDialog1.Execute then Exit;
Image1.Picture.Bitmap.SaveToFile(SavePictureDialog1.FileName); Image1.Picture.Bitmap.PixelFormat := pf24bit;
end;
procedure TForm1.Animate1Click(Sender: TObject); begin
Animate1.Checked := not Animate1.Checked; end;
procedure TForm1.Exit1Click(Sender: TObject); begin
Close; end;
procedure TForm1.Button2Click(Sender: TObject); begin
Image1.Canvas.Draw(0, 0, UndoBitmap); Button2.Enabled := False;
Button1.Enabled := True; end;
(12)
A-5
begin
ATetangga := (ATetangga - 2 ) mod 8 + 2; // struktur ketetanggaan Case ATetangga of
1 : begin Result.X := 0; Result.Y := 0; end; // 2 : begin Result.X := 0; Result.Y := -1; end; // 3 : begin Result.X := 1; Result.Y := -1; end; // | 4 : begin Result.X := 1; Result.Y := 0; end; // 5 : begin Result.X := 1; Result.Y := 1; end; // 6 : begin Result.X := 0; Result.Y := 1; end; // 7 : begin Result.X := -1; Result.Y := 1; end; // 8 : begin Result.X := -1; Result.Y := 0; end; // 9 : begin Result.X := -1; Result.Y := -1; end; // end;
end;
procedure TForm1.Skeletonize(var Points : TPoints ; ALebar, ATinggi : integer);
Var
Lx, Ly, index : integer; B, A, N, AN2, AN4 : byte; NOff : TPoint;
Ubah : boolean;
Hapus : array of boolean; Image : array of array of byte; begin
(13)
A-6
// gambar diperbesar untuk tinggi dan lebarnya sebesar 2 pixel untuk // menghindari access violation pada program
SetLength(Image, ALebar+2); // membuat array sebesar image for Lx := 0 to ALebar + 1 do begin
SetLength(Image[Lx], ATinggi+2); for Ly := 0 to ATinggi + 1 do begin Image[Lx,Ly] := 0;
end; end;
for index := 0 to High(Points) do
Image[Points[index].X+1][Points[index].Y+1] := 1; // array 2 dimensi diisi oleh Points dari image dengan nilai bit 1
SetLength(Hapus, length(Points)); // membuat array dengan nama Hapus panjangnya disesuaikan dengan image
Ubah := true; // memulai perubahan citra
while Ubah do begin // memulai loop untuk perubahan dan berhenti apabila sudah tidak ada perubahan
Ubah := false;
// loop melalui seluruh citra biner for index := 0 to High(Points) do begin
Hapus[index] := False; //array hapus di set false permulaan dan akan di set true apabila memenuhi 4 kriteria thinning
(14)
A-7
Lx := Points[index].X +1; //dari array yang telah di isi point dari image, X dan Y dideklarasikan pointnya +1
Ly := Points[index].Y +1;
// kriteria 1 // menghitung B
// B adalah jumlah tetangga yang bernilai bit 1 B := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
Inc(B, Image[Lx+NOff.X][Ly+NOff.Y]); // B di increment sebanyak jumlah tetangga yang bernilai bit 1
end;
if (B < 2) or (B > 6) then Continue; // jika B bernilai 2 sampai 6 maka lanjutkan
// kriteria 2 // menghitung A
// A adalah jumlah transisi bit 0->1 hanya boleh berjumlah 1 [A(p1)=1]
A := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X][Ly+NOff.Y] = 0 then begin NOff := Tetangga(N+1);
(15)
A-8
if Image[Lx+NOff.X][Ly+NOff.Y] = 1 then Inc(A); end;
if A > 1 then Break; // bila A sudah melebihi 1 maka (p) tersebut tidak melanjutkan program ke kriteria selanjutnya
end;
if A <> 1 then Continue; // bila A sama dengan dengan 1 maka lanjut ke kriteria berikutnya
// kriteria 3
// Menghitung nilai A untuk p2 AN2 := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X][Ly+NOff.Y-1] = 0 then begin NOff := Tetangga(N+1);
if Image[Lx+NOff.X][Ly+NOff.Y-1] = 1 then Inc(AN2); end;
end;
if (Image[Lx][Ly-1] * Image[Lx+1][Ly] * Image[Lx-1][Ly]=0) or // p2.p4.p8 = 0 atau p2 != 1
(AN2 <> 1) then Continue;
// kriteria 4
(16)
A-9
AN4 := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X+1][Ly+NOff.Y] = 0 then begin NOff := Tetangga(N+1);
if Image[Lx+NOff.X+1][Ly+NOff.Y] = 1 then Inc(AN4); end;
end;
if (Image[Lx][Ly-1] * Image[Lx+1][Ly] * Image[Lx][Ly+1] = 0) or // p2.p4.p6 = 0 atau p4 != 1
(AN4 <> 1) then begin
Hapus[index] := True; Ubah := True;
end; end;
// menghapus point yang telah diberi tanda pada array hapus if Ubah then begin
index := 0;
while index < length(Points) do begin if Hapus[index] then begin
// penghapusan array Hapus yang sudah diberi tanda Hapus[index] := Hapus[High(Hapus)];
(17)
A-10
SetLength(Hapus, High(Hapus)); Points[index] := Points[High(Points)]; SetLength(Points, High(Points));
Image[Points[index].X+1][Points[index].Y+1] := 0; end
else Inc(index); end;
end; end; end;
// program penganimasian
procedure TForm1.SkeletonizeAnimate(var Points : TPoints ; ALebar, ATinggi : integer);
Var
Lx, Ly, index : integer; B, A, N, AN2, AN4 : byte; NOff : TPoint;
Ubah : boolean;
Hapus : array of boolean; Image : array of array of byte; begin
SetLength(Image, ALebar+2); for Lx := 0 to ALebar + 1 do begin SetLength(Image[Lx], ATinggi+2);
(18)
A-11
for Ly := 0 to ATinggi + 1 do begin Image[Lx][Ly] := 0;
end; end;
for index := 0 to High(Points) do
Image[Points[index].X+1][Points[index].Y+1] := 1; SetLength(Hapus, length(Points));
Ubah := true;
while Ubah do begin Ubah := false;
for index := 0 to High(Points) do begin
Hapus[index] := False;
Lx := Points[index].X +1; Ly := Points[index].Y +1;
B := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
Inc(B, Image[Lx+NOff.X][Ly+NOff.Y]); end;
(19)
A-12
if (B < 2) or (B > 6) then Continue;
A := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X][Ly+NOff.Y] = 0 then begin NOff := Tetangga(N+1);
if Image[Lx+NOff.X][Ly+NOff.Y] = 1 then Inc(A); end;
if A > 1 then Break; end;
if A <> 1 then Continue;
AN2 := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X][Ly+NOff.Y+1] = 0 then begin NOff := Tetangga(N+1);
if Image[Lx+NOff.X][Ly+NOff.Y+1] = 1 then Inc(AN2); end;
end;
if (Image[Lx][Ly+1] * Image[Lx+1][Ly] * Image[Lx-1][Ly] <> 0) and
(20)
A-13
(AN2 = 1) then Continue;
AN4 := 0;
for N := 2 to 9 do begin NOff := Tetangga(N);
if Image[Lx+NOff.X+1][Ly+NOff.Y] = 0 then begin NOff := Tetangga(N+1);
if Image[Lx+NOff.X+1][Ly+NOff.Y] = 1 then Inc(AN4); end;
end;
if (Image[Lx][Ly-1] * Image[Lx+1][Ly] * Image[Lx][Ly+1] = 0) or (AN4 <> 1) then begin
Hapus[index] := True; Ubah := True;
end; end;
if Ubah then begin index := 0;
while index < length(Points) do begin if Hapus[index] then begin
(21)
A-14
Points[index] := Points[High(Points)]; SetLength(Points, High(Points)); Hapus[index] := Hapus[High(Hapus)]; SetLength(Hapus, High(Hapus)); end
else Inc(index); end;
end;
Image1.Canvas.FillRect(Image1.ClientRect); for Ly := 0 to High(Points) do begin
Image1.Canvas.Pixels[Points[Ly].X, Points[Ly].Y] := clblack; end;
Image1.Refresh; Sleep(200); end;
end;
procedure TForm1.Button1Click(Sender: TObject); var
Scan : PRGBTripleArray; Lx, Ly : integer;
Points : TPoints; begin
(22)
A-15
UndoBitmap.Lebar := Image1.Lebar; UndoBitmap.Tinggi := Image1.Tinggi;
UndoBitmap.Canvas.Draw(0, 0, Image1.Picture.Bitmap); Button2.Enabled := True;
Button1.Enabled := False;
//mengambil array Points dari image SetLength(Points, 0);
for Ly := 0 to Image1.Tinggi -1 do begin Scan := Image1.Picture.Bitmap.ScanLine[Ly]; for Lx := 0 to Image1.Lebar -1 do begin if Scan[Lx].rgbtgreen = 0 then begin SetLength(Points, length(Points)+1 ); Points[High(Points)] := Point(Lx, Ly); end;
end; end;
if Animate1.Checked then
SkeletonizeAnimate(Points, Image1.Lebar, Image1.Tinggi) else Skeletonize(Points, Image1.Lebar, Image1.Tinggi);
Image1.Canvas.FillRect(Image1.ClientRect); for Lx := 0 to High(Points) do begin
(23)
A-16
end; end;
(24)
1
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
1.1 Latar Belakang
Seiring dengan perkembangan zaman yang semakin pesat, kebutuhan akan efektifitas dan efisiensi sangat diutamakan dalam berbagai bidang. Hal tersebut telah mendorong manusia untuk semakin berkreasi dan berinovasi dalam bidang teknologi untuk dapat melakukan berbagai pekerjaan secara otomatis.
Salah satu contoh pekerjaan tersebut adalah pencatatan plat nomor secara otomatis. Dalam sistem ini terdapat 3 tahapan dalam pengerjaannya yaitu penangkapan citra plat nomor oleh kamera, pemrosesan citra tersebut, dan pembacaan oleh jaringan saraf tiruan.
Namun pada proses pembacaan oleh jaringan saraf tiruan seringkali terjadi kesalahan dalam pembacaannya karena huruf dan angka pada plat nomor tersebut terlalu tebal. Oleh karena itulah dipilih sebuah topik dengan judul PEMBUATAN APLIKASI PENIPISAN CITRA TULISAN DENGAN METODA HILDITCH sebagai topik tugas akhir.
1.2Rumusan Masalah
Berdasarkan latar belakang tersebut maka dirumuskanlah sebuah permasalahan yang ada yaitu :
Bagaimana pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch ?
1.3 Tujuan
Tujuan dari tugas akhir ini adalah membuat aplikasi penipisan citra tulisan dengan menggunakan metoda Hilditch.
(25)
2
Universitas Kristen Maranatha 1.4 Pembatasan Masalah
Pembatasan masalah dalam Tugas Akhir ini meliputi:
Menggunakan program Delphi 7 untuk membuat software penipisan citra.
Citra tulisan yang ditipiskan menggunakan algoritma Hilditch.
Jenis font terbatas pada font yang tidak menggunakan tipografi yang rumit.
Ekstensi file yang dapat digunakan hanya .BMP ( bitmap )
1.5 Sistematika Penulisan
Sistematika penulisan laporan ini disusun menjadi lima bab, yaitu sebagai berikut:
BAB 1 : PENDAHULUAN
Bab ini membahas tentang latar belakang, perumusan masalah, tujuan, pembatasan masalah, dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Bab ini membahas tentang dasar – dasar teori yang digunakan dalam pembuatan dan perancangan tugas akhir ini.
BAB 3 : PERANCANGAN & PEMODELAN
Bab ini membahas tentang perancangan pada pembuatan aplikasi penipisan citra tulisan dengan metoda Hilditch. Mulai dari komponen – komponen yang digunakan dan program instruksi yang digunakan.
BAB 4 : PEMBAHASAN MASALAH
Bab ini membahas tentang analisis dan pengujian keluaran – keluaran dari aplikasi penipisan citra tulisan yang berupa huruf dan angka yang telah ditipiskan.
BAB 5 : KESIMPULAN DAN SARAN
Bab ini membahas tentang kesimpulan yang diperoleh setelah melaksanakan tugas akhir beserta masukan dan saran yang dapat dijadikan pertimbangan untuk dilakukannya perbaikan.
(26)
42
Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang perlu dilakukan untuk perbaikan yang akan dilakukan pada masa yang akan datang.
5.1 Kesimpulan
Kesimpulan yang didapat dari pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch adalah sebagai berikut :
1. Pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch sudah berhasil dibuat
2. Sering terjadi kendala karena citra bitmap yang didapat tidak sempurna
3. Perlu adanya suatu program pendukung seperti noise removal atau sharpning mask agar citra bitmap yang akan diproses dapat ditipiskan dengan sempurna.
5.2 Saran
Saran untuk program aplikasi penipisan citra tulisan dengam
metoda hilditch adalah sebagai berikut :
1. Untuk perkembangan ke depannya aplikasi ini sebaiknya dapat lebih baik lagi.
2. Dalam hal interface tampilannya dapat dibuat lebih menarik lagi. 3. Dapat ditambahkan fitur-fitur tambahan lainnya contohnya seperti
pengkonversian citra .JPEG ke citra .BITMAP, dan juga penambahan noise removal atau sharpning mask
(27)
43
Universitas Kristen Maranatha
DAFTAR PUSTAKA
Benley, Jon Louis, 1999, “Programming Pearls 2ndedition”
C Y Suen, dan P S P Wang. 1994. Thinning Methodologies for Pattern recognition USA: World Scientific Publishing Co.Pte.Ltd.
Jason Rupard. “Skeletonization (part 1)”.
http://www.rupj.net/portfolio/docs/skeletonization.pdf. Diakses tanggal 7 september 2012.
H.E.Burdick, dan Mc Graw Hill. 1997. Morphological Operations.
Http://ppsc.pme.nthu.edu.tw/.../Chapter%209%20Morphological%20operatio ns.pdf. Diakses tanggal 7 september 2012
S, Riyanto dkk. 2005. Step by Step Pengolahan Citra Digital. Yogyakarta: Andi.
Supardi, Y. 2000. Pascal dan Flowchart lewat Praktek. Jakarta:Dinastindo.
http://id.wikipedia.org/wiki/Citra, November 2012
http://id.wikipedia.org/wiki/Borland_Delphi, November 2012
http://en.wikipedia.org/wiki/Digital_image, November 2012
http://en.wikipedia.org/wiki/Image_processing, November 2012
http://shofwanalifauji.blogspot.com/2012/03/citra-digital-dan-citra-analog.html, November 2012
http://jeff.cs.mcgill.ca/~godfried/teaching/projects97/azar/skeleton.html, November 2012
http://www.academypublisher.com/proc/iscsct09/papers/iscsct09p281.pdf, November 2012
(1)
A-15 UndoBitmap.Lebar := Image1.Lebar; UndoBitmap.Tinggi := Image1.Tinggi;
UndoBitmap.Canvas.Draw(0, 0, Image1.Picture.Bitmap); Button2.Enabled := True;
Button1.Enabled := False;
//mengambil array Points dari image SetLength(Points, 0);
for Ly := 0 to Image1.Tinggi -1 do begin Scan := Image1.Picture.Bitmap.ScanLine[Ly]; for Lx := 0 to Image1.Lebar -1 do begin if Scan[Lx].rgbtgreen = 0 then begin SetLength(Points, length(Points)+1 ); Points[High(Points)] := Point(Lx, Ly); end;
end; end;
if Animate1.Checked then
SkeletonizeAnimate(Points, Image1.Lebar, Image1.Tinggi) else Skeletonize(Points, Image1.Lebar, Image1.Tinggi);
Image1.Canvas.FillRect(Image1.ClientRect); for Lx := 0 to High(Points) do begin
(2)
A-16 end;
end;
(3)
1
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
1.1 Latar Belakang
Seiring dengan perkembangan zaman yang semakin pesat, kebutuhan akan efektifitas dan efisiensi sangat diutamakan dalam berbagai bidang. Hal tersebut telah mendorong manusia untuk semakin berkreasi dan berinovasi dalam bidang teknologi untuk dapat melakukan berbagai pekerjaan secara otomatis.
Salah satu contoh pekerjaan tersebut adalah pencatatan plat nomor secara otomatis. Dalam sistem ini terdapat 3 tahapan dalam pengerjaannya yaitu penangkapan citra plat nomor oleh kamera, pemrosesan citra tersebut, dan pembacaan oleh jaringan saraf tiruan.
Namun pada proses pembacaan oleh jaringan saraf tiruan seringkali terjadi kesalahan dalam pembacaannya karena huruf dan angka pada plat nomor tersebut terlalu tebal. Oleh karena itulah dipilih sebuah topik dengan judul PEMBUATAN APLIKASI PENIPISAN CITRA TULISAN DENGAN METODA HILDITCH sebagai topik tugas akhir.
1.2Rumusan Masalah
Berdasarkan latar belakang tersebut maka dirumuskanlah sebuah permasalahan yang ada yaitu :
Bagaimana pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch ?
1.3 Tujuan
Tujuan dari tugas akhir ini adalah membuat aplikasi penipisan citra tulisan dengan menggunakan metoda Hilditch.
(4)
2 1.4 Pembatasan Masalah
Pembatasan masalah dalam Tugas Akhir ini meliputi:
Menggunakan program Delphi 7 untuk membuat software penipisan citra. Citra tulisan yang ditipiskan menggunakan algoritma Hilditch.
Jenis font terbatas pada font yang tidak menggunakan tipografi yang rumit. Ekstensi file yang dapat digunakan hanya .BMP ( bitmap )
1.5 Sistematika Penulisan
Sistematika penulisan laporan ini disusun menjadi lima bab, yaitu sebagai berikut:
BAB 1 : PENDAHULUAN
Bab ini membahas tentang latar belakang, perumusan masalah, tujuan, pembatasan masalah, dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Bab ini membahas tentang dasar – dasar teori yang digunakan dalam pembuatan dan perancangan tugas akhir ini.
BAB 3 : PERANCANGAN & PEMODELAN
Bab ini membahas tentang perancangan pada pembuatan aplikasi penipisan citra tulisan dengan metoda Hilditch. Mulai dari komponen – komponen yang digunakan dan program instruksi yang digunakan.
BAB 4 : PEMBAHASAN MASALAH
Bab ini membahas tentang analisis dan pengujian keluaran – keluaran dari aplikasi penipisan citra tulisan yang berupa huruf dan angka yang telah ditipiskan.
BAB 5 : KESIMPULAN DAN SARAN
Bab ini membahas tentang kesimpulan yang diperoleh setelah melaksanakan tugas akhir beserta masukan dan saran yang dapat dijadikan pertimbangan untuk dilakukannya perbaikan.
(5)
42
Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang perlu dilakukan untuk perbaikan yang akan dilakukan pada masa yang akan datang.
5.1 Kesimpulan
Kesimpulan yang didapat dari pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch adalah sebagai berikut :
1. Pembuatan aplikasi penipisan citra tulisan dengan metoda hilditch sudah berhasil dibuat
2. Sering terjadi kendala karena citra bitmap yang didapat tidak sempurna
3. Perlu adanya suatu program pendukung seperti noise removal atau sharpning mask agar citra bitmap yang akan diproses dapat ditipiskan dengan sempurna.
5.2 Saran
Saran untuk program aplikasi penipisan citra tulisan dengam metoda hilditch adalah sebagai berikut :
1. Untuk perkembangan ke depannya aplikasi ini sebaiknya dapat lebih baik lagi.
2. Dalam hal interface tampilannya dapat dibuat lebih menarik lagi. 3. Dapat ditambahkan fitur-fitur tambahan lainnya contohnya seperti
pengkonversian citra .JPEG ke citra .BITMAP, dan juga penambahan noise removal atau sharpning mask
(6)
43
DAFTAR PUSTAKA
Benley, Jon Louis, 1999, “Programming Pearls 2ndedition”
C Y Suen, dan P S P Wang. 1994. Thinning Methodologies for Pattern recognition USA: World Scientific Publishing Co.Pte.Ltd.
Jason Rupard. “Skeletonization (part 1)”.
http://www.rupj.net/portfolio/docs/skeletonization.pdf. Diakses tanggal 7 september 2012.
H.E.Burdick, dan Mc Graw Hill. 1997. Morphological Operations.
Http://ppsc.pme.nthu.edu.tw/.../Chapter%209%20Morphological%20operatio ns.pdf. Diakses tanggal 7 september 2012
S, Riyanto dkk. 2005. Step by Step Pengolahan Citra Digital. Yogyakarta: Andi.
Supardi, Y. 2000. Pascal dan Flowchart lewat Praktek. Jakarta:Dinastindo. http://id.wikipedia.org/wiki/Citra, November 2012
http://id.wikipedia.org/wiki/Borland_Delphi, November 2012 http://en.wikipedia.org/wiki/Digital_image, November 2012 http://en.wikipedia.org/wiki/Image_processing, November 2012
http://shofwanalifauji.blogspot.com/2012/03/citra-digital-dan-citra-analog.html, November 2012
http://jeff.cs.mcgill.ca/~godfried/teaching/projects97/azar/skeleton.html, November 2012
http://www.academypublisher.com/proc/iscsct09/papers/iscsct09p281.pdf, November 2012