Anda di halaman 1dari 49

1

HALAMAN PENGESAHAN

Telah dilaksanakan Praktikum ke 6 Mata Kuliah Pengolahan Citra Digital di


Laboratorium Information Processing pada hari Senin, Tgl 17 April 2017 s/d 8 Mei
2017 dengan Materi Praktikum :

PERBAIKAN CITRA DAN HISTOGRAM

( ENHANCEMENT 3 )

Oleh :

Nama : Wahyu Ramadhan


NIM : 1457301017
Kelas : TI 3.2

Disetujui oleh :

Dosen Pengasuh Mata Kuliah Nilai

Sila Abdullah Syakri, S.T., M.T


NIP. 19751205 199903 1 003

1
2

DAFTAR ISI

HALAMAN SAMPUL

HALAMAN PENGESAHAN..................................................................................................i

DAFTAR ISI...........................................................................................................................ii

DAFTAR GAMBAR.............................................................................................................iii

DAFTAR TABEL..................................................................................................................iiv

PRAKTIKUM6 Perbaikan Citra dan Histogram (Enhancement 3).........................................1

6.1 Tujuan Praktikum....................................................................................................1

6.2 Dasar Teori..............................................................................................................1

6.2.1. Invers Citra......................................................................................................1

6.2.2. Kontras Citra....................................................................................................2

6.3 Alat dan Bahan........................................................................................................3

6.4 Tugas Pendahuluan..................................................................................................3

6.5 Langkah Percobaan..................................................................................................4

6.6 Hasil Percobaan.....................................................................................................15

6.7 Tugas dan Latihan..................................................................................................22

6.8 Jawaban Tugas dan Latihan...................................................................................22

6.9 Analisa...................................................................................................................33

6.10 Kesimpulan............................................................................................................65

DAFTAR PUSTAKA............................................................................................................66

DAFTAR GAMBAR

2
3

Gambar 6.1 Transformasi Citra Negatif

Gambar 6.2 Kontras Citra

Gambar 6.3 Form Invers

Gambar 6.4 Output Invers

Gambar 6.5 Form Invers VB.net

Gambar 6.6 Output

Gambar 6.7 Form Kontras

Gambar 6.8 Output Kontras

Gambar 6.9 Form Kontras VB.net

Gambar 6.10 Output Kontras

Gambar 6.11 List Program Invers

Gambar 6.12 List Program

Gambar 6.13 List Program Fit Gambar

Gambar 6.14 Hasil Invers

Gambar 6.15 List Program Form Load

Gambar 6.16List Program Fit Gambar

Gambar 6.17List Program Invers

Gambar 6.18Hasil Invers VB.Net

Gambar 6.19 List Program kontras

Gambar 6.20 List Program Fit Gambar

Gambar 6.21 List Program

Gambar 6.22 List Program HScroll

Gambar 6.23 Hasil Kontras

Gambar 6.24 List Program Form Load

Gambar 6.25 List Program kontras Vb.Net

Gambar 6.26 Program fit gambar

Gambar 6.27 Hasil kontras vb.net

Gambar 6.28 Kontras dengan 16


3
4

Gambar 6.29 Kontras dengan 4

Gambar 6.30 Kontras gelap

Gambar 6.31 Kontras terang

Gambar 6.32 Invers 231

Gambar 6.33 Invers 46

Gambar 6.34 Invers VB.6

Gambar 6.35 Invers VB.net

Gambar 6.36 Kontras 1

Gambar 6.37 Kontras dibawah 1

Gambar 6.38 Kontras vb.6

Gambar 6.39 Kontras vb.net

Gambar 6.40 Kontras gelap

DAFTAR TABEL

Tabel6.1Tabel isian form untuk Invers Citra...........................................................................4

Tabel6.2Tabel isian form untuk Kontras Citra........................................................................7

4
5

Tabel6.3Tabel isian form untuk Invers Citra........................................................................10

Tabel6.3Tabel isian form untuk Kontras Citra......................................................................13

5
6
PRAKTIKUM6

PERBAIKAN CITRA DAN HISTOGRAM

( ENHANCEMENT 3)

6.1 Tujuan Praktikum

1. Mahasiswa dapat membuat program untuk proses Invers citra

2. Mahasiswa dapat membuat program untuk memperjelas Kontras citra

6.2 Dasar Teori

6.2.1. Invers Citra

Inversi citra adalah proses negatif pada citra, misalkan pada photo, dimana
setiap nilai citra dibalik dengan acuan threshold yang diberikan. Proses ini banyak
digunakan pada citra-citra medis seperti USG dan X-Ray. Untuk citra dengan derajat
keabuan 256, proses inversi citra didefinisikan dengan:
xn=255x

Gambar 6.1 Transformasi citra negative


Tranformasi Logaritmik

Tranformasi Logaritmik didefinisikan dengan G = c Log (F +1)

Tranformasi Invers Logaritmik didefinisikan dengan G = c Log (L-F +1)

Dimana G adalah citra hasil, F citra asal, c adalah konstanta yang dipasang sebagai efek
perubahan kontras
2

Transformasi Power Law

Transformasi Power Law ada dua yaitu nth power dan nth root power

Transformasi nth power dedifinisikan dengan G = C F Y

Transformasi nth root power didefinisikan dengan G = C F 1/Y

Dimana G adalah citra hasil, F adalah citra asal, c dan y adalah konstanta positif

6.2.2. Kontras Citra

