• Tidak ada hasil yang ditemukan

PENGOLAHAN CITRA DIGITAL STEP BY STEP MENGGUNAKAN DELPHI 7.

N/A
N/A
Protected

Academic year: 2017

Membagikan "PENGOLAHAN CITRA DIGITAL STEP BY STEP MENGGUNAKAN DELPHI 7."

Copied!
291
0
0

Teks penuh

(1)

Anak Agung Ngurah Gunawan

PENGOLAHAN

CITRA DIGITAL

STEP BY STEP MENGGUNAKAN DELPHI 7

(2)

PENGOLAHAN CITRA DIGITAL

STEP BY STEP MENGGUNAKAN DELPHI 7

Anak Agung Ngurah Gunawan

Penerbit : ANDI

(3)

Oleh : Anak Agung Ngurah Gunawan

Hak Cipta @ 2013 pada Penulis

Editor :

Setting :

Desain Cover :

Korektor :

Hak cipta dilindungi undang-undang. Dularang memperbanyak atau memendahkan sebagian atau seluruh isi buku ini dalam bentuk apapun, baik secara elektronis maupun mekanis, termasuk memfotocopy, merekam, atau dengan sistem

penyimpanan lainnyatanpa izin tertulis dari penulis.

Penerbit: ANDI

Percetakan:

(4)

Buku ini kupersembahkan kepada

(5)
(6)

KATA PENGANTAR

Puji syukur Penulis panjatkan ke hadirat Tuhan Yang Maha Esa atas selesainya penyusunan buku Pratikum Pengolahan Citra Digital. Buku ini disusun untuk melengkapi khasanah buku teks perkuliahan di Teknik Informatika atau Ilmu Komputer, khususnya di bidang pengolahan citra. Penulis berharap dengan adanya buku ini, mahasiswa mendapatkan panduan dalam mengikuti Pratikum Pengolahan Citra Digital di pendidikan D3 atau S1 Teknik Informatika atau Ilmu Komputer.

Materi dalam buku ini adala teori dan langkah pemrograman, diharapkan setelah membaca buku ini pembaca bisa membuat priram sederhana pengolahan citra digital dengan menggunakan bahasa pemrograman dephi 7.

Sebagai sebuah karya manusia, tentu buku ini masih banyak mengandung

kelemahan. Kami berharap masukan kritik dan saran dari pembaca melalui email

[email protected]. Penulis berterimakasi atas kritik saran pembaca yang akan kami sempurnakan penerbitan buku berikutnya.

Denpasar, Agustus 2013

(7)
(8)

DAFTAR ISI

KATA PENGANTAR v

DAFTAR ISI vii

DAFTAR GAMBAR x

DAFTAR TABEL xviii

BAB I OPEN IMAGE 1

1.1 Cara Membuat Program Open Image 1

1.2 Program Open Image Selengkapnya Adalah Sebagai Berikut 7

BAB II HISTOGRAM EQUALIZATION 9

2.1 Perataan Histogram 9

2.2 Cara Membuat Program Equalization 13

2.3 Program Histogram Equalization Selengkapnya Adalah sebagai

Berikut

25

BAB III WIENER FILTER 31

3.1 Teori Wiener Filter 31

3.2 Cara Membuat Program Wiener Filter 32

3.3 Program Wiener Filter Selengkapnya Adalah Sebagai Berikut 45

BAB IV GLOBAL TRESHOLDING 51

4.1 Dasar Teori Global Thresholding 51

4.2 Cara Membuat Program Global Thresholding 51

4.3 Program Global Thresholding Selengkapnya Adalah Sebagai

Berikut

61

BAB V HISTOGRAM CUT 65

5.1 Dasar Teori Histogram Cut 65

5.2 Cara Menbuat Program Histogram Cut 69

5.3 Program Histogram Cut Selengkapnya Adalah Sebagai Berikut 84

BAB VI MORPOLOGI 89

6.1 Dasar Teori Morpologi 89

6.1.1 Struktur elemen 89

6.1.2 Dilasi 89

6.1.3 Erosi 90

6.1.4 Opening 91

(9)

6.2 Cara Menbuat Program Morpologi 92

6.3 Program Morpologi Selengkapnya Adalah Sebagai Berikut 105

BAB VII SUBTRAK 111

7.1 Dasar Teori Subtrak 111

7.2 Cara Membuat Program Subtrak 111

7.3 Program Subtrak Selengkapnya Adalah Sebagai Berikut 123

BAB VIII DETEKSI TEPI SOBEL 127

8.1 Dasar Teori Deteksi Tepi Sobel 127

8.2 Cara Membuat Program Deteksi Tepi Sobel 128

8.3 Program Deteksi Tepi Sobel Selengkapnya Adalah Sebagai Berikut 140

BAB IX DETEKSI TEPI PREWITT 145

9.1 Dasar Teori Deteksi Tepi Prewitt 145

9.2 Cara Membuat Program Deteksi Tepi Prewitt 146

9.3 Program Deteksi Tepi Prewitt Selengkapnya Adalah Sebagai

Berikut

159

BAB X DETEKSI TEPI ROBERT 163

10.1 Dasar Teori Deteksi Tepi Robert 163

10.2 Cara Membuat Program Deteksi Tepi Robert 164

10.3 Program Deteksi Tepi Robert Selengkapnya Adalah Sebagai Berikut 176

BAB XI LOW PASS FILTER 181

11.1 Dasar Teori Low Pass Filter 181

11.2 Cara Membuat Program Low Pass Filter 181

11.3 Program Low Pass Filter Selengkapnya Adalah Sebagai Berikut 194

BAB XII HIGHT PASS FILTER 199

12.1 Dasar Teori Hight Pass Filter 199

12.2 Cara Membuat Program Hight Pass Filter 200

12.3 Program Hight Pass Filter Selengkapnya Adalah Sebagai Berikut 214

BAB XIII K-MEANS 219

13.1 Algoritma K-Means 219

13.2 Cara Membuat Program K-Means 222

13.3 Program K-Means Selengkapnya Adalah Sebagai Berikut 240

BAB XIV MENAMPILKAN NILAI INTENSITAS PIXEL 247

14.1 Pendahuluan 247

14.2 Cara Membuat Program Menampilkan Nilai Intensitas Pixel 247

14.3 Program Menampilkan Nilai Intensitas Pixel Selengkapnya Adalah

Sebagai Berikut

255

BAB XV LOG IN 261

15.1 Pendahuluan 261

15.2 Cara Membuat Program Log In 261

(10)

DAFTAR PUSTAKA 271

(11)

DAFTAR GAMBAR

Gambar 1.1 Start Program Delphi 1

Gambar 1.2 New Application 1

Gambar 1.3 Object Inspector 2

Gambar 1.4 Save All 2

Gambar 1.5 Save Unit 2

Gambar 1.6 Save Project 3

Gambar 1.7 Menu Image 3

Gambar 1.8 Stretch True 3

Gambar 1.9 Menu Button 4

Gambar 1.10 Button Open 4

Gambar 1.11 Menu OpenPictureDialog 4

Gambar 1.12 Hasil OpenPictureDialog 5

Gambar 1.13 Button Exit 5

Gambar 1.14 Menu Compiler 6

Gambar 1.15 Menu Run 6

Gambar 1.16 Hasil Program 7

Gambar 2.1 Fungsi Transformasi 10

Gambar 2.2 Histogram Citra Sebelum Perataan 11

Gambar 2.3 Histogram Citra Hasil Pemetaan. 12

Gambar 2.4 Start Program Delphi 13

Gambar 2.5 New Application 13

Gambar 2.6 Object Inspector 14

Gambar 2.7 Save All 14

Gambar 2.8 Save UnitEqualization 14

Gambar 2.9 Save ProjectEqualization 15

Gambar 2.10 Menu Image 15

Gambar 2.11 Stretch True 15

Gambar 2.12 Penambahan Image 2 16

Gambar 2.13 Menu Button 16

Gambar 2.14 Button Open 16

Gambar 2.15 Menu OpenPictureDialog 17

Gambar 2.16 Hasil OpenPictureDialog 17

Gambar 2.17 Button Equalization 18

Gambar 2.18 Menu ProgresBar 18

Gambar 2.19 Hasil ProgresBar 18

Gambar 2.20 New Unit 19

Gambar 2.21 Save All 19

Gambar 2.22 Save UnitImageProses 19

Gambar 2.23 Hasil Save UnitImageProses 20

Gambar 2.24 Kembali ke FormEqualization 22

Gambar 2.25 Menu Toggle Form 23

Gambar 2.26 Klik Button Equalization 23

(12)

Gambar 2.28 Compile ProjectEqualization 24

Gambar 2.29 Run ProjectEqualization 25

