• Tidak ada hasil yang ditemukan

IMPLEMENTASI ALGORITMA EKSTRAKSI CENTERLINE BERBASIS KURVA PRINCIPAL: STUDI KASUS SEGMEN PEMBULUH DARAH RETINA

N/A
N/A
Protected

Academic year: 2019

Membagikan "IMPLEMENTASI ALGORITMA EKSTRAKSI CENTERLINE BERBASIS KURVA PRINCIPAL: STUDI KASUS SEGMEN PEMBULUH DARAH RETINA"

Copied!
153
0
0

Teks penuh

(1)

i

W

;/--n

TUGAS AKHIR – KI141502

IMPLEMENTASI ALGORITMA EKSTRAKSI

CENTERLINE

BERBASIS KURVA

PRINCIPAL

:

STUDI KASUS SEGMEN PEMBULUH DARAH RETINA

FRISKA AJENG RIZKI NRP 5111100135

Dosen Pembimbing I Ahmad Saikhu, S.Si., M.T.

Dosen Pembimbing II

Rully Soelaiman, S.Kom., M.Kom.

JURUSAN TEKNIK INFORMATIKA Fakultas Teknologi Informasi

(2)
(3)

i

TUGAS AKHIR – KI141502

IMPLEMENTASI ALGORITMA EKSTRAKSI

CENTERLINE

BERBASIS KURVA

PRINCIPAL

:

STUDI KASUS SEGMEN PEMBULUH DARAH RETINA

FRISKA AJENG RIZKI NRP 5111100135

Dosen Pembimbing I Ahmad Saikhu, S.Si., M.T.

Dosen Pembimbing II

Rully Soelaiman, S.Kom., M.Kom.

JURUSAN TEKNIK INFORMATIKA Fakultas Teknologi Informasi

(4)

ii

(5)

iii

UNDERGRADUATE THESES – KI141502

IMPLEMENTATION OF CENTERLINE EXTRACTION

ALGORITHM VIA PRINCIPAL CURVE:

CASE STUDY SEGMENT RETINAL VESSELS

FRISKA AJENG RIZKI NRP 5111100135

Supervisor I

Ahmad Saikhu, S.Si., M.T.

Supervisor II

Rully Soelaiman, S.Kom., M.Kom.

DEPARTMENT OF INFORMATICS

(6)

iv

(7)

v

LEMBAR PENGESAHAN

IMPLEMENTASIALGORITMA EKSTRAKSI CENTERLINE BERBASIS KURVA PRINCIPAL:

STUDI KASUS SEGMEN PEMBULUH DARAH RETINA

TUGAS AKHIR

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

pada

Bidang Studi Dasar Terapan Komputasi Program Studi S-1 Jurusan Teknik Informatika

Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember

Oleh

FRISKA AJENG RIZKI NRP : 5111 100 135

Disetujui oleh Dosen Pembimbing Tugas Akhir:

1. Ahmad Saikhu, S.Si., M.T. ... NIP:197107182006041001 (Pembimbing 1) 2. Rully Soelaiman, S.Kom., M.Kom. ...

NIP:197002131994021001 (Pembimbing 2) SURABAYA

(8)

vi

(9)

vii

IMPLEMENTASI ALGORITMA EKSTRAKSI CENTERLINE BERBASIS KURVA PRINCIPAL: STUDI KASUS SEGMEN PEMBULUH DARAH

RETINA

Nama Mahasiswa : FRISKA AJENG RIZKI

NRP : 5111100135

Jurusan : Teknik Informatika FTIF-ITS

Dosen Pembimbing 1 : Ahmad Saikhu, S.Si, M.T.

Dosen Pembimbing 2 : Rully Soelaiman, S.Kom., M.Kom.

Abstrak

Dewasa ini, terdapat banyak jenis penyakit yang disebabkan oleh kerusakan pada pembuluh darah retina, seperti glaukoma, retinopati diabetik, dan age-related macular degeneration (AMD). Diperkirakan sebelumnya oleh WHO sekitar 2.2 juta penderita glaukoma, 1.8 juta penderita AMD, dan 4.1 juta penderita retinopati diabetik penderita berasal dari orang dewasa berusia di atas 40 tahun. Melihat banyaknya jenis penyakit dari kerusakan pembuluh darah retina tersebut, dibutuhkan diagnosis untuk dapat mendeteksi penyakit tersebut. Untuk mempermudah proses diagnosis tersebut, dilakukan ekstraksi segmen ke dalam bentuk centerline pada citra pembuluh darah retina.

(10)

viii

detection, non maxima suppression, classic ridge transversal, dan Laplacian of Gaussian.

Dari uji coba dari tahap segmentasi dari citra pembuluh darah retina, didapatkan tingkat akurasi sebesar 93.54% dengan perbandingan citra ground truth dari basis data DRIVE. Sedangkan pada tahap ekstraksi centerline, didapatkan tingkat akurasi sebesar 97.08%. Dengan demikian dapat disimpulkan bahwa metode pada Tugas akhir ini dapat dijadikan salah satu alternatif algoritma yang dapat digunakan untuk segmentasi biner dan ekstraksi centerline.

(11)

ix

IMPLEMENTATION OF CENTERLINE EXTRACTION ALGORITHM VIA PRINCIPAL CURVE:

CASE STUDY SEGMENT RETINAL VESSELS

Student’s Name : FRISKA AJENG RIZKI

Student’s ID : 5111100135

Department : Teknik Informatika FTIF-ITS First Advisor : Ahmad Saikhu, S.Si, M.T.

Second Advisor : Rully Soelaiman, S.Kom., M.Kom.

Abstract

Nowadays,there are many types of diseases are caused by damage to the blood vessels of the retina, such as glaucoma, diabetic retinopathy, and age-related macular degeneration (AMD). Earlier estimates by WHO that they affect 2.2 million people due to glaucoma, 1.8 million people with AMD, and 4.1 million due to diabetic retinopathy came from adults over age 40. Seeing the severity of damage to the blood vessels of the retina, needed a reliable method to diagnose it. The method is expected to diagnose colon cancer with high accuracy. To simplify the diagnostic, the segments are extracted into a centerline on retinal blood vessels.

(12)

x

From few trials above, this segmentation method obtained an accuracy rate is 93.54% with ground truth comparison from DRIVE database. And from centerline extraction method obtained an accuracy rate is 97.08%. Therefore, it can be used as one of the alternative algorithm then used for binary segmentation and centerline extarction.

(13)

xi

KATA PENGANTAR

Alhamdulillahirabbil’alamin, segala puji dan syukur bagi Allah SWT, yang telah melimpahkan rahmat, dan hidayah-Nya sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul IMPLEMENTASI ALGORITMA EKSTRAKSI CENTERLINE BERBASIS KURVA PRINCIPAL: STUDI KASUS SEGMEN PEMBULUH DARAH RETINA. Pengerjaan Tugas Akhir ini merupakan suatu kesempatan yang berharga bagi penulis. Dengan pengerjaan Tugas Akhir, penulis dapat memperdalam, meningkatkan, serta menerapkan apa yang telah didapatkan penulis selama menempuh perkuliahan di Teknik Informatika ITS.

Terselesaikannya Tugas Akhir ini tidak lepas dari bantuan dan dukungan dari berbagai pihak. Dan dalam kesempatan ini penulis mengucapkan rasa syukur dan terima kasih kepada: 1. Allah SWT, karena atas izin-Nya lah penulis dapat

menyelesaikan Tugas Akhir dengan baik.

2. Nabi Muhammad SAW, yang telah memberikan banyak sekali teladan dan inspirasi bagi penulis.

3. Ayah, Bunda, serta Adik penulis yang senantiasa memberikan banyak semangat, dukungan, doa, dan perhatian kepada penulis. Buku ini penulis persembahkan secara khusus untuk Ayah, Bunda, dan Fathur.

4. Bapak Rully Soelaiman, S.Kom., M.Kom. selaku pembimbing II juga merupakan dosen penulis yang paling gokil dan “Metal”. Terima kasih atas kesabaran bapak terhadap penulis dalam menerima curahan hati, membimbing, membantu, memotivasi, memberikan semangat, serta ajakan kuliner dengan geng IMFC selama menyelesaikan rangkaian Tugas Akhir.

(14)

xii

dan memotivasi penulis sehingga dapat menyelesaikan Tugas Akhir.