Kontras dalam suatu citra menyatakan distribusi warna terang dan warna gelap.
Suatu citra berskala keabuan dikatakan memiliki kontras rendah apabila distribusi warna
cenderung pada jangkauan aras keabuan yang sempit. Sebaliknya, citra mempunyai
kontras tinggi apabila jangkauan aras keabuan lebih terdistribusi secara melebar.Kontras
dapat diukur berdasarkan perbedaan antara nilai intensitas tertinggi dan nilai intensitas
terendah yang menyusun piksel-piksel dalam citra.

Alat dan Bahan


1. Laptop Acer Aspire 4920 Intel Core 2 Duo 2.0 Ghz, 3 GB Memory.
2. SoftwareMicrosoft Visual Basic 6.0.
3. Software Microsoft Visual Studio 2008.

6.3 Tugas Pendahuluan

6.3.1 Pertanyaan Tugas Pendahuluan


1. Menuliskantujuanpraktikum
2. Jelaskan cara mengubah citra menjadi invers
3. Jelaskan cara mengubah citra menjadi kontras

6.3.2 Jawaban Tugas Pendahuluan

1. Tujuan praktikum :
Mahasiswa dapat membuat program untuk proses Invers citra
Mahasiswa dapat membuat program untuk memperjelas Kontras citra
2. Cara mengubah citra menjadi invers
3

Proses inversi citra di lakukan dapat dilihat pada persamaan

Contoh :Jika di ketahui suatu titik pixel dengan nilai Intensitas awal 20 dengan
menggunakan persamaan diatas dapat di hitung S = (256-1) - 20, maka akan di
peroleh nilai Inversnya yaitu 235.

3. Caramengubahcitra menjadi kontras


Dapat dilakukan dengan cara mengatur nilai range interval pada setiap
nilaiderajat keabuan, dan dapat didefinisikan dengan melihat pada persamaan.

6.4 Langkah Percobaan

6.5.1. Invers Visual Basic 6.0

1. Membuatlah project baru dengan form dan buat seperti berikut ini :

Gambar 6.3 Form Invers VB.6

1. Mengisi property pada setiap objek dan form sebagai berikut :


Tabel 6.1Tabel Isian Form untuk Invers Citra Visual Basic 6.0

Objek Property Nilai


Form Name Invers Citra
Caption Proses Invers Citra
Picture1 Picture (Import File Gambar)
Appereance Flat
4

Picture2 Appereance Flat


Picture3 Appereance Flat
Picture4 Appereance Flat
Command1 Caption Invers
Command2 Caption Histogram
Command3 Caption Exit

2. Pada tombol Invers mengisikansource program :