Gambar 2.30 Hasil Program Equalization 25

Gambar 3.1 Start Program 32

Gambar 3.2 New Application 33

Gambar 3.3 Form Wiener Filter 33

Gambar 3.4 Save All 33

Gambar 3.5 Unit Wiener Filter 34

Gambar 3.6 Project Wiener Filter 34

Gambar 3.7 Menu Image 34

Gambar 3.8 Stretch True 35

Gambar 3.9 Penambahan Image 2 35

Gambar 3.10 Menu Button 35

Gambar 3.11 Button Open 36

Gambar 3.12 Menu OpenPictureDialog 36

Gambar 3.13 Hasil OpenPictureDialog 36

Gambar 3.14 Button Wiener Filter 37

Gambar 3.15 Menu ProgresBar 37

Gambar 3.16 Hasil ProgresBar 38

Gambar 3.17 New Unit 38

Gambar 3.18 Save All 38

Gambar 3.19 Save UnitImageProses 39

Gambar 3.20 Hasil Save UnitImageProses 39

Gambar 3.21 Kembali ke FormWienerFilter 42

Gambar 3.22 Menu Toggle Form 43

Gambar 3.23 Klik Button Wiener Filter 43

Gambar 3.24 Button Exit 44

Gambar 3.25 Menu Compile 44

Gambar 3.26 Menu Run 45

Gambar 3.27 Hasil Wiener Filter 45

Gambar 4.1 Start Program 51

Gambar 4.2 Form Global Thresholding 52

Gambar 4.3 Button Open 52

Gambar 4.4 Save All 53

Gambar 4.5 Save Unit Global Thresolding 53

Gambar 4.6 Save Project Global Thresolding 54

Gambar 4.7 Button Thresolding 55

Gambar 4.8 New Unit 55

Gambar 4.9 Save Image Proses 56

Gambar 4.10 Edit Thresolding 59

Gambar 4.11 Button Exit 60

Gambar 4.12 Hasil Program Thresolding 60

Gambar 5.1 Start Program 69

Gambar 5.2 New Application 69

Gambar 5.3 Form Histogram Cut 70

(13)

Gambar 5.5 Save UnitHistogramCut 70

Gambar 5.6 Save ProjectHistogramCut 71

Gambar 5.7 Menu Image 71

Gambar 5.8 AutoSize True 71

Gambar 5.9 Penambahan Image 2 72

Gambar 5.10 Menu Button 72

Gambar 5.11 Button Open 72

Gambar 5.12 Menu OpenPictureDialog 73

Gambar 5.13 Hasil OpenPictureDialog 73

Gambar 5.14 Button HistogramCut 74

Gambar 5.15 Menu ProgresBar 74

Gambar 5.16 Hasil ProgresBar 74

Gambar 5.17 New Unit 75

Gambar 5.18 Save As 75

Gambar 5.19 Save UnitImageProses 75

Gambar 5.20 Hasil Save UnitImageProses 76

Gambar 5.21 Kembali ke Form HistogramCut 79

Gambar 5.22 Menu Toggle 79

Gambar 5.23 Klik Button HistogramCut 89

Gambar 5.24 Button Exit 81

Gambar 5.25 Menu Edit 81

Gambar 5.26 Object InspectorEdit 81

Gambar 5.27 Menu Label 82

Gambar 5.28 Object Inspector Cut 82

Gambar 5.29 Menu Compile 83

Gambar 5.30 Menu Run 83

Gambar 5.31 Hasil Program Histogram Cut 84

Gambar 6.1 Start Program 92

Gambar 6.2 New Application 92

Gambar 6.3 Form Morpologi 93

Gambar 6.4 Save All 93

Gambar 6.5 Save UnitMorpologi 93

Gambar 6.6 Save ProjectMorpologi 94

Gambar 6.7 Menu Image 94

Gambar 6.8 Stretch True 94

Gambar 6.9 Penambahan Image 2 95

Gambar 6.10 Menu Button 95

Gambar 6.11 Button Open 95

Gambar 6.12 Menu OpenPictureDialog 96

Gambar 6.13 Hasil OpenPictureDialog 96

Gambar 6.14 Button Morpologi 97

Gambar 6.15 Menu ProgresBar 97

Gambar 6.16 Hasil ProgresBar 97

Gambar 6.17 New Unit 98

Gambar 6.18 Save As 98

Gambar 6.19 Save UnitImageProses 98

Gambar 6.20 Hasil Save UnitImageProses 99

Gambar 6.21 Kembali ke FormMorpologi 102

(14)

Gambar 6.23 Klik Button Morpologi 102

Gambar 6.24 Button Exit 103

Gambar 6.25 Compiler ProjectMorpologi 104

Gambar 6.26 Menu Run 104

Gambar 6.27 Hasil Program Morpologi 104

Gambar 7.1 Start Program 111

Gambar 7.2 New Application 112

Gambar 7.3 Form Substrak 112

Gambar 7.4 Save All 112

Gambar 7.5 Save UnitSubtrak 113

Gambar 7.6 Save ProjectSubstrak 113

Gambar 7.7 Menu Image 113

Gambar 7.8 Stretch True 114

Gambar 7.9 Penambahan Image 2 114

Gambar 7.10 Menu Button 114

Gambar 7.11 Button Open 115

Gambar 7.12 Menu OpenPictureDialog 115

Gambar 7.13 Hasil OpenPictureDialog 115

Gambar 7.14 Button Subtrak 116

Gambar 7.15 Menu ProgresBar 116

Gambar 7.16 Hasil ProgresBar 117

Gambar 7.17 New Unit 117

Gambar 7.18 Save As 117

Gambar 7.19 Save UnitImageProses 118

Gambar 7.20 Hasil Save UnitImageProses 118

Gambar 7.21 Kembali ke FormSubstrak 120

Gambar 7.22 Menu Toggle 121

Gambar 7.23 Klik Button Substrak 121

Gambar 7.24 Button Exit 122

Gambar 7.25 Compiler ProjectSubtrak 122

Gambar 7.26 Menu Run 122

Gambar 7.27 Hasil Program Subtrak 123

Gambar 8.1 Start Program 128

Gambar 8.2 New Application 128

Gambar 8.3 Form Sobel 129

Gambar 8.4 Save All 129

Gambar 8.5 Save UnitSobel 129

Gambar 8.6 Save ProjectSobel 130

Gambar 8.7 Menu Image 130

Gambar 8.8 Stretch True 130

Gambar 8.9 Penambahan Image 2 131

Gambar 8.10 Menu Button 131

Gambar 8.11 Button Open 131

Gambar 8.12 Menu OpenPictureDialog 132

Gambar 8.13 Hasil OpenPictureDialog 132

Gambar 8.14 Button Sobel 133

Gambar 8.15 New Unit 133

(15)

Gambar 8.17 Save UnitImageProses 134

Gambar 8.18 Hasil Save UnitImageProses 134

Gambar 8.19 Kembali ke FormSobel 136

Gambar 8.20 Menu Toggle 136

Gambar 8.21 Button Sobel 136

Gambar 8.22 Button Exit 138

Gambar 8.23 Compiler ProjectSobel 139

Gambar 8.24 Menu Run 139

Gambar 8.25 Hasil Mammografi 140

Gambar 8.26 Hasil Photo 140

Gambar 9.1 Start Program 146

Gambar 9.2 New Application 146

Gambar 9.3 Form Prewitt 147

Gambar 9.4 Save All 147

Gambar 9.5 Save UnitPrewitt 147

Gambar 9.6 Save ProjectPrewitt 148

Gambar 9.7 Menu Image 148

Gambar 9.8 Stretch True 148

Gambar 9.9 Penambahan Image 2 149

Gambar 9.10 Menu Button 149

Gambar 9.11 Button Open 149

Gambar 9.12 Menu OpenPictureDialog 150

Gambar 9.13 Hasil OpenPictureDialog 150

Gambar 9.14 Button Prewitt 151

Gambar 9.15 New Unit 151

Gambar 9.16 Save As 151

Gambar 9.17 Save UnitImageProses 152

Gambar 9.18 Hasil Save UnitImageProses 152

Gambar 9.19 Kembali ke FormPrewitt 154

Gambar 9.20 Menu Toggle 154

Gambar 9.21 Button Sobel 154

Gambar 9.22 Button Exit 156

Gambar 9.23 Compiler ProjectPrewitt 157

Gambar 9.24 Menu Run 157

Gambar 9.25 Hasil Mammografi 158

Gambar 9.26 Hasil Photo 158

Gambar 10.1 Start Program 164

Gambar 10.2 New Application 164

Gambar 10.3 Form Robert 165

Gambar 10.4 Save All 165