6. Bapak Radityo Anggoro, S.Kom., M.Sc. selaku koordinator TA, dan segenap dosen Teknik Informatika yang telah membagikan ilmu kepada penulis.

7. Aditya Putra dan Fiandra Fatharany yang telah bersedia mendengarkan keluh kesah dan curahan dari penulis di setiap waktu, serta selalu menyemangati dan menyempatkan untuk bertemu sehingga penulis dapat termotivasi.

8. Muhammad Januar Fathoni, yang telah bersedia mendengarkan curahan hati, menyemangati, menghibur, dan menemani penulis. Terima kasih selama ini telah bersedia direpotkan dan diganggu hampir setiap hari. 9. Arianto Wibowo, Devanda Tamba, Astris Dyah, Fendy,

dan Peni Sriwahyu yang telah membantu, berbagi ilmu, menjaga kebersamaan, dan memberi motivasi kepada penulis.

10. Teman-teman TC serta semua pihak yang yang telah turut membantu penulis dalam menyelesaikan Tugas Akhir ini.

Surabaya, Juni 2016

(15)

xiii

DAFTAR ISI

LEMBAR PENGESAHAN... v

Abstrak ... vii

Abstract ... ix

KATA PENGANTAR ... xi

DAFTAR ISI ... xiii

DAFTAR GAMBAR ... xvii

DAFTAR TABEL ... xix

DAFTAR KODE SUMBER ... xxv

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Batasan Masalah ... 2

1.4 Tujuan ... 3

1.5 Manfaat ... 3

1.6 Metodologi ... 4

1.7 Sistematika Penulisan Laporan Tugas Akhir ... 5

BAB II TINJAUAN PUSTAKA ... 7

2.1 Citra Retina ... 7

2.2 Praproses... 8

2.2.1 HessianMatrix ... 8

2.2.2 Eigenvalue dan Vektor ... 9

2.2.3 FrangiFilter ... 9

2.2.4 Mean Filter ... 11

2.2.5 Masking ... 12

2.3 Bradley Local Image Thresholding ... 12

2.4 Morfologi ... 13

2.4.1 Morfologi Area Opening ... 14

2.4.2 Morfologi Close ... 15

2.5 Ekstraksi Centerline ... 16

2.5.1 Distance Map ... 16

2.5.2 Deteksi Garis Tepi... 17

2.5.3 Caliber Estimation ... 18

(16)

xiv

BAB III PERANCANGAN ... 21

3.1 Perancangan Pemindaian Retina Mata ... 23

3.2 Praproses dan Segmentasi Pembuluh Darah Retina 23 3.2.1 Program Utama ... 33

3.2.2 Hessian Matrix dan Eigenvalue... 34

3.2.3 Frangi Filter ... 35

3.2.4 Mean Filter ... 38

3.2.5 Masking ... 38

3.2.6 Bradley Thresholding ... 39

3.2.7 Morfologi Area Opening ... 40

3.2.8 Morfologi Close ... 40

3.3 Ekstraksi Centerline Pembuluh Darah Retina ... 40

3.3.1 Program Utama ... 48

3.3.2 Distance Map ... 49

3.3.3 Deteksi Garis Tepi ... 51

3.3.4 Caliber Estimation ... 54

BAB IV IMPLEMENTASI ... 57

4.1 Lingkungan Implementasi ... 57

4.2 Implementasi ... 57

4.2.1 Implementasi Pemindaian Retina Mata ... 57

4.2.2 Implementasi Praproses dan Segmentasi Pembuluh Darah Retina ... 58

4.2.3 Implementasi Ekstraksi Centerline Pembuluh Darah Retina ... 64

BAB V UJI COBA DAN EVALUASI ... 71

5.1 Lingkungan Uji Coba... 71

5.2 Data Uji Coba ... 71

5.3 Skenario dan Evaluasi Pengujian ... 72

5.3.1 Uji Coba dan Evaluasi Skenario 1 ... 72

5.3.2 Uji Coba dan Evaluasi Skenario 2 ... 74

5.3.3 Uji Coba dan Evaluasi Skenario 3 ... 75

5.3.4 Uji Coba dan Evaluasi Skenario 4 ... 76

5.3.5 Uji Coba dan Evaluasi Skenario 5 ... 78

BAB VI KESIMPULAN DAN SARAN ... 81

(17)

xv

(18)

xvi

(19)

xvii

DAFTAR GAMBAR

Gambar 2. 1Citra retina pada basis data DRIVE [3] ... 7

Gambar 2. 2 Citra retina hasil Frangi filter... 10

Gambar 2. 3 Citra hasil mean filter ... 11

Gambar 2. 4 Citra mask dan citra hasil masking ... 12

Gambar 2. 5 Citra hasil Bradley thresholding ... 13

Gambar 2. 6 Citra hasil morfologi area opening ... 14

Gambar 2. 7 Citra hasilmorfologi close ... 15

Gambar 2. 8 Citra hasil Canny edge detection ... 17

Gambar 2. 9 Citra hasil caliber estimation menggunakan LoG ... 19

Gambar 3. 1 Gambaran umum perancangan aplikasi ... 22

Gambar 3. 2 Gambaran umum tahapan praproses dan segmentasi pembuluh darah retina ... 24

Gambar 3. 3 Pseudocode program utama ... 33

Gambar 3. 4 Pseudocode proses Hessian matrix ... 34

Gambar 3. 5 Pseudocode proses penghitungan eigenvalue ... 35

Gambar 3. 6 Pseudocode proses Frangi filter (Bagian Pertama) ... 36

Gambar 3. 7 Pseudocode proses Frangi filter (Bagian Pertama) ... 37

Gambar 3. 8 Pseudocode proses mean filter ... 38

Gambar 3. 9 Pseudocode proses masking (Bagian Pertama) . 38 Gambar 3. 10 Pseudocode proses masking (Bagian Kedua) .. 39

Gambar 3. 11 Pseudocode proses Bradley thresholding ... 39

Gambar 3. 12 Pseudocode proses morfologi area opening ... 40

Gambar 3. 13 Pseudocode proses morfologi close ... 40

Gambar 3. 14 Gambaran umum proses ekstraksi centerline .. 41

Gambar 3. 15 Pseudocode program utama ... 49

Gambar 3. 16 Pseudocode program distance map (bagian pertama)... 50

(20)

xviii

(21)

xix

DAFTAR TABEL

(22)

xx

(23)

xxi

(24)

xxii

(25)

xxiii

(26)

xxiv

(27)

xxv

DAFTAR KODE SUMBER

(28)

xxvi

(29)

1

BAB I

PENDAHULUAN

Pada bab ini dibahas hal-hal yang mendasari Tugas Akhir. Bahasan meliputi latar belakang, rumusan masalah, batasan masalah, tujuan, manfaat, metodologi, dan sistematika laporan Tugas Akhir.

1.1 Latar Belakang

Glaukoma, retinopati diabetik, dan age-related macular degeneration (AMD) merupakan jenis penyakit yang menjadi penyebab utama dari kebutaan di negara Amerika. Diperkirakan sebelumnya oleh WHO sekitar 2.2 juta penderita glaukoma, 1.8 juta penderita AMD, dan 4.1 juta penderita retinopati diabetik penderita berasal dari orang dewasa berusia di atas 40 tahun [1]. Penyakit tersebut secara umum disebabkan oleh kerusakan pada pembuluh darah retina. Melihat banyaknya jenis penyakit dari kerusakan pembuluh darah retina tersebut, dibutuhkan diagnosis untuk dapat mendeteksi penyakit tersebut.

Terdapat beberapa parameter yang dapat digunakan untuk melakukan diagnosis dari penyakit tersebut. Diantaranya adalah perbedaan diameter, panjang, tortuosity, refleksitas, bifurkasi cabang, serta sudut (angle) dari pembuluh darah retina [2]. Untuk mempermudah proses diagnosis terhadap pembuluh darah retina tersebut, dilakukan ekstraksi segmen ke dalam bentuk centerline berbasis pada kurva principal.

(30)

Adapun hasil yang diharapkan adalah tingginya tingkat akurasi ekstraksi centerline dengan basis kurva principal, sehingga metode ini dapat digunakan sebagai metode alternatif untuk kasus ekstraksi dari pembuluh darah retina.

1.2 Rumusan Masalah

Rumusan masalah yang diangkat dalam Tugas Akhir ini adalah sebagai berikut:

1. Memahami konsep Hessian matrix dan komputasi eigenvalue,