Picture4.BackColor = vbWhite
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
Dim xb = 255h1(256)
h(256), -x As Integer
For i Picture1.PSet
= 1 To 256 (i, j), RGB(x, x, x)
h(i)Picture2.PSet
= 0: h1(i) = 0(i, j), RGB(xb, xb, xb)
Next
Next i j
Next i 1 To Picture1.Width Step 15
For i =
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
3. Pada tombol
R = warna Histogram
And RGB(255,mengisikansource
0, 0) program :
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
h(x + 1) = h(x + 1) + 1
Next j
Next i
For i = 1 To Picture2.Width Step 15
For j = 1 To Picture2.Height Step 15
warna2 = Picture2.Point(i, j)
R = warna2 And RGB(255, 0, 0)
g = Int((warna2 And RGB(0, 255, 0)) / 256)
b = Int(Int((warna2 And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
h1(x + 1) = h1(x + 1) + 1
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture3.Line (xp, Picture3.Height - h(i))-(xp, Picture3.Height), RGB(255, 0, 0)
Picture4.Line (xp, Picture4.Height - h1(i))-(xp, Picture4.Height), RGB(255, 0,
255)
5

4. List program untuk fit gambar:

Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Picture1.PaintPicture Picture1.Picture, _
0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _
0, 0, _
Picture1.Picture.Width / 26.46, _
Picture1.Picture.Height / 26.46

Picture1.Picture = Picture1.Image

5. Ouput yang dihasilkan seperti gambar berikut source program :


6

Gambar 6.4 Output Invers VB.6

6.5.2. Invers Visual Studio NET

1. Membuatlah project baru dengan form dan buat seperti berikut ini :

Gambar 6.5 Form Invers VB.Net

2. Mengisi property pada setiap objek dan form sebagai berikut :


Tabel 6.2Tabel isian Form untuk Invers Citra VB.Net

Objek Property Nilai


Form Name Form1
Text Histogram Invers
Picture1 Image (Lokasi File Gambar)
SizeMode StrecthImage
Picture2 Image (Lokasi File Gambar)
SizeMode StrecthImage
Chart2 ChartType Column
Palette SeaGreen
ChartSeries Name Histogram Grayscale
7

Chart2 ChartType Column


Palette EarthTones
ChartSeries Name Histogram Invers
Button1 Text Invers
Button2 Text Exit

3. Pada Form1 atau dibawah Public Class Form1 mengisikansource program :

Public
Dim x, h1(0 To 255) AsInteger
xb AsInteger
Public h2(0 To
Dim gambar1 255)Bitmap(PictureBox1.Image)
AsNew AsInteger
Dim hmaxg1
Dim gambar2 AsNew Bitmap(PictureBox2.Image)
AsInteger
Dim hmaxg2hmaxg1 = 0
AsInteger
hmaxg2 = 0
For i AsInteger = 0 To 255
h1(i) = 0
h2(i) = 0
4. Pada
NextButton1 atau pada tombol Invers mengisikansource program :
For i AsInteger = 0 To PictureBox1.Width - 1
For j AsInteger = 0 To PictureBox1.Height - 1
Dim r AsInteger = gambar1.GetPixel(i, j).R
Dim g AsInteger = gambar1.GetPixel(i, j).G
Dim b AsInteger = gambar1.GetPixel(i, j).B
x = (r + g + b) / 3
xb = 255 - x
If xb >= 255 Then
xb = 255
ElseIf xb <= 0 Then
xb = 0
EndIf
h1(x) = h1(x) + 1
h2(xb) = h2(xb) + 1
gambar1.SetPixel(i, j, Color.FromArgb(x, x,
x))
gambar2.SetPixel(i, j, Color.FromArgb(xb,
xb, xb))
Next j
Next i
PictureBox1.Image = gambar1
PictureBox2.Image = gambar2
For tinggi1 AsInteger = 0 To 255
If h1(tinggi1) > hmaxg1 Then
hmaxg1 = h1(tinggi1)
EndIf
Next
For tinggi2 AsInteger = 0 To 255
If h2(tinggi2) > hmaxg2 Then
hmaxg2 = h2(tinggi2)
EndIf
Next
For i = 0 To 255
Me.Chart1.Series("Series1").Points.AddXY(i, h1(i))
Next
For i = 0 To 255
Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))
Next
8

5. Program untuk fit gambar


PrivateSub Form1_Load(sender AsObject, e AsEventArgs)
HandlesMyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
EndSub

6. Hasil yang diperolah dari citra invers adalah sebagai berikut :

Gambar 6.6 Output Invers VB.Net

6.5.3. Kontras Visual Basic 6.0


1. Membuatlah project baru dengan form dan buat seperti berikut ini :
9

Gambar 6.7 Form Kontras VB.6

2. Mengisi property pada setiap objek dan form sebagai berikut :


Tabel 6.3Tabel Isian Form untuk Kontras Citra Visual Basic 6.0

Objek Property Nilai


Form Name Kontras Citra
Caption Proses Kontras Citra
Picture1 Picture (Import File Gambar)
Appereance Flat
Picture2 Appereance Flat
Picture3 Appereance Flat
Picture4 Appereance Flat
Picture4.BackColor = vbWhite
Command1 Caption Kontras
bg = Val(HScroll1 / 1 )
ForCommand2 Caption Step 15Histogram
i = 1 To Picture1.Width
Command3
For Caption
j = 1 To Picture1.Height StepExit
15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
3. Pada tombol Kontras mengisikansource
g = Int((warna And RGB(0, 255, 0))program
/ 256):
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
cd = bg/255
xb = cd * x
Picture1.PSet (i, j), RGB(x, x, x)
Picture2.PSet (i, j), RGB(xb, xb, xb)
Next j
10

4. Pada tombol Histogram mengisikan source program :

Dim h(256), h1(256) As Integer


For i = 1 To 256
h(i) = 0: h1(i) = 0
Next i
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
h(x + 1) = h(x + 1) + 1
Next j
Next i
For i = 1 To Picture2.Width Step 15
For j = 1 To Picture2.Height Step 15
warna2 = Picture2.Point(i, j)
R = warna2 And RGB(255, 0, 0)
g = Int((warna2 And RGB(0, 255, 0)) / 256)
b = Int(Int((warna2 And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
h1(x + 1) = h1(x + 1) + 1
Next j
Next i
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture3.Line (xp, Picture3.Height - h(i))-(xp, Picture3.Height),
RGB(255, 0, 0)
Picture4.Line (xp, Picture4.Height - h1(i))-(xp, Picture4.Height),
RGB(255, 0, 255)
Next i
11

5. Pada HScroll mengisikan source program :


Private Sub HScroll1_Change()
Text1.Text = Val(HScroll1) / 255
End Sub

6. List program untuk fit gambar :

Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Picture1.PaintPicture Picture1.Picture, _
0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _
0, 0, _
Picture1.Picture.Width / 26.46, _
Picture1.Picture.Height / 26.46

Picture1.Picture = Picture1.Image

7. Hasil yang diperoleh dari citra kontras sebagai berikut :

Gambar 6.8 Output Kontras VB.6


12

6.5.4. Kontras Visual Studio NET


1. Membuatlah project baru dengan form dan buat seperti berikut ini :

Gambar 6.9 Form Kontras VB.Net

2. Mengisi property pada setiap objek dan form sebagai berikut :


Tabel 6.4Tabel isian Form untuk Kontras Citra VB.Net

Objek Property Nilai


Form Name Form1
Text Histogram Kontras
Picture1 Image (Lokasi File Gambar)
SizeMode StrecthImage
Picture2 Image (Lokasi File Gambar)
SizeMode StrecthImage
Chart2 ChartType Column
Palette SeaGreen
ChartSeries Name Histogram Grayscale
Chart2 ChartType Column
Palette EarthTones
ChartSeries Name Histogram Kontras
13

Button1 Text Invers


Button2 Text Exit

3. Pada Form Load mengisikan source program :


Public h1(0 To 255) AsInteger
Public h2(0 To 255) AsInteger
Dim hmaxg1 AsInteger
Dim hmaxg2 AsInteger

4. Pada button kontras mengisikan source program :


Dim x, xb AsInteger
Dim gambar1 AsNew Bitmap(PictureBox1.Image)
Dim gambar2 AsNew Bitmap(PictureBox2.Image)
hmaxg1 = 0
hmaxg2 = 0
For i AsInteger = 0 To 255
h1(i) = 0
h2(i) = 0
Next
Dim nilai AsInteger = TrackBar1.Value * 0.5
For i AsInteger = 0 To PictureBox1.Width - 1
For j AsInteger = 0 To PictureBox1.Height - 1
Dim r AsInteger = gambar1.GetPixel(i, j).R
Dim g AsInteger = gambar1.GetPixel(i, j).G
Dim b AsInteger = gambar1.GetPixel(i, j).B
x = (r + g + b) / 3
xb = (nilai * x)
If xb >= 255 Thenh1(x) = h1(x) + 1
xb == h2(xb)
h2(xb) 255 + 1
ElseIf xb <= 0 Then
gambar1.SetPixel(i, j, Color.FromArgb(x, x,
x)) xb = 0
EndIf gambar2.SetPixel(i, j, Color.FromArgb(xb,
xb, xb))
Next j
Next i
PictureBox1.Image = gambar1
PictureBox2.Image = gambar2
For tinggi1 AsInteger = 0 To 255
If h1(tinggi1) > hmaxg1 Then
hmaxg1 = h1(tinggi1)
EndIf
Next

For tinggi2 AsInteger = 0 To 255


If h2(tinggi2) > hmaxg2 Then
hmaxg2 = h2(tinggi2)
EndIf
Next
For i = 0 To 255
Me.Chart1.Series("Series1").Points.AddXY(i, h1(i))
Next
For i = 0 To 255
Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))
Next

EndSub
14

5. Hasil yang diperoleh dari citra kontras adalah sebagai berikut :

Gambar 6.10 Output Kontras VB.Net


6. Program untuk fit gambar

PrivateSub Form1_Load(sender AsObject, e AsEventArgs)


HandlesMyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
EndSub

6.5 Hasil Percobaan


6.6.1. Invers VB.6
15

Gambar 6.11 List Program Invers

Gambar 6.12 List Program Histogram Invers

Gambar 6.13 List Program fit gambar


16

Gambar 6.14 Hasil Invers VB.6

6.6.2. Invers VB.Net

Gambar 6.15 List Program Form Load

Gambar 6.16ListProgram fit gambar


17

Gambar 6.17 List program Invers


18

Gambar 6.18 Hasil Invers VB.Net

6.6.3. Kontras VB.6

Gambar 6.19 List Program Kontras

Gambar 6.20 List Program fit gambar


19

Gambar 6.21 List Program Histogram Kontras

Gambar 6.22 List Program Hscroll

Gambar 6.23 Hasil Kontras VB.6

6.6.4. Kontras VB.Net


20

Gambar 6.24 List Program Form Load

Gambar 6.25 List Program Kontras VB.Net


21

Gambar 6.26ListProgram fit gambar

Gambar 6.27 Hasil Kontras VB.Net


22

6.6 Tugas & Latihan


1. Ubahlah program dengan kontras positif dan negative dengan HScroll dengan
min -1 dan max 20, value = 10 serta Histogram
2. Buat dan menjelaskan perbedaan antara kondisi invers dengan pengubahan nilai
dengan HScroll
3. Carilah dan jelaskan apa itu HSV, Ycbcr
4. Tampilkan histogram untuk setiap nilai HSV pada setiap kanal
5. Gunakan kamera laptop buat program menangkap objek kemudian tampilan
histogram untuk warna, HSV, Ycbcr, brightness, kontras, dan invers pada satu
form dengan vb6 dan vb.net
6. Buatlah program sharpness vb.6 dan vb.net

6.7 Jawaban Tugas dan Latihan


6.8.1. Kontras Positif dan Negatif (VB.6)
List Program Kontras

Picture4.BackColor = vbWhite
bg = Val(HScroll1) / 10
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna
R = warna AndAnd RGB(255,
RGB(255, 0, 0)0, 0)
g = Int((warna And RGB(0,
g = Int((warna And RGB(0, 255, 255,0))0))/ 256)
/ 256)
b = Int(Int((warna And RGB(0, 0,
b = Int(Int((warna And RGB(0, 0, 255)) / 256) 255)) / 256)/ 256)
/ 256)
x =Program
x =List
(R +(R
g ++ b)
g +/Histogram
3b) / 3
xb = (bg * x)
h(x + 1) = h(x + 1) + 1
NextPicture1.PSet
j (i, j), RGB(x, x, x)
Dim Picture2.PSet
h(256), h1(256) (i, As Integer xb, xb)
j), RGB(xb,
Next i
ForNext
i = 1j To 256
For i = 1 To Picture2.Width Step 15
h(i) = 0: h1(i) = 0
Next
For j i= 1 To Picture2.Height Step 15
Next i
warna2 = Picture2.Point(i, j)
For i = 1 To Picture1.Width Step 15
R = warna2 And RGB(255, 0, 0)
For j = 1 To Picture1.Height Step 15
g = Int((warna2 And RGB(0, 255, 0)) / 256)
warna = Picture1.Point(i, j)
b = Int(Int((warna2 And RGB(0, 0, 255)) / 256) / 256)
x = (R + g + b) / 3
h1(x + 1) = h1(x + 1) + 1
Next j
Next i
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture3.Line (xp, Picture3.Height - h(i))-(xp, Picture3.Height),
RGB(0, 0, 0)
Picture4.Line (xp, Picture4.Height - h1(i))-(xp, Picture4.Height),
RGB(0, 0, 0)
Next i
23

List Program HScroll

Private Sub HScroll1_Change()


Text1.Text = Val(HScroll1)
End Sub
List Program fit gambar

Private Sub Form_Load()


Picture1.AutoSize = True
Picture3.AutoSize = True
End Sub

Output yang dihasilkan

Gambar 6.28 Kontras dengan nilai 16


24

Public h1(0 To 255) AsInteger


Public h2(0 To 255) AsInteger
Dim hmaxg1 AsInteger
Dim hmaxg2 AsInteger
PrivateSub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim x, xb AsInteger
Dim gambar1 AsNew Bitmap(PictureBox1.Image)
Dim gambar2 AsNew Bitmap(PictureBox2.Image)
hmaxg1 = 0
hmaxg2 = 0
For i AsInteger = 0 To 255
h1(i) = 0
h2(i) = 0
Next
Gambar 6.29 Kontras dengan nilai 4
Dim nilai AsInteger = TrackBar1.Value / 10
For i AsInteger = 0 To PictureBox1.Width - 1
For j AsInteger = 0 To PictureBox1.Height - 1
Dim r AsInteger = gambar1.GetPixel(i, j).R
6.8.2. Dim g AsInteger
Kontras = gambar1.GetPixel(i,
Positif dan Negatif (VB.Net) j).G
Dim b AsInteger = gambar1.GetPixel(i, j).B
x = (r + g + b) / 3
xb = (nilai * x)
If xb >= 255 Then
xb = 255
ElseIf xb <= 0 Then
xb = 0
EndIf
h1(x) = h1(x) + 1
h2(xb) = h2(xb) + 1
gambar1.SetPixel(i,j,Color.FromArgb(x,x,x))
gambar2.SetPixel(i, j, Color.FromArgb(xb, xb, xb))
Next j
Next i
PictureBox1.Image = gambar1
PictureBox2.Image = gambar2
For tinggi1 AsInteger = 0 To 255
If h1(tinggi1) > hmaxg1 Then
hmaxg1 = h1(tinggi1)
EndIf
Next
For tinggi2 AsInteger = 0 To 255
If h2(tinggi2) > hmaxg2 Then
hmaxg2 = h2(tinggi2)
EndIf
Next
For i = 0 To 255
Me.Chart1.Series("Series1").Points.AddXY(i,h1(i))
Next
For i = 0 To 255
Me.Chart2.Series("Series1").Points.AddXY(i,h2(i))
Next
EndSub
PrivateSub Form1_Load(sender AsObject, e AsEventArgs)
HandlesMyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
25

PrivateSub TrackBar1_Scroll(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles TrackBar1.Scroll
TextBox1.Text = TrackBar1.Value
EndSub
Output yang dihasilkan

Gambar 6.30Kontras Gelap

Gambar 6.31 Kontras Terang


26

6.8.3. Invers HScroll

Public h1(0 To 255) AsInteger


Public h2(0 To 255) AsInteger
Dim hmaxg1 AsInteger
Dim hmaxg2 AsInteger
PrivateSub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim x, xb AsInteger
Dim gambar1 AsNew Bitmap(PictureBox1.Image)
Dim gambar2 AsNew Bitmap(PictureBox2.Image)
hmaxg1 = 0
hmaxg2 = 0
For i AsInteger = 0 To 255
h1(i) = 0
h2(i) = 0
Next
Dim nilai AsInteger = TrackBar1.Value * 0.5
For i AsInteger = 0 To PictureBox1.Width - 1
For j AsInteger = 0 To PictureBox1.Height - 1
Dim r AsInteger = gambar1.GetPixel(i, j).R
Dim g AsInteger = gambar1.GetPixel(i, j).G
Dim b AsInteger = gambar1.GetPixel(i, j).B
x = (r + g + b) / 3
xb = 255 - x
If xb >= 255 Then
xb = 255
ElseIf xb <= 0 Then
xb = 0
EndIf
h1(x) = h1(x) + 1
h2(xb) = h2(xb) + 1
gambar1.SetPixel(i, j, Color.FromArgb(x, x,
x))
gambar2.SetPixel(i, j, Color.FromArgb(xb,
xb, xb))
Next j
Next i
PictureBox1.Image = gambar1
PictureBox2.Image = gambar2
PrivateSub
For tinggi1 TrackBar1_Scroll(ByVal
AsInteger = 0 To 255 sender As System.Object,
ByVal
If e As System.EventArgs)
h1(tinggi1) > hmaxg1 Then Handles TrackBar1.Scroll
TextBox1.Text
hmaxg1 == TrackBar1.Value
h1(tinggi1)
EndSub
EndIf
EndClass
Next
For tinggi2 AsInteger = 0 To 255
If h2(tinggi2)
Output
PrivateSub > hmaxg2 Then
yang dihasilkan
Form1_Load(sender AsObject, e AsEventArgs)
HandlesMyBase.Load hmaxg2 = h2(tinggi2)
EndIf PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Next
For i = 0 To 255
Me.Chart1.Series("Series1").Points.AddXY(i, h1(i))
Next
For i = 0 To 255
Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))
27

PublicClass Form1
Public h1(0 To 255) AsInteger
Public h2(0 To 255) AsInteger
Dim hmaxg1 AsInteger
Dim hmaxg2 AsInteger
Gambar 6.32 Invers sender
PrivateSub Button1_Click(ByVal dengan nilai 231
As System.Object, ByVal
e As System.EventArgs) Handles Button1.Click
Dim bmp AsNew Bitmap(PictureBox1.Image)
Dim c As Color
Dim r, g, b AsString
Dim data, warna() AsString
Dim h(360), s(100), v(255) AsInteger
Dim h1, s1, v1 AsInteger
For i AsInteger = 0 To PictureBox1.Width - 1
For j AsInteger = 0 To PictureBox1.Height - 1
c = bmp.GetPixel(i, j)
r = CStr(c.R)
g = CStr(c.G)
b = CStr(c.B)
data = rgb2hsv(r + "," + g + "," + b)
warna = data.Split(",")
h1 = CInt(warna(0))
s1 = Math.Floor(warna(1) * 100)
v1 = Math.Floor(warna(2) * 255)
h(h1) = h(h1) + 1
Gambar
s(s1) =6.33 Invers
s(s1) + dengan
1 nilai 46
v(v1) = v(v1) + 1
Next
Next
6.8.4.
DimHSV dan Ycbcr = Chart1.ClientSize.Height
ht AsInteger
6.8.5.
DimProgram HSV
xt AsInteger
For x = 0 To 360
xt = Chart1.ClientSize.Width * x / 360
Me.Chart1.Series("Series1").Points.AddXY(xt, h(x) / 8)
Next
For x = 0 To 100
xt = Chart1.ClientSize.Width * x / 100
Me.Chart2.Series("Series1").Points.AddXY(xt, s(x) / 8)
Next
For x = 0 To 255
xt = Chart1.ClientSize.Width * x / 255
Me.Chart3.Series("Series1").Points.AddXY(xt, v(x) / 8)
Next
EndSub
EndClass
28

6.8.6. Sharpness
Public h1(0 To 255) AsInteger
Public h2(0 To 255) AsInteger
Public h3(0 To 255) AsInteger
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Chart1.Series("Series1").Points.Clear()
Chart2.Series("Series1").Points.Clear()
Chart3.Series("Series1").Points.Clear()
Dim gambar1 AsNew Bitmap(PictureBox1.Image)
Dim gambar2 AsNew Bitmap(PictureBox2.Image)
Dim c() AsInteger
For i AsInteger = 0 To 255
h1(i) = 0
h2(i) = 0
h3(i) = 0
Next
Dim nilai AsInteger = TrackBar1.Value
PublicFunction
For i AsInteger sharp(ByVal bmp As Bitmap,- ByVal
= 0 To PictureBox1.Width 1 i AsInteger,
ByVal
For j AsInteger,
j AsInteger = 0 ByVal val_sharp AsInteger)
To PictureBox1.Height - 1 AsInteger()
Dim r, r1, g, g1, c =b,sharp(gambar1,
b1 AsInteger i, j, nilai)
r1 = bmp.GetPixel(i - 1, j - 1).R
gambar2.SetPixel(i, j, Color.FromArgb(c(0),
g1 =
c(1), c(2))) bmp.GetPixel(i - 1, j - 1).G
b1 = bmp.GetPixel(i
h1(c(0)) -+=1,1 j - 1).B
r = bmp.GetPixel(i,
h2(c(1)) j).R
+= 1
g =Module sharp
bmp.GetPixel(i,
h2(c(2)) j).G
+= 1
b = bmp.GetPixel(i, j).B
Next
Next
Dim clr(2) AsInteger
PitcureBox2.Image
clr(0) = truncate(r + =val_sharp
gambar2 * (r - r1) / 100)
For iclr(1)
= 0 To= 255
truncate(g + val_sharp * (g - g1) / 100)
Me.Chart1.Series("Series1").Points.AddXY(i,
clr(2) = truncate(b + val_sharp * (b - b1) h1(i))
/ 100)
Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))
Me.Chart3.Series("Series1").Points.AddXY(i,
Return clr h3(i))
Next
EndFunction
29