Gambar 10.5 Save UnitRobert 165

Gambar 10.6 Save ProjectRobert 166

Gambar 10.7 Menu Image 166

Gambar 10.8 Stretch True 166

Gambar 10.9 Penambahan Image 2 167

Gambar 10.10 Menu Button 167

Gambar 10.11 Button Open 167

(16)

Gambar 10.13 Hasil OpenPictureDialog 168

Gambar 10.14 Button Robert 169

Gambar 10.15 New Unit 169

Gambar 10.16 Save As 169

Gambar 10.17 Save UnitImageProses 170

Gambar 10.18 Hasil Save UnitImageProses 170

Gambar 10.19 Kembali ke FormRobert 172

Gambar 10.20 Menu Toggle 172

Gambar 10.21 Button Robert 172

Gambar 10.22 Button Exit 174

Gambar 10.23 Compiler ProjectRobert 175

Gambar 10.24 Menu Run 175

Gambar 10.25 Hasil Program Robert 175

Gambar 11.1 Start Program 181

Gambar 11.2 New Application 182

Gambar 11.3 Form LowPassFilter 182

Gambar 11.4 Save All 182

Gambar 11.5 Save UnitLowPassFilter 183

Gambar 11.6 Save ProjectLowPassFilter 183

Gambar 11.7 Menu Image 183

Gambar 11.8 Stretch True 184

Gambar 11.9 Penambahan Image 2 184

Gambar 11.10 Menu Button 184

Gambar 11.11 Button Open 185

Gambar 11.12 Menu OpenPictureDialog 185

Gambar 11.13 Hasil OpenPictureDialog 185

Gambar 11.14 Button Low Pass Filter 186

Gambar 11.15 New Unit 187

Gambar 11.16 Save As 187

Gambar 11.17 Save UnitImageProses 187

Gambar 11.18 Hasil Save UnitImageProses 188

Gambar 11.19 Kembali ke FormLowPassFilter 190

Gambar 11.20 Menu Toggle 190

Gambar 11.21 Klik Button Low Pass Filter 190

Gambar 11.22 Button Exit 192

Gambar 11.23 Compiler ProjectLowPassFilter 193

Gambar 11.24 Menu Run 193

Gambar 11.25 Hasil Mammografi 194

Gambar 11.26 Hasil Photo 194

Gambar 12.1 Start Program 200

Gambar 12.2 New Application 200

Gambar 12.3 FormHighPassFilter 201

Gambar 12.4 Save All 201

Gambar 12.5 Save UnitHighPassFilter 202

Gambar 12.6 Save ProjectHighPassFilter 202

Gambar 12.7 Menu Image 202

Gambar 12.8 Stretch True 203

(17)

Gambar 12.10 Menu Button 204

Gambar 12.11 Button Open 204

Gambar 12.12 Menu OpenPictureDialog 204

Gambar 12.13 Hasil OpenPictureDialog 205

Gambar 12.14 Button High Pass filter ton Low Pass Filter 206

Gambar 12.15 New Unit 206

Gambar 12.16 Save As 206

Gambar 12.17 Save UnitImageProses 207

Gambar 12.18 Hasil Save UnitImageProses 207

Gambar 12.19 Kembali ke FormHighPassFilter 209

Gambar 12.20 Menu Toggle 209

Gambar 12.21 Klik Button High Pass Filter 209

Gambar 12.22 Button Exit 211

Gambar 12.23 Compiler ProjectHighPassFilter 212

Gambar 12.24 Menu Run 212

Gambar 12.25 Hasil Mammografi 213

Gambar 12.26 Hasil Photo 213

Gambar 13.1 Start Program 222

Gambar 13.2 New Application 223

Gambar 13.3 FormKMean 223

Gambar 13.4 Save All 223

Gambar 13.5 Save UnitKMean 224

Gambar 13.6 Save ProjectKMean 224

Gambar 13.7 Menu Image 224

Gambar 13.8 Stretch True 225

Gambar 13.9 Penambahan Image 2 225

Gambar 13.10 Menu Button 225

Gambar 13.11 Button Open 226

Gambar 13.12 Menu OpenPictureDialog 226

Gambar 13.13 Hasil OpenPictureDialog 226

Gambar 13.14 Button K-Mean 227

Gambar 13.15 Menu Label 228

Gambar 13.16 Label K 228

Gambar 13.17 Menu Edit 228

Gambar 13.18 EditCluster 229

Gambar 13.19 Label Weight 229

Gambar 13.20 Clr Wight 40Menu Toggle 230

Gambar 13.21 Menu ProgressBar 230

Gambar 13.22 Hasil ProgressBar 230

Gambar 13.23 Menu New Unit 231

Gambar 13.24 Menu Save As 231

Gambar 13.25 Save UnitImageProses 232

Gambar 13.26 Hasil UnitImageProses 232

Gambar 13.27 Kembali ke FormKMean 237

Gambar 13.28 Toggle 237

Gambar 13.29 Button K-Mean 237

Gambar 13.30 Button Exit 238

Gambar 13.31 Compiler ProjectKMean 239

(18)

Gambar 13.33 Hasil Program K-Mean 239

Gambar 14.1 Menu Open Project 247

Gambar 14.2 Open ProjectHistogramCut 248

Gambar 14.3 Hasil OpenProjectHistogramCut 248

Gambar 14.4 Menu Memo 249

Gambar 14.5 Hasil Memo 249

Gambar 14.6 MainMenu 249

Gambar 14.7 Hasil Main Menu Pada Form 250

Gambar 14.8 Tampilan Main Menu 250

Gambar 14.9 Tulisan Caption File Pada Main Menu 251

Gambar 14.10 Hasil Tampilan Fle Main Menu 251

Gambar 14.11 Menampilkan Tulisan Nilai Intensitas Pixel Awal 251

Gambar 14.12 Menampilkan Nilai Intensitas Pixel Hasil 252

Gambar 14.13 Kembali ke FormHistogramCut 252

Gambar 14.14 Hasil Program Menampilkan Nialai Intensitas Pixel 254

Gambar 15.1 Start Program 261

Gambar 15.2 New Application 261

Gambar 15.3 Form LogIn 262

Gambar 15.4 Tambah Edit ke Form 262

Gambar 15.5 Tambah Button ke Form 263

Gambar 15.6 New Form 263

Gambar 15.7 Form Aplikasi 264

Gambar 15.8 Menu Save All 264

Gambar 15.9 Save UnitLogIn 265

Gambar 15.10 Use Unit 265

Gambar 15.11 Mengelingkan Form Aplikasi Dengan UnitLogIn 266

Gambar 15.12 Mengelingkan UnitLogIn Dengan Form Aplikasi 266

Gambar 15.13 Compiler ProjectLogIn 267

Gambar 15.14 Menu Run 267

(19)

DAFTAR TABEL

TABEL 2.1 Nilai-nilai rk jika L=8 9

TABEL 2.2 Histogram Citra Semula Sebelum Perataan 10

TABEL 2.3 Hasil Transformasinya 11

(20)

BAB 1

OPEN IMAGE

1.1

CARA MEMBUAT PROGRAM OPEN IMAGE

LAKUKAN LANGKAH BERIKUT:

1. Buka program delphi, dengan cara pilih menu start, program borland delphi

7, delphi 7.

Gambar 1.1 Start Program Delphi

2. Kemudian pilih menu file, new, application.

(21)

3. Pada object inspector, ubah properti captionnya dengan nama OpenImage, dan namenya dengan nama FormOpenImage.

Gambar 1.3 Object Inspector

4. Simpan unit dan projectnya dengan cara save all.

Gambar 1.4 Save All

5. Beri nama unitnya dengan nama UnitOpenImage.

(22)

6. Beri nama projectnya dengan nama ProjectOpenImage.

Gambar 1.6 Save Project

7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik

ke form.

Gambar 1.7 Menu Image

8. Rubah stretchnya ke true dan AutoSizenya true.

(23)

9. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu klik ke form

Gambar 1.9 Menu Button

10.Pada oject inspector rubah properti captionnya dengan nama Open, kemudian

namenya dengan nama btOpen.

Gambar 1.10 Button Open

11.Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog,

OpenPictureDialog, lalu klik ke form.

(24)

12.Hasilnya sebagai berikut.

Gambar 1.12 Hasil OpenPictureDialog

13. Doble klik button open kemudian ketik program yang di hurup tebal

berikut.

procedure TFormOpenImage.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

Caption := 'Program MammoAnalisis Image : '+ OpenPictureDialog1.FileName;

Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); end;

end; end.

14. Tambahkan button ke form, lalu pada object inspector rubah properties

captionnya dengan nama Exit dan namenya dengan nama btExit.