Frangi’s vesselness filter, mean filter, serta masking sebagai metode praproses pembuluh darah retina.

2. Memahami konsep Bradley thresholding, morfologi opening area, dan morfologi close sebagai metode segmentasi pembuluh darah retina.

3. Memahami konsep distance map, non-maxima suppression, classic ridge transversal, dan caliber estimation sebagai basis yang digukanakan untuk mengekstraksi centerline pembuluh darah retina.

4. Mengimplementasikan sistem yang dirancang pada pembuluh darah retina.

5. Menyusun uji coba serta melakukan uji coba terhadap citra pembuluh darah retina dengan menggunakan metode ekstraksi centerline berbasis kurva principal.

1.3 Batasan Masalah

Permasalahan yang dibahas dalam Tugas Akhir ini memiliki beberapa batasan, yaitu sebagai berikut:

1. Implementasi dilakukan dengan menggunakan perangkat lunak MATLAB 2013a.

(31)

3. Menggunakan nilai skala [1 10], nilai rasio skala sebesar dua,

6. Menggunakan nilai piksel sebesar 21 pada morfologi opening area, dan nilai piksel sebesar dua dengan structuring elementsquare” berdimensi 2 x 2 pada morfologi close.

7. Menggunakan algoritma Euclidean distance transform pada metode distance mapdist” dan algoritma Canny edge detection diikuti dengan perhitungan distance menggunakan jarak garis singgung lingkaran pada metode distance map

“mine”. 1.4 Tujuan

Adapun beberapa tujuan dari pembuatan Tugas Akhir ini, yakni sebagai berikut:

1. Mengetahui penerapan metode Frangi’s, mean filter, masking, thresholding, dan morfologi untuk melakukan segmentasi terhadap pembuluh darah retina.

2. Mengetahui penerapan ekstraksi centerline berbasis kurva principal dari pembuluh darah retina.

3. Mengimplementasikan rancangan sistem yang dapat melakukan segmentasi pembuluh darah retina dan ekstraksi centerline pembuluh darah retina berbasis kurva principal. 1.5 Manfaat

(32)

1.6 Metodologi

Tahapan-tahapan yang dilakukan dalam pengerjaan Tugas Akhir ini adalah sebagai berikut:

1. Penyusunan proposal Tugas Akhir.

Tahap awal untuk memulai pengerjaan Tugas Akhir adalah penyusunan proposal Tugas Akhir. Proposal Tugas Akhir yang diajukan memiliki gagasan yang sama dengan Tugas Akhir ini, yaitu Implementasi Algoritma Ekstraksi Centerline berbasis Kurva Principal dengan Studi Kasus Segmen Pembuluh Darah Retina.

2. Studi literatur

Pada tahap ini dilakukan pencarian, pengumpulan, pembelajaran dan pemahaman informasi dan literatur yang diperlukan untuk pembuatan Implementasi Algoritma Ekstraksi Centerline berbasis Kurva Principal dengan Studi Kasus Segmen Pembuluh Darah Retina. Informasi dan literatur didapatkan dari literatur buku dan sumber-sumber informasi lain yang berhubungan.

3. Perancangan perangkat lunak

Tahap ini meliputi perancangan sistem berdasarkan studi literatur dan pembelajaran konsep teknologi dari perangkat lunak yang ada. Tahap ini mendefinisikan alur dari implementasi. Langkah-langkah yang dikerjakan juga didefinisikan pada tahap ini. Pada tahapan ini dibuat prototype sistem, yang merupakan rancangan dasar dari sistem yang akan dibuat. Kemudian dilakukan desain suatu sistem dan desain proses-proses yang ada.

4. Implementasi perangkat lunak

(33)

dari tahapan sebelumnya, sehingga menjadi sebuah program yang sesuai dengan yang telah direncanakan.

5. Pengujian dan evaluasi

Pada tahapan ini dilakukan uji coba pada data yang telah dikumpulkan. Pengujian dan evaluasi akan dilakukan dengan menggunakan MATLAB 2013a. Tahapan ini dimaksudkan untuk mengevaluasi kesesuaian data dan program serta mencari masalah yang mungkin timbul dan mengadakan perbaikan jika terdapat kesalahan.

6. Penyusunan buku Tugas Akhir.

Pada tahapan ini disusun buku yang memuat dokumentasi mengenai pembuatan serta hasil dari implementasi perangkat lunak yang telah dibuat.

1.7 Sistematika Penulisan Laporan Tugas Akhir

Buku Tugas Akhir ini bertujuan untuk mendapatkan gambaran dari pengerjaan Tugas Akhir ini. Selain itu, diharapkan dapat berguna untuk pembaca yang tertarik untuk melakukan pengembangan lebih lanjut. Secara garis besar, buku Tugas Akhir terdiri atas beberapa bagian seperti berikut ini:

Bab I Pendahuluan

Bab yang berisi mengenai latar belakang, tujuan, dan manfaat dari pembuatan Tugas Akhir. Selain itu permasalahan, batasan masalah, metodologi yang digunakan, dan sistematika penulisan juga merupakan bagian dari bab ini.

Bab II Dasar Teori

(34)

Bab III Perancangan Perangkat Lunak

Bab ini berisi tentang desain sistem yang disajikan dalam bentuk pseudocode.

Bab IV Implementasi

Bab ini membahas implementasi dari desain yang telah dibuat pada bab sebelumnya. Penjelasan berupa code yang digunakan untuk proses implementasi.

Bab V Uji Coba Dan Evaluasi

Bab ini menjelaskan kemampuan perangkat lunak dengan melakukan pengujian kebenaran dan pengujian kinerja dari sistem yang telah dibuat.

Bab VI Kesimpulan Dan Saran

(35)

7

BAB II

TINJAUAN PUSTAKA

Bab ini berisi penjelasan dasar teori yang berkaitan dengan algoritma yang diajukan pada pengimplementasian program. Penjelasan ini bertujuan untuk memberikan gambaran secara umum terhadap program yang dibuat dan berguna sebagai penunjang dalam pengembangan perangkat lunak.

2.1 Citra Retina

Citra retina diambil dari basis data DRIVE (Digital Retina Image for Vessel Extraction). Basis data ini diperoleh dari program screening diabetes retinopati di Belanda. Populasi dari screening ini terdiri dari 400 subjek dengan rentang usia mulai 25 hingga 90 tahun, kemudian dilakukan pengambilan data secara acak sebanyak 40 citra. Citra DRIVE terdiri atas 33 citra yang tidak menunjukkan tanda diabetes retinopati dan tujuh yang menunjukkan tanda-tanda diabetes retinopati awal ringan [3].

Gambar 2. 1 Citra retina pada basis data DRIVE [3]

(36)

darah retina mata, yang mana pembuluh darah retina dapat diolah untuk dilakukan proses ekstraksi centerline. Untuk dapat melakukan ekstraksi tersebut, diperlukan segmentasi biner terlebih dahulu agar pembuluh darah retina dapat diidentifikasi.

2.2 Praproses

Untuk dapat melakukan rangkaian tahapan praproses, diperlukan deteksi terhadap pembuluh darah retina sebagai proses awal dari tahapan ini. Tujuan dari deteksi ini adalah untuk mengetahui struktur pembuluh darah retina. Terdapat beberapa metode populer berdasarkan Hessian matrix, yang memiliki filter untuk merespon fitur linier lokal, seperti Lorenz’s vesselness, Sato vesselness, dan Frangi’s vesselness [4].

Pada studi kasus pembuluh darah retina ini, dilakukan deteksi dengan menggunakan Frangi’s vesselness filter yang merupakan metode pengembangan oleh Frangi dkk. Untuk menggunakan metode ini, terlebih dahulu dilakukan penghitungan eigenvalue (nilai eigen) yang didapatkan dari Hessian matrix. Setelah itu dilakukan komputasi area citra yang mengandung pembuluh darah retina atau citra yang menonjol lainnya dengan menggunakan Frangi filter [5].

Peningkatan kualitas citra diperlukan oleh citra hasil pembuluh darah retina yang telah terdeteksi. Peningkatan citra dilakukan dengan harapan dapat memudahkan identifikasi segmen dan percabangan pembuluh darah pada citra. Metode mean filter dan proses masking dapat digunakan untuk melakukan peningkatan terhadap citra.

2.2.1 HessianMatrix

(37)