6.8 Analisa

6.9.1. Analisa Program

1. Invers VB.6

Picture4.BackColor = vbWhiteUntuk membuat dan mengatur warna latar


belakang dengan warna putih.

For i = 1 To Picture1.Width Step 15kondisi dimana i bernilai 1 dengan


tujuan ke picture1 untuk mengatur lebar gambar yang ada di picture1.
Kemudian fungsi step adalah dimana perulangan sebanyak 15 kali agar
sempurna proses perulangan. Jika lebih dari 15 maka gambar yang muncul
akan menjadi kotak-kotak baik kecil maupun besar.

For j = 1 To Picture1.Height Step 15kondisi dimana j bernilai 1 dengan


tujuan ke picture1 untuk mengatur lebar gambar yang ada di picture1.
Kemudian fungsi step adalah dimana perulangan sebanyak 15 kali agar
sempurna proses perulangan. Jika lebih dari 15 maka gambar yang muncul
akan menjadi kotak-kotak baik kecil maupun besar.

warna = Picture1.Point(i, j)variable warna yang berfungsi mengambil nilai


dari kondisi for yang ada di for i dan j dari gambar yang berasal dari picture1.
Kemudian nilai tersebut masuk ke variable warna. Jadi fungsi nya adalah
untuk menangkap warna pada sumbu i dan j.