Gambar 1.13 Button Exit

(25)

procedure TFormOpenImage.btExitClick(Sender: TObject); begin

FormOpenImage.Close;

end;

16. Simpan program dengan cara File, save all.

17. Compiler progran dengan cara pilih menu Project, Compile

ProjectOpenImage.

Gambar 1.14 Menu Compiler

18.Lalu jalankan progran dengan cara pilih menu Run, Run.

Gambar 1.15 Menu Run

(26)

Gambar 1.16 Hasil Program

20. Keluar dari program klik button Exit.

1.2

PROGRAM OPEN IMAGE SELENGKAPNYA

ADALAH SEBAGAI BERIKUT:

unit UnitOpenImage;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtDlgs, StdCtrls, ExtCtrls;

type

TFormOpenImage = class(TForm) Image1: TImage;

btOpen: TButton;

OpenPictureDialog1: TOpenPictureDialog; btExit: TButton;

procedure btOpenClick(Sender: TObject); procedure btExitClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

(27)

implementation

{$R *.dfm}

procedure TFormOpenImage.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

Caption := 'Program MammoAnalisis Image : '+ OpenPictureDialog1.FileName;

Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); end;

end;

procedure TFormOpenImage.btExitClick(Sender: TObject); begin FormOpenImage.Close; end; end. unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

type

TFormOpenImage = class(TForm) private

{ Private declarations } public

(28)

BAB 2

HISTOGRAM EQUALIZATION

2.1 PERATAAN HISTOGRAM (

HISTOGRAM

EQUALIZATION

)

Histogram citra memberikan informasi tentang penyebaran intensitas pixel-pixel di dalam citra. Misalnya, citra yang terlalu terang atau terlalu gelap memiliki

histogram yang sempit.

Agar diperoleh citra yang baik, maka penyebaran nilai intensitas harus diubah.

Teknik yang lazim dipakai adalah histogram equalization. Tujuan dari perataan

histogram adalah untuk memperoleh penyebaran histogram yang merata, sehingga

setiap derajat keabuan memiliki jumlah pixel yang relatif sama. Dengan r, rk, s, sk, k,

Pr, L, nk , n,T(r), w secara berurutan adalah nilai keabuan citra semula, nilai keabuan

citra semula dengan derajat keabuan tertentu , nilai keabuan yang baru, nilai

keabuan yang baru dengan derajat keabuan tertentu, derajat keabuan, peluang pixel dengan derajat keabuan tertentu, jumlah derajat keabuan, jumlah pixel dengan derajat keabuan tertentu, jumlah pixel total, fungsi transformasi, variabel dummi.

Karena histogram menyatakan peluang pixel dengan derajat keabuan tertentu, maka rumus menghitung histogram ditulis kembali sebagai peluang

Pr (rk) = nk / n ...(2.1)

Yang didalam hal ini

rk = k / (L – 1), 0 ≤ k ≤ L – 1 ...(2.2)

yang artinya, derajat keabuan (k) dinormalkan terhadap derajat keabuan terbesar

(L-1). Nilai rk = 0 menyatakan hitam, dan rk = 1 menyatakan putih dalam skala keabuan

yang didefinisikan.

Contohnya, jika L=8, maka nilai-nilai rk dinyatakan di dalam tabel 2.1.

Tabel 2.1. Nilai-nilai rk jika L=8

k rk

0 0/7 = 0

1 1/7

2 2/7

3 3/7

4 4/7

5 5/7

6 6/7

(29)

Yang dimaksud dengan perataan histogram adalah mengubah derajat keabuan suatu pixel (r) dengan derajat keabuan yang baru (s) dengan suatu fungsi transformasi T, yang dalam hal ini s = T(r). Gambar 2.2 memperlihatkan transformasi r menjadi s.

s 1

sk=T(rk)

0 rk 1 r

Gambar 2.1. Fungsi Transformasi

Untuk fungsi histogram yang kontinu,

s = T(r) = ∫ 0 (), 0 ≤ r ≤ 1 ...(2.3)

dengan :

w = variabel dummi.

Dalam bentuk diskrit, nilai-nilai s diperoleh dengan persamaan berikut :

sk = T (rk) = ∑#"=0!!" = ∑#"=0") ...(2.4)

dengan :

0 ≤ rk ≤ 1, k = 0, 1, 2, ..., L-1

Contoh :

Misalkan terdapat citra yang berukuran 64 x 64 dengan jumlah derajaat keabuan (L) = 8 dan jumlah seluruh pixel (n) = 64 x 64 = 4096:

Table 2.2 Histogram Citra Semula Sebelum Perataan.

k rk nk Pr(rk) = nk/n

0 0/7 = 0.00 790 0.19

1 1/7 = 0.14 1023 0.25

2 2/7 = 0.29 850 0.21

3 3/7 = 0.43 656 0.16

4 4/7 = 0.57 329 0.08

5 5/7 = 0.71 245 0.06

6 6/7 = 0.86 122 0.03

(30)

Pr(rk) 0.30 0.25 0.20 0.15 0.10 0.05

0 1/7 2/7 3/7 4/7 5/7 6/7 1 rk

Gambar 2.2. Histogram Citra Sebelum Perataan

Perhitungan perataan histogram adalah sebagai berikut : s0 = T(r0) = ∑0"=0$"%=(0) = 0.19

s1 = T(r1) = ∑1"=0"%=(0)+ (1) = 0.19 + 0.25 = 0.44

s2 = T(r2) = ∑2"=0"%=(0)+ (1)+ (2) = 0.19 + 0.25 + 0.21 = 0.65

dan seterusnya, diperoleh :

s3 = 0.81 s5 = 0.95 s7 = 1.00

s4 = 0.89 s6 = 0.98

Karena pada citra ini hanya ada 8 nilai intensitas, maka nilai-nilai sk harus

dibulatkan ke nilai-nilai r yang terdekat :

s0 = 0.19 lebih dekat ke nilai 1/7 (=0.14), maka s0 = 1/7.

s1 = 0.44 lebih dekat ke nilai 3/7 (=0.43), maka s1 = 3/7.

s2 = 0.65 lebih dekat ke nilai 5/7 (=0.71), maka s2 = 5/7.

s3 = 0.81 lebih dekat ke nilai 6/7 (=0.86), maka s3 = 6/7.

s4 = 0.89 lebih dekat ke nilai 6/7 (=0.86), maka s4 = 6/7.

s5 = 0.95 lebih dekat ke nilai 7/7 (=1.00), maka s5 = 7/7.

s6 = 0.98 lebih dekat ke nilai 7/7 (=1.00), maka s6 = 7/7.

[image:30.612.102.401.537.664.2]

s7 = 1.00 lebih dekat ke nilai 7/7 (=1.00), maka s7 = 7/7.

Table 2.3 Hasil Transformasinya :

k rk sk

0 0 1/7

1 1/7 3/7

2 2/7 5/7

3 3/7 6/7

4 4/7 6/7

5 5/7 1

6 6/7 1

7 1 1

Terlihat dari contoh di atas hanya lima nilai intensitas yang terisi yaitu 1/7, 3/7, 5/7, 6/7, dan 1.

(31)

s0 = 1/7, s1 = 3/7, s2 = 5/7, s3 = 6/7, s4 = 1.

Karena r0 = 0 dipetakan ke s0 = 1/7, terdapat 790 pixel hasil transformasi yang

memiliki nilai intensitas 1/7. Selanjutnya, s1 = 3/7 memiliki 1023 pixel, s2 = 5/7

memiliki 850 pixel. Juga, karena r3 dan r4 dipetakan ke nilai yang sama, s3 = 6/7,

maka jumlah pixel yang bernilai 6/7 adalah 656 + 329 = 985. Jumlah pixel hasil tranformasi diringkas pada tabel di bawah ini :

Table 2.4 Histogram Citra Hasil Perataan

sk nk Ps(sk) = nk/n

1/7 790 0.19

3/7 1023 0.25

5/7 850 0.21

6/7 656 + 329 = 958 0.23

7/7 245 + 122 + 81 =

448

0.11

Ps(sk)

0.30 0.25 0.20 0.15 0.10 0.05

0 1/7 2/7 3/7 4/7 5/7 6/7 1 sk

Gambar 2.3. Histogram Citra Hasil Pemetaan.

(32)

1. Buka program delphi, dengan cara pilih menu start, program borland delphi 7, delphi 7.

Gambar 2.4 Start Program Delphi

2. Kemudian pilih menu file, new, application.

Gambar 2.5 New Application

3. Pada object

(33)

ubah properti captionnya dengan nama Equalization, dan namenya dengan

nama FormEqualization.

Gambar 2.6 Object Inspector

4. Simpan unit dan projectnya dengan cara save all.