𝐻 = [𝑓𝑓𝑥𝑥 𝑓𝑥𝑦

2.2.2 Eigenvalue dan Vektor

Eigenvalue merupakan suatu nilai karakteristik dari matriks sistem persaman linier (SPL) [6]. Secara umum eigenvalue memiliki persamaan yang didefinisikan pada Persamaan 2.3.

𝐴 𝑥 = 𝜆𝑥 (2.3)

dimana 𝐴 adalah matriks persegi, 𝑥 adalah vektor, dan 𝜆 adalah eigenvalue. Adapun perhitungan eigenvalue pada citra dapat dilakukan dengan memanfaatkan nilai hasil komputasi dari Hessianmatrix seperti yang ditunjukkan pada Persamaan 2.4.

𝜆1= 𝐾 − √𝐾2− 𝑄2, 𝜆2= 𝐾 − √𝐾2− 𝑄2 (2.4) dimana 𝐾 = (𝑓𝑥𝑥+ 𝑓𝑦𝑦)/2 serta 𝑄 = √𝑓𝑥𝑥𝑓𝑦𝑦+ 𝑓𝑥𝑦𝑓𝑦𝑥 dengan 𝑓𝑥𝑥, 𝑓𝑥𝑦, 𝑓𝑦𝑥, dan 𝑓𝑦𝑦 yang merupakan nilai dari Hessian matrix pada Persamaan 2.1.

2.2.3 FrangiFilter

(38)

citra. Pengukuran terhadap citra pembuluh dapat dilakukan dengan melakukan sorting 𝜆1> 𝜆2 dan postulating 𝜆1= 𝜆2< 0. Untuk melakukan proses pengukuran citra pembuluh ini, dapat menggunakan fungsi dari Persamaan 2.5.

𝑣(𝜎) = {exp (− 𝑅𝐵2 0 𝑖𝑓 𝜆1 > 0 2𝛽2) (1 − exp(

−𝑆2

2𝑐2)) 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 (2.5)

dimana 𝜎 merupakan standar deviasi pada skala spasial, serta 𝛽 dan c masing-masing merupakan nilai konstanta koreksi. Untuk dapat menghasilkan citra yang baik, pada 𝛽 diberikan nilai sebesar 0.5 dan c diberikan nilai sebesar 15. Selain itu, juga terdapat 𝑅𝐵 = 𝜆2

𝜆1,

dan 𝑆 = ||𝐻||𝐹 = √𝜆12+ 𝜆22 [4].

Gambar 2. 2 Citra retina hasil Frangi filter

(39)

2.2.4 Mean Filter

Mean filter merupakan filter spasial geser-jendela ( sliding-window) yang menggantikan nilai tengah dari jendela dengan rata-rata dari semual nilai piksel dari jendela dengan ukuran N x N. Ukuran N pada jendela dapat disesuaikan tergantung pada kebutuhan. Secara umum, persamaan dari meanfilter dapat dilihat pada Persamaan 2.6.

ℎ[𝑖, 𝑗] = 𝑀1∑(𝑘,𝑙)∈𝑁𝑓[𝑘, 𝑙] (2.6)

dimana 𝑀 merupakan total jumlah piksel (hasil perkalian) dari jendela 𝑁 [7].

Mean filter digunakan dengan tujuan untuk mereduksi jumlah intensitas variasi antara satu piksel dengan piksel lainnya [8]. Adapun citra hasil dari proses mean filter menggunakan citra hasil proses deteksi sebagai masukan dan nilai jendela dengan ukuran 3 x 3 yang ditunjukkan pada Gambar 2.3.

(40)

2.2.5 Masking

Masking merupakan suatu metode dengan tujuan untuk memisahkan antara objek citra dengan background dari citra. Dengan kata lain, masking memiliki tujuan untuk menghilangkan tepian dari objek citra. Untuk menjalankan proses masking pada citra pembuluh darah retina dapat diawali pembuatan mask dengan melakukan pemberian nilai piksel sebesar nol (hitam) pada bagian background dan satu (putih) pada bagian objek atau foreground dari citra. Setelah itu, dilakukan pengambilan citra foreground dari citra pembuluh darah retina yang hendak dilakukan proses masking, kemudian diletakkan pada mask yang telah dibuat.

Proses masking dapat dikatakan bersifat individu, yakni untuk setiap satu citra mask hanya berlaku pada satu citra pembuluh darah retina. Di samping itu, mask juga bergantung terhadap bentuk citra itu sendiri. Hal ini dikarenakan oleh proses pembuatan mask dilakukan secara manual. Untuk citra mask dan hasil dari masking dapat dilihat pada Gambar 2.4.

Gambar 2. 4 Citra mask dan citra hasil masking

2.3 Bradley Local Image Thresholding

(41)

kecerahan piksel sekitarnya pada jendela berukuran M x N. Dan jika tingkat kecerahannya melebihi dari rata-rata, maka akan diatur sebagai warna putih [9]. Pada hasil citra pada Gambar 2.5, merupakan contoh proses Bradley thresholding dengan jendela berukuran 5 x 5 dan besaran nilai T adalah 25.

Hasil citra biner yang didapatkan dari metode Bradley thresholding ini dapat dikatakan hampir sama baiknya jika dibandingkan dengan metode Sauvola thresholding. Akan tetapi, metode Bradley memiliki kelebihan yakni perhitungannya dua kali lebih cepat dari perhitungan pada Sauvola. Hal ini dilihat pada performa perhitungan mean lokal dan varian dari Sauvola yang memakan waktu lebih banyak daripada Bradley [10]. Selain itu, hasil yang didapatkan oleh Bradley relatif lebih tipis jika dibandingkan dengan Sauvola, yang mana dapat mempermudah proses reduksi dengan morfologi.

Gambar 2. 5 Citra hasil Bradley thresholding

2.4 Morfologi

(42)

sekitarnya. Dengan menentukan ukuran dan bentuk dari ketetanggaan, kita dapat membangun suatu operasi morfologi yang sensitif terhadap suatu bentuk spesifik pada citra masukan [11].

Secara umum terdapat empat jenis morfologi yang populer seperti dilasi, erosi, open, dan close. Pada kasus ini, digunakan morfologi open dengan mengguunakan metode area opening dan morfologi close untuk mengolah citra agar dapat mereduksi cabang palsu (spurs) pada citra pembuluh darah retina.

2.4.1 Morfologi Area Opening

Area opening dapat dikatakan salah satu pengembangan dari morfologi open. Pada area opening dan morfologi open, keduanya memiliki kinerja yang hampir sama, yakni melakukan proses erosi yang diikuti dengan dilasi. Di dalam proses area opening, dilakukan penghapusan terhadap citra biner pada foreground yang memiliki ukuran piksel lebih kecil daripada piksel threshold yang diberikan [12]. Terdapat tiga tahapan yang dilakukan oleh metode ini, yakni:

Gambar 2. 6 Citra hasil morfologi area opening

(43)

2. Menghitung area dari setiap komponen menggunakan fungsi Matlab “regionprops” dengan jenis pengukuran ‘area’.

3. Menghapus objek kecil, yakni dengan menampilkan semua piksel foreground yang memiliki ukuran area lebih besar daripada piksel threshold [13].

Adapun hasil dari area opening pada citra yang ditunjukkan pada Gambar 2.6.

2.4.2 Morfologi Close

Morfologi close merupakan proses morfologi dilasi yang diikuti oleh erosi. Efek yang diberikan dari proses morfologi close yakni mengisi lubang kecil yang ada pada objek citra, menggabungkan objek-objek yang berdekatan, serta melakukan smoothing pada batas dari objek utama tanpa mengubah area objek secara signifikan. Adapun persamaan umum dari morfologi close ditunjukkan pada Persamaan 2.7.

𝐴 ⋅ 𝑆 = (𝐴 ⨁ 𝑆) ⨂ 𝑆 (2.7)

(44)

dimana 𝐴 merupakan citra biner, 𝑆 merupakan structuring element, ⨁ menujukkan dilasi, dan ⨂ menunjukkan erosi [11]. Pada Gambar 2.7 ditunjukkan morfologi close dengan structuring element bentuk persegi (square) berdimensi 2 x 2.

2.5 Ekstraksi Centerline

Ekstraksi centerline merupakan salah satu metode yang dapat digunakan untuk mendapatkan hasil citra biner yang memiliki ketebalan sebesar satu piksel. Adapun beberapa langkah yang dilakukan untuk menghasilkan citra ekstraksi centerline. Citra diinisiasi dengan menghitung distance map pada citra hasil segmentasi biner. Kemudian dilakukan deteksi garis tepi pada citra dengan menggunakan deteksi garis tepi. Terdapat tiga subbab yang menjelaskan tahapan ini, yakni Canny edge detection, non maxima suppression, dan classic ridge transversal. Setelah itu, dilakukan penghitungan estimasi caliber dengan menggunakan caliber estimation [14].

2.5.1 Distance Map

Distance map atau pemetaan jarak merupakan teknik untuk menghitung jarak pada masing-masing piksel dari objek terdekat sekitanya. Pada teknik ini dilakukan perhitungan jarak yang kemudian akan digunakan untuk mendeteksi garis tepi pada citra pembuluh darah retina. Setelah distance map dihasilkan, maka setiap arah jalur (path) dapat ditentukan dengan mengurutkan secara descending melalui gradiendari distance map.

(45)

2.5.2 Deteksi Garis Tepi

Deteksi garis tepi merupakan operasi yang dilakukan untuk mendeteksi garis tepi (edges) pada objek citra. Dengan kata lain, deteksi tepi ini dilakukan dengan tujuan mengubah citra biner dua dimensi menjadi bentuk kurva. Terdapat tiga tahapan yang terhimpun oleh tahapan ini, yakni Canny edge detection, non maxima supression, dan classic ridge transversal.

2.5.2.1 Canny Edge Detection

Canny edge detection merupakan salah satu metode yang dapat digunakan untuk mendeteksi garis tepi dari suatu citra. Metode ini secara efisien dapat diaproksimasi dengan turunan pertama dari fungsi Gaussian pada kasus satu dimensi. Secara umum metode ini bekerja diawali dengan melakukan penghalusan terhadap citra untuk mengurangi dampak kebisingan (noise) terhadap pendeteksian garis tepi.

Gambar 2. 8 Citra hasil Canny edge detection

(46)

Setelah itu dilakukan klasifikasi akhir dengan menggunakan hysteresis thresholding [15]. Adapun hasil dari metode ini dapat dilihat pada Gambar 2.8.

2.5.2.2 Non Maxima Suppression dan Classic Ridge Transversal

Non maxima suppression merupakan metode yang sering digunakan bersamaan dengan algoritma deteksi garis tepi. Pada metode ini, non maxima suppression digunakan untuk menghitung nilai local maxima dari citra. Dengan kata lain, pada metode ini dilakukan pemindaian terhadap citra pada sepanjang arah gradien dari citra tersebut, dan jika piksel tersebut bukan merupakan bagian dari local maxima maka akan diatur menjadi nol.

Sedangkan classic ridge transversal digunakan untuk menghubungkan nilai local maxima yang telah didapatkan dari proses non maxima suppression. Classic ridge transversal akan berhenti apabila telah menemukan nilai centerline lainnya atau melewati area atau wilayah yang sebelumnya telah dilakukan segmentasi [14].

2.5.3 Caliber Estimation

Caliber estimation merupakan metode yang dapat digunakan untuk melakukan estimasi kalibrasi dari segmen citra. Laplacian of Gaussian (LoG) merupakan salah satu filter yang dapat digunakan untuk mengestimasi kalibrasi tersebut. LoG merupakan algoritma gabungan dari Laplacian dengan filter Gaussian. Secara singkat, cara kerja filter LoG diawali dengan penghalusan citra dengan menggunakan filter Gaussian, yang kemudian dilanjutkan dengan pendeteksian garis tepi dengan menggunakan Laplacian. LoG didefinisikan pada Persamaan 2.8.

𝐿𝑜𝐺(𝑥, 𝑦) = −𝜋𝜎14[1 −

𝑥2+ 𝑦2

2𝜎2 ] 𝑒−

𝑥2+ 𝑦2

(47)

dimana 𝜎 merupakan nilai standar deviasi dari Gaussian [16]. Adapun hasil dari citra yang telah dilakukan proses caliber estimation yakni seperti pada Gambar 2.9.

Gambar 2. 9 Citra hasil caliber estimation menggunakan LoG

2.5.4 Error Rate

Error rate atau nilai error merupakan salah satu metode yang dapat digunakan untuk melakukan evaluasi. Error rate diperoleh dengan membandingkan jumlah piksel pada citra yang merupakan false positive dan false negative dengan jumlah semua piksel dari suatu citra. Adapun persamaan dari nilai error adalah sebagai berikut:

𝑒𝑟𝑟𝑜𝑟 =𝑇𝑃+𝐹𝑃+𝐹𝑁+𝑇𝑁𝐹𝑃+𝐹𝑁 (2.9)

(48)

𝑎𝑘𝑢𝑟𝑎𝑠𝑖 =𝑇𝑃+𝐹𝑃+𝐹𝑁+𝑇𝑁𝑇𝑃+𝑇𝑁 (2.10)

dimana FP merupakan nilai false positive pada piksel citra, FN merupakan nilai false negative pada piksel citra, TP merupakan nilai true positive pada piksel citra, dan TN merupakan nilai true negative pada piksel citra.

(49)

21

BAB III

PERANCANGAN

Pada bab ini akan dijelaskan perancangan perangkat lunak ekstraksi pembuluh darah retina. Perancangan akan dibagi menjadi dua proses utama, yaitu:

1. Pemindaian retina mata.

2. Praproses dan segmentasi pembuluh darah retina. 3. Ekstraksi centerline pembuluh darah retina.

Di dalam masing-masing proses utama akan dibagi menjadi proses-proses kecil yang terlibat di dalamnya. Pada proses pemindaian retina mata, dilakukan dengan memindaikan retina mata pada manusia ke dalam bentuk digital. Di dalam proses praproses dan segmentasi pada citra retina, terdapat empat subproses pada tahapan praproses, yakni Hessian matriks dan komputasi eigenvalue, Frangi filter, mean filter, dan masking. Sedangkan tiga subproses pada tahapan segmentasi terdiri dari Bradley thresholding, morfologi opening area, dan morfologi close. Dan pada ekstraksi centerline pembuluh darah retina, terdapat empat subproses yang terhimpun, diantaranya yaitu distance map, non maxima suppression, classic ridge transversal, dan caliber estimation. Gambar 3.1 dijelaskan mengenai gambaran umum proses dari bab ini.

(50)
(51)

3.1 Perancangan Pemindaian Retina Mata

Pemindaian pada retina mata merupakan proses awal dari aplilkasi ini. Pemindaian dilakukan dengan memindaikan retina pada manusia atau objek nyata menjadi retina berbentuk digital, yang selanjutnya akan disebut sebagai citra. Pada aplikasi, citra retina tidak didapatkan dari hasil pemindaian secara langsung, melainkan berasal dari basis data yang telah menyimpan citra vaskular retina. Aplikasi ini menggunakan basis data DRIVE sebagai objek studi kasus seperti yang telah disebutkan pada subbab 2.1. Contoh dari citra retina mata dapat dilihat pada citra awal di dalam Gambar 3.1.

3.2 Praproses dan Segmentasi Pembuluh Darah Retina

Praproses dan segmentasi pada citra merupakan salah satu proses utama yang ada di dalam aplikasi ini. Terdapat empat subproses di dalam tahapan praproses. Sedangkan pada tahapan segmentasi, terdapat tiga subproses di dalamnya. Adapun bagan proses utama ini dapat dilihat pada Gambar 3.2.

(52)

Sedangkan pada tahap segmentasi, dilakukan proses thresholding dengan menggunakan Bradley thresholding, kemudian dilanjutkan dengan proses morfologi area opening dan morfologi close sehingga dihasilkan citra yang lebih bersih dari cabang palsu (spurs) dan menyisakan hanya bagian pembuluh darah retina.

Untuk penjelasan lebih detil mengenai tahapan praproses dan segmentasi biner pada citra akan dijelaskan dalam bentuk pseudocode. Pseudocode proses utama ini terdiri dari satu program utama yang memliki tujuan untuk memanggil beberapa program kecil lainnya yang berisi proses-proses yang lebih kecil untuk dijalankan. Pada Tabel 3.1 hingga Tabel 3.6 akan dijelaskan variabel-variabel yang akan digunakan pada pseudocode. Sedangkan pada Tabel 3.7 hingga Tabel 3.10 akan dijelaskan fungsi-fungsi yang akan dipakai di dalam pseudocode.

(53)

Tabel 3. 1 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Pertama)

No. Nama

Variabel Tipe Penjelasan

1. img uint8

Citra asli retina dalam ruang warna RGB dengan ukuran 584 x 565 piksel.

2. Im double

Citra asli retina yang telah diubah ke dalam tipe double dengan ukuran 584 x 565 piksel.

3. input double

Berupa struct berisi atribut nilai default yang diberlakukan untuk dapat menjalankan fungsi Frangi filter.

5. frangiv double

Citra biner yang merupakan hasil dari proses deteksi (Frangi filter) dengan ukuran 584 x 565 piksel.

6. sigmas double

Nilai skala yang digunakan untuk mengatur range dari sigma yang digunakan pada Frangi.

7. beta double

Nilai konstanta koreksi 𝛽 pada fungsi Frangi filter yang telah dikuadratkan dan dikalikan dua.

8. c double

Nilai konstanta koreksi 𝑐 pada fungsi Frangi filter yang telah dikuadratkan dan dikalikan dua.

9. ALLfilter

ed double

(54)

Tabel 3. 2 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Kedua)