R = warna And RGB(255, 0, 0)inisialisai dari warna merah (red) dengan


nama r yang memiliki kode decimal 255,0,0. Kemudian dengan kondisi And
dimana warna dari gambar picture1 dicocokan dengan warna RGB untuk
warna red.

g = Int((warna And RGB(0, 255, 0)) / 256)inisialisai dari warna hijau


(green) dengan nama g yang memiliki kode decimal 0,255,0 dalam bentuk
30

tipe data integer. Kemudian dengan kondisi And dimana warna dari gambar
picture1 dicocokan dengan warna RGB untuk warna green serta kode dari
warna green dibagi dengan 256.

b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)inisialisai dari warna


biru (blue) dengan nama b yang memiliki kode decimal 0,0,255 dalam bentuk
tipe data integer. Kemudian dengan kondisi And dimana warna dari gambar
picture1 dicocokan dengan warna RGB untuk warna blue serta kode dari
warna blue dibagi dengan 256 dengan 2 kali pembagian.

x = (R + g + b) / 3rumus untuk mencari nilai grayscale dari ketiga nilai RGB


tersebut yang ditambahkan kemudian dibagi 3. Hasil nya masuk ke variable
x.

xb = 255 xrumus untuk mencari invers dari nilai 255 dikurangi nilai x.