Gambar 2.7 Save All

5. Beri nama unitnya dengan nama UnitEqualization.

(34)

6. Beri nama projectnya dengan nama ProjectEqualization.

Gambar 2.9 Save ProjectEqualization

7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik

ke form.

Gambar 2.10 Menu Image

8. Rubah stretchnya ke true dan autosizenyatrue.

(35)

9. Dengan cara yang sama tambahkan image2 di sebelah kanan image1

kemudian ubah stretchnya ke true dan autosizenya true.

Gambar 2.12 Penambahan Image 2

10. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu

klik ke form

Gambar 2.13 Menu Button

11.Pada oject inspector rubah properti captionnya dengan nama Open, kemudian

namenya dengan nama btOpen.

(36)

12.Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form.

Gambar 2.15 Menu OpenPictureDialog

13.Hasilnya sebagai berikut.

Gambar 2.16 Hasil OpenPictureDialog

14.Doble klik button open kemudian ketik program yang di hurup tebal

berikut. var

FormEqualization: TFormEqualization; FileNameImg: string;

implementation

{$R *.dfm}

procedure TFormEqualization.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

Caption := 'Histogram Equalization : '+ OpenPictureDialog1.FileName;

Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); Image2.Visible := False;

end;

(37)

15. Tambahkan button pada form, pada object inspector rubah properties

captionnya dengan nama Equalization dan Namenya dengan nama

btEqualization.

Gambar 2.17 Button Equalization

16. Tambahkan ProgressBar ke form dengan cara, pilih menu Win32, ProgressBar. Lalu klik ke form, lalu geser kekanan.

Gambar 2.18 Menu ProgresBar

17. Hasilnya sebagai berikut.

Gambar 2.19 Hasil ProgresBar

(38)

Gambar 2.20 New Unit

[image:38.612.151.348.258.423.2]

19. Simpan unitnya dengan cara save as.

Gambar 2.21 Save All

20. Berinama unitnya dengan nama UnitImageProses.

Gambar 2.22 Save UnitImageProses

(39)

Gambar 2.23 Hasil Save UnitImageProses

22. Ketik program berikut ke dalam UnitImageProses. unit UnitImageProses;

interface

uses

WINPROCS, Graphics, ExtCtrls, ComCtrls;

type

TFreqHist = array [0..255] of longint;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

procedure ImgHistogramEqu (var Image:TImage; var ProgressBar1:

TProgressBar);

implementation

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

if r<0 then ByteRange:=0

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

(40)

g := GetGValue(Clr); b := GetBValue(Clr);

RgbToGray := ByteRange (r*PercentR + g*PercentG + b*PercentB); end;

function ImgGetGray (var Image:TImage; x,y:integer) : byte; begin

Result := RgbToGray (Image.Canvas.Pixels[x,y]); end;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

var x,y:integer; ClrGray:byte; begin

ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;

for x:=0 to Image1.Width-1 do begin

for y:=0 to Image1.Height-1 do begin

ClrGray := ImgGetGray (Image1,x,y);

Image1.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

Image1.Repaint;

ProgressBar1.Position := x; end;

end;

procedure ImgHistogramEqu (var Image:TImage; var ProgressBar1:

TProgressBar); var

x,y,i:integer; Clr:TColor; ClrGray:byte; Freq, NewColor: TFreqHist;

TotFreq, ImgSize: longint; begin

ProgressBar1.Max := Image.Width-1; ProgressBar1.Position := 0;

{ set Frek[i]=0 }

for i:=0 to 255 do Freq[i]:=0; { hitung frekuensi tiap warna } for x:=0 to Image.Width-1 do for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y); Inc (Freq[ClrGray]);

(41)

{ hitung pixel baru } TotFreq := 0;

ImgSize := Image.Width * Image.Height; for i:=0 to 255 do

begin

Inc (TotFreq, Freq[i]);

NewColor[i] := Round((TotFreq/ImgSize)*255); end;

{ tuliskan pixel baru }

for x:=0 to Image.Width-1 do begin

for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y);

ClrGray := ByteRange (NewColor[ClrGray]);

Image.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

ProgressBar1.Position := x; Image.Repaint;

end; end; end.

23. Kembali ke FormEqualization, caranya klik unitEqualization

Gambar 2.24 Kembali ke FormEqualization

(42)

Gambar 2.25 Menu Toggle Form

25.Doble klik button Equalization.

Gambar 2.26 Klik Button Equalization

26.Lalu ketik program dengan hurup tebal berikut.

procedure TFormEqualization.btEqualizationClick(Sender: TObject); begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic; ImgHistogramEqu(Image2,ProgressBar1);

end;

27.Dibawah implementasi ketik program yang tertulis huruf tebal berikut. implementation

{$R *.dfm}

uses

UnitImageProses;

28. Tambahkan button ke form, lalu pada object inspector rubah properties

(43)

Gambar 2.27 Button Exit

29.Doble klik button Exit, lalu ketik program berikut.

procedure TFormEqualization.btExitClick(Sender: TObject); begin

FormEqualization.Close;

end;

30. Simpan program dengan cara file save all.

31. Compiler progran dengan cara pilih menu Project, Compile ProjectEqualization.

Gambar 2.28 Compile ProjectEqualization

(44)

Gambar 2.29 Run ProjectEqualization

33.Hasil sebagai berikut.

Gambar 2.30 Hasil Program Equalization

34. Keluar dari program klik button Exit.

2.3 PROGRAM HISTOGRAM EQUALIZATION

SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitEqualization;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls;

type

TFormEqualization = class(TForm) Image1: TImage;

Image2: TImage; btOpen: TButton;

(45)

btEqualization: TButton; ProgressBar1: TProgressBar; btExit: TButton;

procedure btOpenClick(Sender: TObject);

procedure btEqualizationClick(Sender: TObject); procedure btExitClick(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end; var FormEqualization: TFormEqualization; FileNameImg: string; implementation {$R *.dfm} uses UnitImageProses;

procedure TFormEqualization.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

Caption := 'Histogram Equalization : '+ OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName);

Image2.Visible := False; end;

end;

procedure TFormEqualization.btEqualizationClick(Sender: TObject); begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic; ImgHistogramEqu(Image2,ProgressBar1);

end;

(46)

uses

WINPROCS, Graphics, ExtCtrls, ComCtrls;

type

TFreqHist = array [0..255] of longint;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

procedure ImgHistogramEqu (var Image:TImage; var ProgressBar1: TProgressBar);

implementation

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

if r<0 then ByteRange:=0

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

r := GetRValue(Clr); g := GetGValue(Clr); b := GetBValue(Clr);

RgbToGray := ByteRange (r*PercentR + g*PercentG + b*PercentB); end;

function ImgGetGray (var Image:TImage; x,y:integer) : byte; begin

Result := RgbToGray (Image.Canvas.Pixels[x,y]); end;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

var x,y:integer; ClrGray:byte; begin

ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;

for x:=0 to Image1.Width-1 do begin

(47)

ClrGray := ImgGetGray (Image1,x,y);

Image1.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

Image1.Repaint;

ProgressBar1.Position := x; end;

end;

procedure ImgHistogramEqu (var Image:TImage; var ProgressBar1: TProgressBar); var

x,y,i:integer; Clr:TColor; ClrGray:byte; Freq, NewColor: TFreqHist;

TotFreq, ImgSize: longint; begin

ProgressBar1.Max := Image.Width-1; ProgressBar1.Position := 0;

{ set Frek[i]=0 }

for i:=0 to 255 do Freq[i]:=0; { hitung frekuensi tiap warna }

for x:=0 to Image.Width-1 do for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y); Inc (Freq[ClrGray]);

end;

{ hitung pixel baru } TotFreq := 0;

ImgSize := Image.Width * Image.Height; for i:=0 to 255 do

begin

Inc (TotFreq, Freq[i]);

NewColor[i] := Round((TotFreq/ImgSize)*255); end;

{ tuliskan pixel baru }

for x:=0 to Image.Width-1 do begin

for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y);

ClrGray := ByteRange (NewColor[ClrGray]);

Image.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

(48)

end; end;

(49)
(50)

BAB 3

WIENER FILTER

3.1 TEORI WIENER FILTER

Wiener filter merupakan discrete time linier finite impulse response (FIR) filter.

Prinsip ini telah dikembangkan luas untuk rekontruksi dari sinyal satu dimensi dan citra dua dimensi. Meskipun demikian wiener filter sensitive terhadap nois, tepi filter tersebut dapat mengkontruksi citra secara bagus (Mauridhi , Arif ,2010).

Wiener filter mencari sebuah estimasi f^ yang meminimisasi fungsi kesalahan statistic dapat ditulis menggunakan persamaan