No. Nama

Variabel Tipe Penjelasan

8. c double

Nilai konstanta koreksi 𝑐 pada fungsi Frangi filter yang telah dikuadratkan dan dikalikan dua.

9. ALLfilter

ed double

Matriks yang digunakan sebagai penyimpanan citra hasil filter untuk Ifiltered.

10. ALLangles double

Matriks yang digunakan sebagai penyimpanan citra hasil filter untuk angles.

11. Dxx double

Berupa nilai deviasi kedua pada xx dari Hessian matrix yang digunakan untuk mendapatkan eigenvalue.

12. Dxy double

Berupa nilai deviasi kedua pada xy dari Hessian matrix yang digunakan untuk mendapatkan eigenvalue.

13. Dyy double

Berupa nilai deviasi kedua pada yy dari Hessian matrix yang digunakan untuk mendapatkan eigenvalue.

14. angles double Berupa nilai hasil komputasi

direksi dari vektor eigen minor.

15. Rb double

Nilai maksimum dari hasil kuadrat yang dilakukan operasi pembagian antar eigenvalue.

16. S2 double

Nilai maksimum dari hasil penjumlahan antar eigenvalue yang telah dikuadratkan.

17. Ifiltered double Nilai maksimum dari hasil

(55)

Tabel 3. 3 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Ketiga)