Picture1.PSet (i, j), RGB(x, x, x)Memberikan nilai gray-scale pada setiap


pixel rgb.

Picture2.PSet (i, j), RGB(xb, xb, xb)Memberikan nilai invers pada setiap
pixel rgb.

Dim h(256), h1(256) As Integerfungsi untuk mendeklarasikan nilai array h


dan h1.

For i = 1 To 256fungsiperulangan untuk mencetak garis grafik histogram.

h(i) = 0: h1(i) = 0

Next i

2. Invers VB.Net
Public h1(0 To 255) As Integervariable public dengan nama h1 sebagai
Integer.

hmaxg1 = 0hmaxg1 bernilai sama dengan 0.

hmaxg2 = 0hmaxg2 bernilai sama dengan 0.

Dim g As Integer = gambar1.GetPixel(i, j).GPendeklarasian variable g


untuk warna green yang di ambil dari gambar1.
31

PictureBox1.Image = gambar1nilai gambar1 di tampung di picturebox1.

hmaxg2 = h2(tinggi2)nilai h2 ditampung di hmaxg2.

PictureBox1.SizeMode = PictureBoxSizeMode.StretchImageuntuk
membuat gambar fit di picturebox dengan kondisi Strech mengikuti picture
box.

3. Kontras VB.6