e2 = E { (f f^)2 }………...………(3.1)

Dimensi E{.} adalah nilai argument yang diharapkan. Dimana

f^ (x,y) = w(x,y) * g(x,y)…………...…………..(3.2)

Dimana w(x,y) adalah Wiener Filter

Persamaan (3.1) dapat diuraikan menjadi

E{(f(x,y) –f^(x,y))2} = E[f(x,y)2] + E[f^(x,y)2] 2E[f(x,y)f^(x,y)]

=Rf(x,y)+E[{w(x,y)*g(x,y)}2] – 2 E[f(x,y){w(x,y)*g(x,y)}]...(3.3)

Dimana Rf(x,y) = E[f(x,y)2]

Berdasarkan persamaan diatas, maka error nya dapat dinyatakan dalam bentuk persamaan

e2 = Rf(x,y)+w(x,y)*h(x,y)*Rf(x,y)*h(x,y)*w(x,y)*w(x,y)*Rf(x,y)*w(x,y)

2w(x,y)*h(x,y)*Rf(x,y)………...…….(3.4)

Persamaan tersebut diatas dapat ditulis dalam bentuk matrik

e2 = Tr[[Rf]+[w][H][Rf][H]T[w]+[w][Rn][w]T 2[w][H][Rf]]………..(3.5)

Dan

[w]opt = [Rf][H]T[[H][Rf][H]T + [Rn]]-1………...……..(3.6)

Dengan menggunakan aplikasi Transformasi Fourier, maka akan menghasilkan W(u,v) = |&(*&∗(*,+),-(*,+)

(51)

Jika persamaan (3.7) dibagi dengan Sf(u,v),maka akan dihasilkan persamaan

W(u,v) = &∗(*,+)

|&(*,+)]2+.!(*,+)/,-(*,+)…………...…….….(3.8)

Dan

F^(u,v) = w(u,v) G(u,v)………...………(3.9)

Dan asumsi bahwa citra dan nois tidak saling berkorelasi dan salah satu dari keduanya adalah zero mean. Estimasi dari citra asli diberikan dalam domain frekwensi dari persamaan diatas dalam bentuk model sebagai berikut:

F^ (u,v) = /(*,+)|&(*,+)|+ 0(*,+)| &∗(*,+)|

|&(*,+)|2+.!(*,+)/,-(*,+) ……...………..(3.10)

H(u,v) adalah transformasi fourier dari mekanisme degradasi representasi suatu fungsi dan G(u,v) adalah spectrum dari image yang terdegradasi. Power spectrum dari nois dan citra asli masing-masing dapat direpresentasikan dalam bentuk persamaan.

Sn(u,v) = |N(u,v)|2………...………(3.11)

Dan sf(u,v) = |F(u,v)|2………...………….(3.12)

3.2 CARA MEMBUAT PROGRAM WIENER FILTER

LAKUKAN LANGKAH BERIKUT:

1. Buka program delphi, dengan cara pilih menu start, program borland delphi

7, delphi 7.

Gambar 3.1 Start Program

(52)
[image:52.612.162.361.523.659.2]

Gambar 3.2 New Aplication

3. Pada object inspector, ubah properti captionnya dengan nama Wiener Filter,

dan namenya dengan nama FormWienerFilter.

Gambar 3.3 Form Wiener Filter

4. Simpan unit dan projectnya dengan cara save all.

Gambar 3.4 Save All

(53)

Gambar 3.5 Unit Wiener Filter

6. Beri nama projectnya dengan nama ProjectWienerFilter.

Gambar 3.6 Project Wiener Filter

7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik

ke form.

Gambar 3.7 Menu Image

(54)

Gambar 3.8 Stretch True

9. Dengan cara yang sama tambahkan image2 di sebelah kanan image1

kemudian ubah stretchnya ke true dan auto sizenya true.

Gambar 3.9 Penambahan Image 2

10. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu

klik ke form

Gambar 3.10 Menu Button

11.Pada oject inspector rubah properti captionnya dengan nama Open, kemudian

(55)

Gambar 3.11 Button Open

12.Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog,

OpenPictureDialog, lalu klik ke form.

Gambar 3.12 Menu OpenPictureDialog

13.Hasilnya sebagai berikut.

Gambar 3.13 Hasil OpenPictureDialog

14.Doble klik button open kemudian ketik program yang di hurup tebal

(56)

FormWienerFilter: TFormWienerFilter; FileNameImg: string;

implementation

{$R *.dfm}

procedure TFormWienerFilter.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

FileNameImg := OpenPictureDialog1.FileName;

Caption := 'Wiener Filter : '+ OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); Image2.Visible := False;

end;

end;

15. Tambahkan button pada form, pada object inspector rubah properties

captionnya dengan nama WienerFilter dan Namenya dengan nama

btWienerFilter.

Gambar 3.14 Button Wiener Filter

16. Tambahkan ProgressBar ke form dengan cara, pilih menu Win32,

ProgressBar. Lalu klik ke form.

Gambar 3.15 Menu ProgressBar

(57)
[image:57.612.124.433.86.225.2]

Gambar 3.16 Hasil Progress Bar

18. Tambahkan unit baru, dengan cara file, new unit.

Gambar 3.17 New Unit

19. Simpan unitnya dengan cara save as.

Gambar 3.18 Save All

[image:57.612.219.371.470.628.2]
(58)
[image:58.612.144.401.80.262.2]

Gambar 3.19 Save UnitImageProses

21. Hasilnya sebagai berikut.

Gambar 3.20 Hasil Unit Image Proses

22. Ketik program berikut ke dalam UnitImageProses. unit UnitImageProses;

interface

uses

WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;

type

TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real;

function RgbToGray (Clr:TColor) : byte;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

[image:58.612.142.361.320.444.2]
(59)

procedure ImgFilterWiener (var Image:TImage; Mtrx:TMatrixFilter; nCol,nRow:byte; var ProgressBar1: TProgressBar);

implementation

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

if r<0 then ByteRange:=0

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

r := GetRValue(Clr); g := GetGValue(Clr); b := GetBValue(Clr);

RgbToGray := ByteRange (r*PercentR + g*PercentG + b*PercentB); end;

function ImgGetGray (var Image:TImage; x,y:integer) : byte; begin

Result := RgbToGray (Image.Canvas.Pixels[x,y]); end;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

var x,y:integer; ClrGray:byte; begin

ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;

for x:=0 to Image1.Width-1 do begin

for y:=0 to Image1.Height-1 do begin

ClrGray := ImgGetGray (Image1,x,y);

Image1.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

Image1.Repaint;

(60)

end;

procedure ImgFilterWiener (var Image:TImage; Mtrx:TMatrixFilter;

nCol,nRow:byte; var ProgressBar1: TProgressBar); var dx,dy:byte; ImgTemp:TImage;

mean,pSpectrum:Variant; pSpectrumNoise: real;

procedure CalculateParameter (x,y:integer); var row,col:integer; clrGray,tot,tot2:real; begin

tot:=0; tot2:=0; for col:=1 to nCol do for row:=1 to nRow do begin

clrGray := ImgGetGray (ImgTemp, x+col-dx-1, y+row-dy-1); tot := tot + Mtrx[col,row] * clrGray;

tot2 := tot2 + Mtrx[col,row] * Sqr(clrGray); end;

mean[x,y] := tot/(nCol*nRow);

pSpectrum[x,y] := tot2/(nCol*nRow) - mean[x,y]; end;

procedure CalculatePixel (x,y:integer; var clrGray:byte); var c:real;

begin

clrGray := ImgGetGray (ImgTemp, x,y);

c := mean[x,y] + pSpectrum[x,y]/(pSpectrum[x,y]+pSpectrumNoise) * (clrGray-mean[x,y]);

clrGray := ByteRange (c); end;

var

x,y: integer; clrGray: byte;

begin

dx := nCol div 2; dy := nRow div 2;

ImgTemp := TImage.Create (Image.Parent);

ImgTemp.Picture.Graphic := Image.Picture.Graphic;;

mean := VarArrayCreate([0,Image.Width-1, 0,Image.Height-1], varSingle);

pSpectrum := VarArrayCreate([0,Image.Width-1, 0,Image.Height-1],

varSingle);

pSpectrumNoise := 0;

(61)

ProgressBar1.Max := Image.Width; ProgressBar1.Position := 0;

pSpectrumNoise := 0;

for x:=dx to Image.Width-1-dx do begin

for y:=dy to Image.Height-1-dy do begin

CalculateParameter (x,y);

pSpectrumNoise := pSpectrumNoise + pSpectrum[x,y]; Image.Canvas.Pixels[x,y] := RGB (clrGray,clrGray,clrGray); end; { for y }