No. Nama

Variabel Tipe Penjelasan

18. outIm double untuk menghitung nilai deviasi kedua pada xx.

22. DGaussxy double

Berupa filter yang digunakan untuk menghitung nilai deviasi kedua pada xy.

23. DGaussyy double

Berupa filter yang digunakan untuk menghitung nilai deviasi kedua pada yy.

24. tmp double Nilai untuk menghitung nilai vektor eigen J.

25. v2x double Nilai untuk menghitung nilai vektor eigen v1.

26. v2y double Nilai untuk menghitung nilai vektor eigen v2.

27. mag double Normalisasi dari nilai vektor eigen pada v2x dan v2y.

28. v1x double

(56)

Tabel 3. 4 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Keempat)

No. Nama

Variabel Tipe Penjelasan

29. v1y double

Variabel sementara untuk menyimpan nilai ortogonal dari vektor eigen v2y.

30. mu1 double Variabel sementara untuk menyimpan eigenvalue dari 𝜆2. 31. mu2 double Variabel sementara untuk

menyimpan eigenvalue dari 𝜆1.

32. check double Variabel untuk mengurutkan

eigenvalue dengan 𝜆1< 𝜆2. 33. Lambda1 double Berupa eigenvalue dari 𝜆2. 34. Lambda2 double Berupa eigenvalue dari 𝜆1. 35. Ix double Nilai ortogonal dari vektor eigen

v2x.

36. Iy double Nilai ortogonal dari vektor eigen v2y.

37. img2 uint8

Citra biner hasil akhir dari proses deteksi pembuluh darah retina dengan ukuran 584 x 565 piksel.

38. mean double

Variabel sementara yang digunakan untuk menyimpan nilai dari fungsi mean filter.

39. meanf uint8

Citra mask yang akan digunakan untuk melakukan proses masking.

41. rows double Nilai rows (baris) yang

didapatkan dari citra.

42. columns double Nilai columns (kolom) yang

(57)

Tabel 3. 5 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Kelima)

No. Nama

Variabel Tipe Penjelasan

43. numberOfC

olorBands double

Nilai warna yang didapatkan dari citra.

44. img3 uint8

Citra biner pembuluh darah yang digunakan untuk proses masking dengan ukuran 584 x 565 piksel.

45. mask uint8 Citra mask dengan ukuran 584 x Bradley thresholding dengan ukuran 584 x 565 piksel.

48. image uint8

Citra masukan yang digunakan untuk melakukan proses suatu fungsi.

49. varargin cell

Variabel masukan dalam suatu fungsi yang digunakan untuk menerima sejumlah argumen masukan.

50. numvararg

s int

Jumlah panjang (length) variabel yang didapatkan dari

varargin.

51. optargs cell

Nilai yang akan digunakan pada fungsi apabila nilai argumen yang dimasukan pada fungsi tersebut tidak memiliki jumlah panjang (length) yang sama.

52. window int

(58)

Tabel 3. 6 Daftar Variabel yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Keenam)

No. Nama

Variabel Tipe Penjelasan

53. T int

Nilai persentase tingkat kecerahan pada citra yang akan dilakukan proses fungsi bradley.

54. padding char

Menunjukkan padding yang akan digunakan untuk filter pada suatu fungsi.

55. avrg double

Variabel sementara yang digunakan untuk menyimpan nilai dari fungsi average filter.

56. output uint8 Citra keluaran yang dihasilkan

dari proses suatu fungsi.

57. mo logical

Citra biner hasil dari proses morfologi area opening dengan ukuran 584 x 565 piksel.

58. se strel

Variabel sementara yang digunakan untuk menyimpan nilai dari fungsi structuring element.

59. mc logical

Citra biner hasil dari proses morfologi close dengan ukuran 584 x 565 piksel.

Tabel 3. 7 Daftar Fungsi yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Pertama) No. Nama Fungsi Penjelasan

1. double Fungsi untuk mengubah suatu nilai

ke dalam presisi double.

2. colormap

(59)

Tabel 3. 8 Daftar Fungsi yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Kedua) No. Nama Fungsi Penjelasan

3. struct

Fungsi untuk membuat atau melakukan konversi data ke dalam struktur array.

4. FrangiFilter2D Fungsi untuk menjalankan proses

Frangi filter.

5. sort Fungsi untuk mengurutkan nilai

dengan jumlah dua atau lebih.

6. zeros Fungsi untuk membuat matriks yang

terdiri dari angka nol.

7. disp Fungsi untuk menampilkan suatu

array atau ekspresi.

8. Hessian2D

Fungsi untuk mendapatkan hasil deriviasi orde kedua dari Hessian matrix.

9. eig2image Fungsi untuk memperoleh

eigenvalue dari citra dua dimensi.

10. atan2

Fungsi untuk menghitung kuadran empat inverse tangen dari suatu elemen.

11. length Fungsi untuk menghitung panjang

suatu vektor. 12. max

Fungsi untuk menemukan nilai maksimum dari kumpulan nilai yang ada.

13. reshape

Fungsi untuk mengembalikan nilai array dengan elemen yang sama dan dilakukan pengembalian bentuk dalam ukuran tertentu.

14. ones Fungsi untuk membuat matriks yang

(60)

Tabel 3. 9 Daftar Fungsi yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Ketiga) No. Nama Fungsi Penjelasan

15. ndgrid

Fungsi untuk melakukan replikasi terhadap vektor jaringan (grid vector) dengan menghasilkan koordinat array.

16. imfilter Fungsi untuk melakukan n-dimensi

filter pada suatu citra.

17. abs Fungsi untuk mendapatkan nilai

absolut dari suatu elemen.

18. im2uint8 Fungsi untuk mengubah citra ke

dalam presisi uint8.

19. fspecial Fungsi untuk menghasilkan filter

dua dimensi dari tipe tertentu.

20. masking Fungsi untuk menjalankan proses

Masking.

21. size

Fungsi untuk mendapatkan nilai ukuran (size) setiap dimensi dari suatu array.

22. bsxfun