Picture4.BackColor = vbWhiteUntuk membuat dan mengatur warna latar


belakang dengan warna putih.

h(x + 1) = h(x + 1) + 1rumus mencari nilai h dengan x+1 untuk menampilkan


nilai histogram.

For i = 1 To Picture2.Width Step 15kondisi dimana i bernilai 1 dengan

x = (R + g + b) / 3rumus untuk mencari nilai grayscale dari ketiga nilai RGB


tersebut yang ditambahkan kemudian dibagi 3. Hasil nya masuk ke variable
x.

h1(x + 1) = h1(x + 1) + 1rumus mencari nilai h dengan x+1 untuk


menampilkan nilai histogram.

For i = 1 To 256Kondisi for untuk perulangan array i.

xp = 15 * (i - 1) + 1

Picture3.Line (xp, Picture3.Height - h(i))-(xp, Picture3.Height),

= Picture1.Imagepicture image diisikan di picture picture.

4. Kontras VB.Net

For tinggi2 As Integer = 0 To 255kondisi perulangan pada variable tinggi2.

If h2(tinggi2) > hmaxg2 Thenkondisi mengecek nilai h2 yang dibandingkan


dengan nilai hmaxg2.
32

hmaxg2 = h2(tinggi2)nilai h2 ditampung di hmaxg2.

End Ifmengakhiri kondisi if.

For i = 0 To 255fungsiperulangan untuk mencetak garis grafik histogram.

Me.Chart1.Series("Series1").Points.AddXY(i, h1(i))untuk menampilkan


histogram grafik grayscale.

For i = 0 To 255fungsiperulangan untuk mencetak garis grafik histogram.

Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))untuk menampilkan


histogram grafik kontras.

PictureBox1.SizeMode = PictureBoxSizeMode.StretchImageuntuk
membuat gambar fit di picturebox dengan kondisi Strech.

5. Latihan 1 (Kontras Positif Negatif VB.6)

For i = 1 To Picture1.Width Step 15kondisi dimana i bernilai 1 dengan


tujuan ke picture1 untuk mengatur lebar gambar yang ada di picture1.
Kemudian fungsi step adalah dimana perulangan sebanyak 15 kali agar
sempurna proses perulangan. Jika lebih dari 15 maka gambar yang muncul
akan menjadi kotak-kotak baik kecil maupun besar.

For j = 1 To Picture1.Height Step 15kondisi dimana j bernilai 1 dengan


tujuan ke picture1 untuk mengatur lebar gambar yang ada di picture1.
Kemudian fungsi step adalah dimana perulangan sebanyak 15 kali agar
sempurna proses perulangan. Jika lebih dari 15 maka gambar yang muncul
akan menjadi kotak-kotak baik kecil maupun besar.

For i = 1 To Picture2.Width Step 15kondisi dimana i bernilai 1 dengan


tujuan ke picture1 untuk mengatur lebar gambar yang ada di picture1.
Kemudian fungsi step adalah dimana perulangan sebanyak 15 kali agar
sempurna proses perulangan. Jika lebih dari 15 maka gambar yang muncul
akan menjadi kotak-kotak baik kecil maupun besar.

Text1.Text = Val(HScroll1)value dari HScroll dimasukkan ke dalam


textbox1
33

Picture1.AutoSize = Truemembuat gambar fit di picture box 1 dengan


kondisi true.

Picture3.AutoSize = Truemembuat gambar fit di picture box 2 dengan


kondisi true.

6. Latihan 1 (Kontras Positif Negatif VB.Net)

Public h1(0 To 255) As Integervariable public dengan nama h1 sebagai


Integer.

Public h2(0 To 255) As Integervariable public dengan nama h2 sebagai


Integer.

Dim hmaxg1 As Integerpendeklarasian variable hmaxg1 dengan Dim


sebagai Integer.

For i = 0 To 255fungsiperulangan untuk mencetak garis grafik histogram.

Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))untuk menampilkan