ProgressBar1.Position := x; end; { for x }

pSpectrumNoise := pSpectrumNoise / (Image.Width-dx)/(Image.Height-dy); ProgressBar1.Position := ProgressBar1.Max;

{ filtering process }

for x:=dx to Image.Width-1-dx do begin

for y:=dy to Image.Height-1-dy do begin

CalculatePixel (x,y, clrGray);

Image.Canvas.Pixels[x,y] := RGB (clrGray,clrGray,clrGray); end; { for y }

ProgressBar1.Position := x; end; { for x }

ProgressBar1.Position := ProgressBar1.Max; Image.Repaint;

end; end.

[image:61.612.118.432.519.643.2]

23. Kembali ke FormWienerFilter, caranya klik UnitWienerFilter.

Gambar 3.21 Kembali ke FormWienerFilter

(62)

Gambar 3.22 Menu Toggle

[image:62.612.122.440.219.371.2]

25.Doble klik button WienerFilter.

Gambar 3.23 Klik Button Wiener Filter

26.Lalu ketik program berikut.

procedure TFormWienerFilter.btWienerFilterClick(Sender: TObject); var Mtrx:TMatrixFilter; nRow,nCol,r,c:integer;

begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic;

begin

nRow:=3; nCol:=3; for c:=1 to nCol do for r:=1 to nRow do Mtrx[r,c]:=1;

ImgFilterWiener (Image2, Mtrx,nCol,nRow, ProgressBar1);

end; end;

27.Dibawah implementasi ketik program yang tertulis huruf tebal berikut. implementation

(63)

uses

UnitImageProses;

28. Tambahkan button ke form, lalu pada object inspector rubah properties

[image:63.612.112.505.153.325.2]

captionnya dengan nama Exit dan namenya dengan nama btExit.

Gambar 3.24 Button Exit

29. Doble klik button Exit, lalu ketik program berikut. procedure TFormWienerFilter.btExitClick(Sender: TObject); begin

FormWienerFilter.Close;

end;

30.Compiler progran dengan cara pilih menu Project, Compile

[image:63.612.146.398.503.603.2]

ProjectWienerFilter.

Gambar 3.25 Menu Compile

(64)

Gambar 3.26 Menu Run

[image:64.612.112.422.218.378.2]

32.Hasil sebagai berikut.

Gambar 3.27 Hasil Wiener Filter

33.Keluar dari program klik button Exit.

3.3 PROGRAM WIENER FILTER SELENGKAPNYA

ADALAH SEBAGAI BERIKUT:

unit UnitWienerFilter;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls;

type

TFormWienerFilter = class(TForm) Image1: TImage;

Image2: TImage; btOpen: TButton;

(65)

ProgressBar1: TProgressBar; btExit: TButton;

procedure btOpenClick(Sender: TObject);

procedure btWienerFilterClick(Sender: TObject); procedure btExitClick(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end; var FormWienerFilter: TFormWienerFilter; FileNameImg: string; implementation {$R *.dfm} uses UnitImageProses;

procedure TFormWienerFilter.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

FileNameImg := OpenPictureDialog1.FileName;

Caption := 'Wiener Filter : '+ OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); Image2.Visible := False;

end; end;

procedure TFormWienerFilter.btWienerFilterClick(Sender: TObject); var Mtrx:TMatrixFilter; nRow,nCol,r,c:integer;

begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic;

begin

nRow:=3; nCol:=3; for c:=1 to nCol do for r:=1 to nRow do Mtrx[r,c]:=1;

ImgFilterWiener (Image2, Mtrx,nCol,nRow, ProgressBar1);

end; end;

(66)

begin FormWienerFilter.Close; end; end. unit UnitImageProses; interface uses

WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;

type

TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real;

function RgbToGray (Clr:TColor) : byte;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

procedure ImgFilterWiener (var Image:TImage; Mtrx:TMatrixFilter; nCol,nRow:byte; var ProgressBar1: TProgressBar);

implementation

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

if r<0 then ByteRange:=0

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

r := GetRValue(Clr); g := GetGValue(Clr); b := GetBValue(Clr);

(67)

function ImgGetGray (var Image:TImage; x,y:integer) : byte; begin

Result := RgbToGray (Image.Canvas.Pixels[x,y]); end;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

var x,y:integer; ClrGray:byte; begin

ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;

for x:=0 to Image1.Width-1 do begin

for y:=0 to Image1.Height-1 do begin

ClrGray := ImgGetGray (Image1,x,y);

Image1.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

Image1.Repaint;

ProgressBar1.Position := x; end;

end;

procedure ImgFilterWiener (var Image:TImage; Mtrx:TMatrixFilter; nCol,nRow:byte; var ProgressBar1: TProgressBar);

var dx,dy:byte; ImgTemp:TImage;

mean,pSpectrum:Variant; pSpectrumNoise: real;

procedure CalculateParameter (x,y:integer); var row,col:integer; clrGray,tot,tot2:real; begin

tot:=0; tot2:=0; for col:=1 to nCol do for row:=1 to nRow do begin

clrGray := ImgGetGray (ImgTemp, x+col-dx-1, y+row-dy-1); tot := tot + Mtrx[col,row] * clrGray;

tot2 := tot2 + Mtrx[col,row] * Sqr(clrGray); end;

mean[x,y] := tot/(nCol*nRow);

pSpectrum[x,y] := tot2/(nCol*nRow) - mean[x,y]; end;

procedure CalculatePixel (x,y:integer; var clrGray:byte); var c:real;

begin

clrGray := ImgGetGray (ImgTemp, x,y);

(68)

* (clrGray-mean[x,y]); clrGray := ByteRange (c);

end;

var

x,y: integer; clrGray: byte;

begin

dx := nCol div 2; dy := nRow div 2;

ImgTemp := TImage.Create (Image.Parent);

ImgTemp.Picture.Graphic := Image.Picture.Graphic;;

mean := VarArrayCreate([0,Image.Width-1, 0,Image.Height-1], varSingle); pSpectrum := VarArrayCreate([0,Image.Width-1, 0,Image.Height-1], varSingle); pSpectrumNoise := 0;

{ parameter }

ProgressBar1.Max := Image.Width; ProgressBar1.Position := 0;

pSpectrumNoise := 0;

for x:=dx to Image.Width-1-dx do begin

for y:=dy to Image.Height-1-dy do begin

CalculateParameter (x,y);

pSpectrumNoise := pSpectrumNoise + pSpectrum[x,y]; Image.Canvas.Pixels[x,y] := RGB (clrGray,clrGray,clrGray); end; { for y }

ProgressBar1.Position := x; end; { for x }

pSpectrumNoise := pSpectrumNoise / (Image.Width-dx)/(Image.Height-dy); ProgressBar1.Position := ProgressBar1.Max;

{ filtering process }

for x:=dx to Image.Width-1-dx do begin

for y:=dy to Image.Height-1-dy do begin

CalculatePixel (x,y, clrGray);

Image.Canvas.Pixels[x,y] := RGB (clrGray,clrGray,clrGray); end; { for y }

ProgressBar1.Position := x; end; { for x }

(69)

end;

(70)

BAB 4

GLOBAL THRESHOLDING

4.1 DASAR TEORI GLOBAL THRESHOLDING

Tresholding adalah suatu metode untuk menghasilkan citra biner hitam (0) dan putih (1), dengan menggunkan rumus sebagai berikut:

1(2,3)= 41 "5#6-(2,3) ≥ 8

0 "5#6-(2,3)<89……….………..4.1

Dengan g(x,y) adalah citra biner dari citra grascale f(x,y), dan T merupakan nilai ambang.

4.2 CARA MEMBUAT PROGRAM THRESOLDING:

1. Klik tombol start lalu Program, Borland Delphi 7, Delphi 7. Nanti akan muncul

[image:70.612.75.535.337.768.2]

gambar berikut:

Gambar 4.1 Start Program

2. P

a d a

(71)

ject inspector berinama captionnya dengan Global Thresholding dan namenya

dengan nama FormGlobalThreshold.

Gambar 4.2 Form Global Thresholding

3. Tambahkan image1, image2, OpenPictureDialog dan button1 ke form. Pada

object inspector stetch kedua image di ganti true, kemudian caption pada

[image:71.612.134.489.424.617.2]

button diganti dengan Open, Namenya dengan btOpen.

Gambar 4.3

(72)
[image:72.612.192.392.96.299.2]

4. Simpan project dan unitnya dengan cara save all.

Gambar 4.4 Save All

5. Beri nama unitnya dengan nama UnitGlobalThresolding. Projectnya dengan

nama ProjectGlobalThresolding.