Fungsi untuk menghasilkan operasi biner element-by-element untuk dua array dengan mengaktifkan ekspansi tunggal.

23. bradley Fungsi untuk menjalankan proses

Bradley thresholding.

24. averagefilter Fungsi untuk menjalankan proses

average filter.

25. true Fungsi untuk mengonversikan suatu

nilai ke dalam array logika ones.

26. bwareaopen

Fungsi untuk menghilangkan atau menghapus piksel kecil dari citra biner.

27. strel Fungsi untuk membuat structuring

(61)

Tabel 3. 10 Daftar Fungsi yang Digunakan Pada Pseudocode Praproses dan Segmentasi Pembuluh Darah Retina (Bagian Keempat) No. Nama Fungsi Penjelasan

28. imclose Fungsi untuk menjalankan proses

morfologi close. 3.2.1 Program Utama

Program utama adalah program yang digunakan untuk memanggil fungsi-fungsi lain sehingga dapat menjalankan program secara keseluruhan. Pemisahan fungsi-fungsi dari algoritma dilakukan dengan tujuan untuk mempermudah di dalam pengecekan program pada setiap prosesnya. Gambar 3.3 menunjukkan pseudocode program utama dari tahapan deteksi pembuluh darah retina.

Masukan Citra retina dalam ruang warna

RGB (variabel img)

Keluaran Citra hasil akhir deteksi

pembuluh darah retina

(variabel frangiv)

options  struct('FrangiScaleRange',[1 10],

'FrangiScaleRatio',2,'FrangiBetaOne',0.5, 'FrangiBetaTwo',15,'verbose',true,'BlackWhi te',true)

frangiv  FrangiFilter2D(input,options)

img2  im2uint8(frangiv)

meanf  meanfilter(img2)

maskedImage  masking(meanf, circleImage)

bt  bradley(maskedImage, [5 5], 25)

mo  bwareaopen(bt, 21)

se  strel('square', 2)

mc  imclose(mo, se)

(62)

3.2.2 Hessian Matrix dan Eigenvalue

Program Hessian matrix merupakan program yang digunakan untuk mendapatkan nilai matriks dari Hessian matrix yang telah dijelaskan pada subbab 2.2.1. Pseudocode dari Hessian matrix ditunjukkan pada Gambar 3.4.

Masukan Citra retina dalam ruang warna

RGB (variabel Im), nilai skala sigma (variabel sigmas)

Keluaran Nilai deviasi orde kedua

Hessian Matrix(variabel Dxx, Dxy, Dyy)

ndgrid(-round(3*Sigma):round(3*Sigma))

DGaussxx  1/(2*pi*Sigma^4)

* (X.^2/Sigma^2 - 1)

.* exp(-(X.^2 + Y.^2)/(2*Sigma^2))

DGaussxy  1/(2*pi*Sigma^6) * (X .* Y)

.* exp(-(X.^2 + Y.^2)/(2*Sigma^2))

DGaussyy  DGaussxx'

Dxx  imfilter(Im, DGaussxx, 'conv')

Dxy  imfilter(Im, DGaussxy, 'conv')

Dyy  imfilter(Im, DGaussyy, 'conv')

Gambar 3. 4Pseudocode proses Hessian matrix

(63)

Masukan Nilai deviasi orde kedua dari Hessian matrix (variabel Dxx, Dxy, dan Dyy)

Keluaran Nilai eigenvalue (variabel

Lambda1 dan Lambda2), Nilai vektor (variabel Ix dan Iy) 1.

Lambda1(check)  mu2(check)

Lambda2  mu2

Lambda2(check)  mu1(check)

Ix  v1x

Ix(check)  v2x(check)

Iy  v1y

Iy(check)  v2y(check)

Gambar 3. 5Pseudocode proses penghitungan eigenvalue

3.2.3 Frangi Filter

(64)

Masukan Citra retina dalam ruang warna

hijau (variabel masukkan),

nilai yang diberlakukan pada

frangi filter (variabel

options)

Keluaran Citra hasil peningkatan

(variabel outIm), matriks

skala intensitas maksimal

(variabel whatScale), matriks

direksi piksel (variabel

Direction)

sigmas  options.FrangiScaleRange(1) :

options.FrangiScaleRatio : options.FrangiScaleRange(2)

sigmas  sort(sigmas, 'ascend')

beta  2*options.FrangiBetaOne^2

c  2*options.FrangiBetaTwo^2

ALLfiltered  zeros([size(Im)

length(sigmas)])

ALLangles  zeros([size(Im)

length(sigmas)])

for i1 to length(sigmas)

if(options.verbose)

disp(['Current Frangi Filter Sigma:' num2str(sigmas(i))])

(65)

20.

if length(sigmas) > 1

[outIm,whatScale] 

outIm  reshape(ALLfiltered,size(Im))

if(nargout > 1)

(66)

3.2.4 Mean Filter

Program mean filter merupakan program yang digunakan untuk mendapatkan citra yang ditingkatkan dengan menggunakan mean filter, yang mana telah dijelaskan pada subbab 2.3.1. Pseudocode dari mean filter ditunjukkan pada Gambar 3.8.

Masukan Citra retina hasil proses

Frangi filter (variabel

frangiv)

img2  im2uint8(frangiv)

mean  fspecial('average', [3 3])

meanf  imfilter(img2, mean)

Gambar 3. 8 Pseudocode proses mean filter

3.2.5 Masking

Program masking merupakan program yang digunakan untuk mendapatkan citra hasil penghapusan tepi citra pembuluh darah retina dengan menggunakan mask yang telah dijelaskan pada subbab 2.3.2. Pseudocode dari masking ditunjukkan pada Gambar 3.9 dan Gambar 3.10.

Masukan Citra retina hasil proses mean

filter (variabel meanf), citra

mask retina (variabel

circleImage)

Keluaran Citra hasil proses

Masking(variabel maskedImage) 1.

2. 3. 4.

[rows, columns, numberOfColorBands]

 size(meanf)

if numberOfColorBands == 1

maskedImage  meanf

maskedImage(~circleImage)  0

(67)

5. 6.

7.

else

maskedImage  bsxfun(@times, meanf,

cast(circleImage,class(meanf)))

end

Gambar 3. 10 Pseudocode proses masking (Bagian Kedua)

3.2.6 Bradley Thresholding

Program Bradley thresholding merupakan program yang digunakan untuk mendapatkan citra hasil proses thresholding dengan menggunakan Bradley local image thresholding yang telah dijelaskan pada subbab 2.4. Pseudocode dari Bradley thresholding ditunjukkan pada Gambar 3.11.

Masukan Citra retina hasil proses

Masking (variabel

maskedImage), nilai window dan kecerahan ([5 5] dan 25)

Keluaran Citra hasil thresholding

dengan menggunakan Bradley

Thresholding (variabel bt) 1.

numvarargs  length(varargin)

if numvarargs > 3

error('myfuns:somefun2Alt:TooManyInputs', 'Possible parameters are: (image, [m n], T, padding)')

end

optargs  {[15 15] 10 'replicate'

optargs(1:numvarargs)  varargin

[window, T, padding]  optargs{:}

image  double(image)

avrg  averagefilter(image, window,

padding)

output  true(size(image))

output(image <= avrg*(1-T/100))  0

bt  output

(68)

3.2.7 Morfologi Area Opening

Program area opening merupakan program yang digunakan untuk menghasilkan citra dengan penghapusan piksel-piksel yang kecil dengan menggunakan Morfologi area opening yang telah dijelaskan pada subbab 2.5.1. Pseudocode dari Bradley thresholding ditunjukkan pada Gambar 3.12.

Masukan Citra retina hasil proses

thresholding dengan Bradley thresholding (variabel bt)

Keluaran Citra hasil morfologi area

opening (variabel mo)

1. mo  bwareaopen(bt, 21)

Gambar 3. 12 Pseudocode proses morfologi area opening

3.2.8 Morfologi Close

Program morfologi close merupakan program yang digunakan untuk mendapatkan citra hasil proses morfologi close yang telah dijelaskan pada subbab 2.5.2. Pseudocode dari morfologi close ditunjukkan pada Gambar 3.13.

Masukan Citra hasil Morfologi Area

opening (variabel mo)

Keluaran Citra hasil Morfologi Close

(variabel mc) 1.

2.

se  strel(square)

mc  imclose(mo, se)

Gambar 3. 13 Pseudocode proses morfologi close

3.3 Ekstraksi Centerline Pembuluh Darah Retina

(69)

dalam subproses. Diantaranya adalah distance map, non maxima suppression, classic ridge transversal, dan caliber estimation. Adapun proses ekstraksi ini dijelaskan dalam Gambar 3.14.

Untuk penjelasan lebih detil mengenai proses ekstraksi centerline pada citra akan dijelaskan dalam bentuk pseudocode. Pseudocode proses utama ini terdiri dari satu program utama yang memliki tujuan untuk memanggil beberapa program kecil lainnya yang berisi proses-proses yang lebih kecil untuk dijalankan. Pada Tabel 3.11 hingga Tabel 3.17 akan dijelaskan variabel-variabel yang akan digunakan pada pseudocode. Sedangkan pada Tabel 3.17 hingga Tabel 3.19 akan dijelaskan fungsi-fungsi yang akan dipakai di dalam pseudocode.

Tabel 3. 11 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Pertama)