histogram grafik kontras.

PictureBox1.SizeMode = PictureBoxSizeMode.StretchImageuntuk
membuat gambar fit di picturebox dengan kondisi Strech.

TextBox1.Text = TrackBar1.Valuenilai dari trackbar diambil dan


dimasukkan ke dalam textbox.

7. Latihan 2 (Invers HScroll)

ElseIf xb <= 0 Then

xb = 0varible xb berisi nilai 0

End Ifmengakhiri perintah if

h1(x) = h1(x) + 1perintah untuk mencari nilai untuk histogram grayscale.

fungsiperulangan untuk mencetak garis grafik histogram.


34

Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))untuk menampilkan


histogram grafik Invers.

PictureBox1.SizeMode = PictureBoxSizeMode.StretchImageuntuk
membuat gambar fit di picturebox dengan kondisi Strech.

TextBox1.Text = TrackBar1.Valuenilai dari trackbar diambil dan


dimasukkan ke dalam textbox.

8. HSV

For x = 0 To 360kondisi for dari 0 sampai 360

xt = Chart1.ClientSize.Width * x / 360lebar chart dibagi 360.

Me.Chart1.Series("Series1").Points.AddXY(xt, h(x) / 8)menampilkan


chart1

For x = 0 To 100kondisi for dari 0 sampai 100

xt = Chart1.ClientSize.Width * x / 100lebar chart dibagi 100

Me.Chart2.Series("Series1").Points.AddXY(xt, s(x) / 8)menampilkan


chart2

For x = 0 To 255kondisi for dari 0 sampai 255

xt = Chart1.ClientSize.Width * x / 255lebar chart dibagi 255.

Me.Chart3.Series("Series1").Points.AddXY(xt, v(x) / 8)menampilkan


chart3

9. Sharpness
Me.Chart1.Series("Series1").Points.AddXY(i, h1(i))cetak tampilan chart1.

Me.Chart2.Series("Series1").Points.AddXY(i, h2(i))cetak tampilan chart2.

Me.Chart3.Series("Series1").Points.AddXY(i, h3(i))cetak tampilan chart3.

Dim r, r1, g, g1, b, b1 As Integerpendeklarasian beberapa variable sebagai


Integer.
35

r1 = bmp.GetPixel(i - 1, j - 1).RMengambil nilai pixel dari Red dan nilai i j


kurang 1.

g1 = bmp.GetPixel(i - 1, j - 1).GMengambil nilai pixel dari Green dan nilai i


j kurang 1.

b1 = bmp.GetPixel(i - 1, j - 1).BMengambil nilai pixel dari Blue dan nilai i j


kurang 1.

r = bmp.GetPixel(i, j).RMengambil nilai pixel dari r.

g = bmp.GetPixel(i, j).GMengambil nilai pixel dari g.

b = bmp.GetPixel(i, j).BMengambil nilai pixel dari b.

Dim clr(2) As IntegerPendeklarasian clr3 sebagai Integer


36

6.9.2. Analisa Pembahasan

1. Invers
37

Gambar 6.34Invers VB.6

Gambar 6.35 Invers VB.Net

2. Kontras

Gambar 6.36 Kontras bernilai 1


38

Gambar 6.37Kontras dibawah 1

Gambar6.38Kontras VB.Net

3. Latihan 1 (Kontras Negatif dan Positif)


39

Gambar 6.39Kontras terang

Gambar 6.40Kontras Gelap

4. Latihan 2 (Invers Scroll)


40

Gambar 6.41Invers 231

Gambar 6.42Invers 46
41

6.9 Kesimpulan

Invers adalah proses pengubahan citra gambar menjadi citra gambar positif layaknya

klise foto. histogram yang dihasilkan akan cenderung ke kiri atau kebalikan dari
histogram asli sebelum gambar tersebut diinvers
42

DAFTAR PUSTAKA

Sila Abd Syakri. S.T,M.T. 2014. Perbaikan Citra &Histogram( Enhancement 3 ).


Politeknik Negeri Lhokseumawe : Aceh

Anonim. 2006. PengantarPengolahan Citra. (pdf),(http://informatika.stei.itb.ac.id,


diakses pada 28 April 2017).

OD, Nurhayati, Agustus 2010, "Pembentukan Citra" Volume 14,


eprints.undip.ac.id/20108/1/Multi_pert3.pdfdiakses pada29April 2017

Amin, Miftakul. S.Kom, M.Eng, Desember 2014,"Mengurai Warna


RGB"mafisamin.blog.ugm.ac.id/files/2014/12/hol3-mengurai-warna-RGB.pdf

Riyanto.2006. Dasar Pengolahan Citra Digital (1). Institut Teknologi Sepuluh


Nopember : Surabaya

Wijaya, MC. 2009.Mencari Nilai ThresholdYang Tepat Untuk Perancangan


Pendeteksi Kanker Trofoblas. (pdf),

(http:// journal.uii.ac.id/index.php/Snati/article/view/1176/1002, diakses


pada3Mei2017).

Nana, 2011,Enhancement
Citra(http://nana.lecturer.pens.ac.id/index_files/materi/2011/Citra/Enhance
ment Citra.pdf) diakses pada 4Mei 2017

Munir, Rinaldi, 2010, Perbaikan Kualitas Citra(http://informatika.stei.itb.ac


.id/~rinaldi.munir/2010/Pengolahan%20Citra%20Digital/Bab-7_
Perbaikan%20 Kualitas%20Citra.pdf) diakses pada 4Mei2017
43

Anda mungkin juga menyukai