[image:72.612.148.481.392.521.2]
(73)
[image:73.612.151.489.92.230.2]

6. Berinama Projectnya dengan nama ProjectGlobalThresolding.

Gambar 4.6 Save Project Global Thresolding

7. Doble clik button open, lalu keting program berikut: var

GlobalThreshold: TGlobalThreshold; FileNameImg: string;

implementation

{$R *.dfm}

procedure TGlobalThreshold.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

FileNameImg := OpenPictureDialog1.FileName;

Caption := 'Mammo Analisys : '+ OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); Image2.Visible := False;

end;

(74)

8. Tambahkan button ke form, beri nama captionnya dengan Global Thresolding dan namenya dengan btGlobalThresholding dan tambahkan

[image:74.612.141.508.125.236.2]

juga ProgresBar kedalam form.

Gambar 4.7 Button Thresolding

9. Tambahkan unit dengan cara file new unit.

Gambar 4.8 New Unit

[image:74.612.136.387.299.480.2]
(75)
[image:75.612.165.439.75.274.2]

Gambar 4.9 Save Image Proses

11. Kemudian ketik program berikut pada unit imageproses:

unit ImageProses;

interface

uses

WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;

type

TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real;

function RgbToGray (Clr:TColor) : byte;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

procedure ImgGlobalThresholding (var Image:TImage; var thres:real; var ProgressBar1: TProgressBar);

implementation

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

(76)

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

r := GetRValue(Clr); g := GetGValue(Clr); b := GetBValue(Clr);

RgbToGray := ByteRange (r*PercentR + g*PercentG + b*PercentB); end;

function ImgGetGray (var Image:TImage; x,y:integer) : byte; begin

Result := RgbToGray (Image.Canvas.Pixels[x,y]); end;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

var x,y:integer; ClrGray:byte; begin

ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;

for x:=0 to Image1.Width-1 do begin

for y:=0 to Image1.Height-1 do begin

ClrGray := ImgGetGray (Image1,x,y);

Image1.Canvas.Pixels[x,y] := RGB (ClrGray,ClrGray,ClrGray); end;

Image1.Repaint;

ProgressBar1.Position := x; end;

end;

procedure ImgGlobalThresholding (var Image:TImage; var thres:real; var ProgressBar1: TProgressBar);

var

x,y,counter:integer; m1,m2,n1,n2:real; Clr:TColor; ClrGray:byte; thresOld:real;

begin

ProgressBar1.Max := 5; ProgressBar1.Position := 0; counter := 0;

repeat

thresOld := thres;

(77)

for x:=0 to Image.Width-1 do for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y); if ClrGray<thres then

begin

m1 := m1 + ClrGray; n1 := n1 + 1;

end else begin

m2 := m2 + ClrGray; n2 := n2 + 1;

end; end;

if n1=0 then n1:=1; if n2=0 then n2:=1;

m1 := m1/n1; m2 := m2/n2;

thres := (m1+m2) / 2; Inc (counter);

ProgressBar1.Position := counter;

until (Abs(thresOld-thres)<=3)or(counter=5);

{ tuliskan pixel baru }

for x:=0 to Image.Width-1 do begin

for y:=0 to Image.Height-1 do begin

ClrGray := ImgGetGray (Image,x,y); if ClrGray<thres then

//Image.Canvas.Pixels[x,y] := RGB (0,0,0); Image.Canvas.Pixels[x,y] := clWhite;

end; end;

ProgressBar1.Position := ProgressBar1.Max; end;

end.

12. Tambahkan Label1, Label2, Label3 kemudian ganti captionnya dengan

(78)

Edit (ada pada Standard) ke form beri namenya dengan EditThreshold dan

[image:78.612.145.516.112.310.2]

Text = 12. Seperti berikut ini.

Gambar 4.10 Edit Thresolding

13. Tambahkan program berikut ke UnitGlobalThressolding.

implementation

{$R *.dfm}

uses

ImageProses;

14. Doble klik button Global Thresolding lalu ketik program berikut

procedure TGlobalThreshold.btGlobalThresoldingClick(Sender: TObject);

var thres:real;

begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic; thres := StrToFloatDef (EditThreshold.Text,5);

ImgGlobalThresholding (Image2,thres,ProgressBar1); EditThreshold.Text := IntToStr(Round(thres));

end;

15. Tambahkan button ke dalam form lalu captionnya diganti dengan Exit,

(79)

Gambar 4.11 Button Exit

16. Doble klik button exit kemudin ketik program berikut.

procedure TFormGlobalThreshold.btExitClick(Sender: TObject); begin

FormGlobalThreshold.Close; end;

17.Simpan program dengan save all, kemudian jalankan progran dengan cara

[image:79.612.158.511.80.290.2]

compile kemudian run. Hasilnya sebagai berikut.

Gambar 4.12 Hasil Program Thresolding

(80)

4.3 PROGRAM GLOBAL THRESOLDING

SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitGlobalThresolding;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ExtDlgs, ComCtrls;

type

TFormGlobalThreshold = class(TForm) Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btGlobalThresolding: TButton; ProgressBar1: TProgressBar; EditThreshold: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; btExit: TButton;

procedure btOpenClick(Sender: TObject);

procedure btGlobalThresoldingClick(Sender: TObject); procedure btExitClick(Sender: TObject);

private

{ Private declarations } public

(81)

procedure TFormGlobalThreshold.btOpenClick(Sender: TObject); begin

if OpenPictureDialog1.Execute then begin

FileNameImg := OpenPictureDialog1.FileName;

Caption := 'Mammo Analisys : '+ OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); Image2.Visible := False;

end; end;

procedure TFormGlobalThreshold.btGlobalThresoldingClick(Sender: TObject); var thres:real;

begin

Image2.Visible := True;

Image2.Picture.Graphic := Image1.Picture.Graphic; thres := StrToFloatDef (EditThreshold.Text,5);

ImgGlobalThresholding (Image2,thres,ProgressBar1); EditThreshold.Text := IntToStr(Round(thres));

end;

procedure TFormGlobalThreshold.btExitClick(Sender: TObject); begin FormGlobalThreshold.Close; end; end. unit UnitImageProses; interface uses

WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;

type

TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real;

function RgbToGray (Clr:TColor) : byte;

function ImgGetGray (var Image:TImage; x,y:integer) : byte;

procedure ImgConvertToGrayscale (var Image1:TImage; var ProgressBar1: TProgressBar);

procedure ImgGlobalThresholding (var Image:TImage; var thres:real; var ProgressBar1: TProgressBar);

(82)

const

PercentR = 0.299; PercentG = 0.587; PercentB = 0.114;

function ByteRange (r:double) : byte; begin

if r<0 then ByteRange:=0

else if r>255 then ByteRange:=255 else ByteRange:=Round(r);

end;

function RgbToGray (Clr:TColor) : byte; var r,g,b:byte;

begin

r := GetRValue(Clr); g := GetGValue(Clr); b := GetBValue(Clr);

Gambar

Table 2.3 Hasil Transformasinya :
Gambar 2.21 Save All
Gambar 3.2 New Aplication
Gambar 3.18 Save All
+7

Referensi

Dokumen terkait

Kemudian sistem akan melakukan pengolahan citra dengan menggunakan algoritma deteksi tepi untuk mengetahui tinggi dan lebar dari suatu objek dalam citra.. Selanjut- nya

Secara umum teknik yang digunakan untuk deteksi deteksi keberadaan objek lubang pada jalan raya ini dengan menggunakan pengolahan citra dan jaringan syaraf tiruan

Berdasarkan hasil pengujian, deteksi tepi citra telah dapat dilakukan dengan sempurna untuk semua tipe file citra, sehingga diambil kesimpulan bahwa perangkat lunak

Kemudian system akan melakukan pengolahan citra dengan menggunakan algoritma deteksi tepi untuk mengetahui tinggi dan lebar dari suatu objek dalam citra.. Selanjutnya

Kemudian sistem akan melakukan pengolahan citra dengan menggunakan algoritma deteksi tepi untuk mengetahui tinggi dan lebar dari suatu objek dalam citra.. Selanjut- nya

Gambar 17: Tampilan Layar Hasil Proses Dari Deteksi Tepi Operator Modified Sobel Setelah proses dari analisis perbandingan segmentasi citra pada buah mangga dilakukan dengan deteksi

Hasil Deteksi Tepi Laplacian Gambar 8 merupakan hasil pendeteksian tepi citra dengan menggunakan metode laplacian, pada proses pengujian tampak perbedaan yang mencolok dimana

Halaman Hasil Identifikasi Form hasil identifikasi adalah form yang digunakan untuk melihat hasil proses dari pengimputan data testing berupa gambar untuk klasifikasi ikat tersebut