No. Nama

Variabel Tipe Penjelasan

1. mc logical Citra hasil segmentasi biner dengan ukuran 584 x 565 piksel.

(70)

Tabel 3. 12 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Kedua)

No. Nama

Variabel Tipe Penjelasan

2. b double

Nilai yang berisi label dari setiap percabangan dari citra pembuluh darah retina.

3. regs struct Nilai region properties ‘Area’

yang diperoleh dari variabelb.

4. sortedReg

s double

Nilai region yang telah dilakukan pengurutan (sort).

5. iSortedRe

gs double

Nilai indeks dari region yang telah dilakukan pengurutan (sort)

6. seg logical

Variabel yang berisi nilai yang terdapat di dalam indeks ke-1 dari region properties yang telah diurutkan.

7. width double Citra hasil ekstraksi centerline

dengan ukuran 584 x 565 piksel.

8. invw logical

Citra hasil ekstraksi centerline yang telah dilakukan invert dengan ukuran 584 x 565 piksel.

9. Final uint8

Citra hasil ekstraksi centerline yang telah dilakukan overlay terhadap citraasli dengan ukuran 584 x 565 piksel.

10. r double Nilai rows (baris) yang

didapatkan dari citra.

11. c double Nilai columns (kolom) yang didapatkan dari citra.

12. b double Nilai warna yang didapatkan dari citra.

13. valleyTyp

e struct

(71)

Tabel 3. 13 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Ketiga)

No. Nama

Variabel Tipe Penjelasan

14. caliber logical

Bernilai benar apabila proses map distance dan deteksi garis tepi garis tepi dengan menggunakan ‘Canny’.

Variabel sementara untuk menyimpan nilai koordinat x subscript yang didapatkan dari indeks pada indexMAP.

20. sy double

Variabel sementara untuk menyimpan nilai koordinat y subscript yang didapatkan dari indeks pada indexMAP.

21. sxe double

Variabel sementara untuk menyimpan nilai koordinat x subscript yang didapatkan dari indeks pada edgeMAP.

22. sye double

(72)

Tabel 3. 14 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Keempat)

No. Nama

Variabel Tipe Penjelasan

23. radiusRan

ge double

Array berisi nilai yang sejumlah dengan jumlah radius dan diurutkan secara descending.

24. nor double

Variabel yang menyimpan nilai normalisasi dari jarak (distance) pada map.

25. i double Titik koordinat dari suatu piksel. 26. x double Nilai indeks sx pada koordinat i. 27. y double Nilai indeks sy pada koordinat i. 28. dx double Variabel yang menyimpan nilai jarak (distance) pada koordinat x.

29. dy double

Variabel yang menyimpan nilai jarak (distance) pada koordinat y.

30. dist double

Variabel yang digunakan untuk menghitung nilai akar dari kuadrat nilai dx dan dy yang telah dijumlahkan.

31. count double

Berupa variabel yang menyimpan jumlah incremental dari distance map.

32. radius double Nilai radius dari dimiliki oleh

fungsi ekstraksi centerline.

33. temp double

Variabel yang digunakan untuk menyimpan nilai sementara pada suatu fungsi.

(73)

Tabel 3. 15 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Kelima)

No. Nama

Variabel Tipe Penjelasan

35. thr double

Variabel yang menyimpan nilai threshold pada fungsi ekstraksi centerline. minimum dari variabel nei.

43. in double

Variabel menyimpan nilai indeks dari nilai minimal pada variabel nei.

44. dx1 double

Variabel yang menyimpan nilai jarak (distance) pada satu arah (direction) dari koordinat x.

45. dy1 double

Variabel yang menyimpan nilai jarak (distance) pada satu arah (direction) dari koordinat y. 46. dx2 double Variabel yang menyimpan nilai

(74)

Tabel 3. 16 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Keenam)

No. Nama

Variabel Tipe Penjelasan

48. run double

Bernilai tidak benar apabila nilai koordinat x, y, dan minima sama dengan satu, serta nilai map sama dengan nol.

49. clc double

Variabel yang digunakan untuk mencari titik centerline selanjutnya.

50. mat double Nilai yang didapatkan dari fungsi avoidN.

51. FINAL double

Citra hasil proses CL yang telah dilakukan proses skeleton dengan ukuran 584 x 565 piksel.

52. sxM double

Variabel sementara untuk menyimpan nilai koordinat x subscript yang didapatkan dari indeks pada indexMAP.

53. syM double

Variabel sementara untuk menyimpan nilai koordinat y subscript yang didapatkan dari indeks pada indexMAP.

54. grange double Berisi nilai dengan rentang

(range) dari Gaussian.

55. ngauss double Variabel berisi jumlah (length) dari variabel grange.

56. G double

Variabel sementara yang digunakan untuk melakukan proses classic ridge transversal.

57. width double

(75)

Tabel 3. 17 Daftar Variabel yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Ketujuh)

No. Nama

Variabel Tipe Penjelasan

58. ind double

Variabel menyimpan nilai indeks dari nilai minimal yang telah dilakukan proses fungsi squeeze pada variabel G.

Tabel 3. 18 Daftar Fungsi yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Pertama)

No. Nama Fungsi Penjelasan

1. bwlabel

Fungsi untuk memberi label pada komponen keterhubungan dari citra biner dalam dua dimensi.

2. regionprops Fungsi untuk mengukur suatu

properti dari wilayah pada citra.

3. sort Fungsi untuk mengurutkan nilai

dengan jumlah dua atau lebih.

4. extract_center

line

Fungsi untuk melakukan ekstraksi centerline pada citra biner.

5. edge Fungsi untuk mencari garis tepi pada

intesitas dari suatu citra.

6. find Fungsi untuk mencari indeks dan

nilai-nilai dari elemen non-zero.

7. ind2sub

Fungsi untuk melakukan subscript dari indeks linier dengan menentukan nilai subscript setara dengan indeks tunggal ke dalam array.

8. zeros Fungsi untuk membuat matriks yang

terdiri dari angka nol.

9. size

(76)

Tabel 3. 19 Daftar Fungsi yang Digunakan Pada Pseudocode Ekstraksi Centerline Pembuluh Darah Retina (Bagian Kedua)

No. Nama Fungsi Penjelasan

10. length Fungsi untuk menghitung panjang

suatu vektor.

11. repmat

Fungsi untuk melakukan salinan secara berulang pada suatu array atau matriks.

12. sum

Fungsi untuk menjumlahkan suatu elemen pada array dimensi pertama yang memiliki ukuran tidak sama dengan satu.

13. max

Fungsi untuk menemukan nilai maksimum dari kumpulan nilai yang ada.

14. imregionalmin Fungsi untuk melakukan identifikasi

regional minima dari suatu citra.

15. bwmorph Fungsi untuk melakukan proses

operasi morfologi pada citra biner.

16. avoidN

Fungsi untuk menghitung jarak dengan titik dxR dan dyR sebagai titik pusat.

17. imfilter Fungsi untuk melakukan n-dimensi

filter pada suatu citra. 18. min

Fungsi untuk menemukan nilai minimum dari kumpulan nilai yang ada.

19. squeeze Fungsi untuk menghapus dimensi

tunggal. 3.3.1 Program Utama

Gambar

Gambar 2. 1  Citra retina pada basis data DRIVE [3]
Gambar 2. 2  Citra retina hasil Frangi filter
Gambar 2. 3   Citra hasil mean filter
Gambar 2. 4 Citra mask dan citra hasil masking
+7

Referensi

Dokumen terkait