Pembuatan Aplikasi Penipisan Citra Tulisan Dengan Metoda Hilditch.

(1)

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

... 12

Gambar 2.9

A(p1)=2

... 12

Gambar 2.10

A(p1)=3

... 12

Gambar 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