Anda di halaman 1dari 43

Praktikum 6

PERBAIKAN CITRA (ENHANCEMENT 3)

DI SUSUN OLEH :

NAMA : NUR HALIZA

NIM : 1457301088

KELAS/SEMESTER : 3.4/6

MK : Prak.Pengolahan Citra Digital

No. Prak : 06/PPCD/IT/2017

PRODI : Teknik Informatika

LABORATORIUM INFORMATION PROCESSING

TEKNOLOGI INFORMASI DAN KOMPUTER

POLITEKNIK NEGERI LHOKSEUMAWE

2017
HALAMAN PENGESAHAN
Telah dilaksanakan Praktikum ke-6 Mata Kuliah Pengolahan Citra Digital di Laboratorium
Information Processing pada hari Rabu, Tanggal 10 Mei 2017 s/d 24 Mei 2017 dengan
Materi Praktikum :

PERBAIKAN CITRA (ENHANCEMENT 3)

Oleh

Nama : NUR HALIZA

Nim : 1457301088

Kelas : TI 3.4

Disetujui Oleh :

Dosen Pengasuh Mata kuliah Nilai

Mulyadi, ST., M.Eng


Nip. 19730723 2002121 1 001

i
DAFTAR ISI

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


DAFTAR ISI ................................................................................................................. ii
DAFTAR GAMBAR .................................................................................................... iii
I. TUJUAN PRAKTIKUM ....................................................................................... 1
II. LANDASAN TEORI ......................................................................................... 1
2.1. Inversi Citra ................................................................................................... 1
2.2. Mengubah Kontras ........................................................................................ 2
III. TUGAS PENDAHULUAN ................................................................................... 3
IV. PERCOBAAN .................................................................................................... 4
a. Percobaan Kontras ............................................................................................ 4
b. Percobaan Invers .................................................................................................. 7
V. HASIL PERCOBAAN ........................................................................................ 10
5.1. Tugas dan Latihan ........................................................................................... 10
VI. ANALISA ............................................................................................................ 27
VII. KESIMPULAN.................................................................................................... 39
DAFTAR PUSTAKA .................................................................................................. 39

ii
DAFTAR GAMBAR

Gambar 6. 1 Fungsi transformasi image negative ............................................................ 2

Gambar 6.2 Desain form untuk citra kontras ................................................................... 5

Table 6.1 Tabel Isian Form untuk Kontras ...................................................................... 5

Gambar 6.3 Hasil program kontras .................................................................................. 7

Gambar 6.4 Desain form untuk invers ............................................................................. 8

Table 6.2 Tabel Isian Form untuk Invers ........................................................................ 8

Gambar 6.5 Hasil program invers .................................................................................. 10

Gambar 6.6 Desain form untuk kontras positive dan negative ...................................... 11

Gambar 6.7 Hasil kontras positive dan negative dengan nilai -1 ................................... 15

Gambar 6.8 Hasil kontras positive dan negative dengan nilai 14 ................................... 16

Gambar 6.9 Desain form untuk invers pada Vbnet ....................................................... 16

Gambar 6.10 Hasil Invers dengan min -1 ...................................................................... 20

Gambar 6.11 Hasil Invers dengan max 20 ..................................................................... 21

Gambar 6.12 Desain form setiap HSV pada setiap kanal pada Vbnet ............................ 21

Gambar 6.13 Hasil form setiap HSV pada setiap kanal pada Vbnet .............................. 27

iii
PRAKTIKUM 6
PERBAIKAN CITRA (ENHANCEMENT 3)

I. TUJUAN PRAKTIKUM

1. Mahasiswa dapat membuat program untuk proses Invers citra


2. Mahasiswa dapat membuat program untuk memperjelas Kontras
citra

II. LANDASAN TEORI


2.1.Inversi Citra
Inversi citra adalah proses negative pada citra. Misalkan pada photo,
dimana setiap nilai citra dibalik dengan acuan threshold yang diberikan. Proses
ini banyak digunakan pada citra-citra mediss eperti USG dan X-Ray. Untuk
citra dengan derajat keabuan 256, proses inversi citra didefinisikan dengan:

S = T(r) = (L-1) – r ...................... (6.1)

Dimana :

S = Intensitas baru

L = Nilai intensitas maksimum yaitu 256

r = Intensitas awal

Gambar 6.1 berikut ini menunjukkan fungsi transformasi ke image negative


dimana fungsi T(r) merupakan fungsi transformasi

1
Gambar 6. 1 Fungsi transformasi image negative

2.2.Mengubah Kontras
Mengubah kontras dari suatu citra adalah proses pengaturan nilai range
interval pada setiap nilai derajat keabuan, dan didefinisikan dengan :

xk = k*x ...................... (6.2)

Dimana : x = nilai derajat keabuan

k = nilai kontras

xk = nilai setelah pengaturan kontras.

Kontras menyatakan sebaran terang (lightness) dan gelap (darkness) di


dalam sebuah gambar. Citra dapat dikelompokkan ke dalam tiga kategori
kontras: citra kontras-rendah (low contrast), citra kontras-bagus (good contrast
atau normal contrast), dan citra kontras-tinggi (high contrast). Ketiga kategori
ini umumnya dibedakan secara intuitif.

Citra kontras-rendah dicirikan dengan sebagian besar komposisi


citranya adalah terang atau sebagian besar gelap. Dari histogramnya terlihat
sebagian besar derajat keabuannya terkelompok (clustered) bersama atau hanya
menempati sebagian kecil dari rentang nilai-nilai keabuan yang mungkin. Jika
pengelompokan nilai-nilai pixel berada di bagian kiri (yang berisi nilai keabuan
yang rendah), citranya cenderung gelap. Jika pengelompokan nilai-nilai pixel
berada di bagian kanan (yang berisi nilai keabuan yang tinggi), citranya
cenderung terang. Tetapi, mungkin saja suatu citra tergolong kontras-rendah

2
meskipun tidak terlalu terang atau tidak terlalu gelap bila semua
pengelompokan nilai keabuan berada di tengah histogram.

Citra kontras-bagus memperlihatkan jangkauan nilai keabuan yang lebar


tanpa ada suatu nilai keabuan yang mendominasi. Histogram citranya
memperlihatkan sebaran nilai keabuan yang relatif seragam.

Citra kontras-tinggi, seperti halnya citra kontras bagus, memiliki


jangkauan nilai keabuan yang lebar, tetapi terdapat area yang lebar yang
didominasi oleh warna gelap dan area yang lebar yang didominasi oleh warna
terang, (Munir, 2004). Gambar dengan langit terang denganlatar depan yang
gelap adalah contoh citra kontras-tinggi. Pada histogramnya terlihat dua
puncak, satu pada area nilai keabuan yang rendah dan satu lagi pada area nilai
keabuan yang tinggi.

Citra dengan kontras-rendah dapat diperbaiki kualitasnya dengan


operasi peregangan kontras. Melalui operasi ini, nilai-nilai keabuan pixel akan
merentang dari 0 sampai 255 (pada citra 8-bit), dengan kata lain seluruh nilai
keabuan pixel terpakai secara merata.

III. TUGAS PENDAHULUAN

1. Tuliskan tujuan praktikum


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

 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
Proses inversi citra di lakukan dengan:

3
S = T(r) = (L-1) – r

Dimana :

S = Intensitas baru

L = Nilai intensitas maksimum yaitu 256

r = Intensitas awal

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. Cara mengubah citra menjadi kontras


Dapat dilakukan dengan cara mengatur nilai range interval pada setiap
nilai derajat keabuan, dan dapat didefinisikan dengan :
xk = k*x
Dimana :
x = nilai derajat keabuan
k = nilai kontras
xk = nilai setelah pengaturan kontras

IV. PERCOBAAN
a. Percobaan Kontras
1.Membuatlah project baru pada VB 6.0 dengan menekan CTRL+Z
2. Desain Form seperti pada gambar dibawah ini :

4
Gambar 6.2 Desain form untuk citra kontras

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

Table 6.1 Tabel Isian Form untuk Kontras

Objek Property Nilai


Form Name Kotras
Caption Mengatur Kontras Citra
Picture1 Picture Nama File Gambar
Appereance Flat
Picture2 Appereance Flat
Picture3 Appereance Flat
Picture4 Appereance Flat
Command1 Caption Mengatur Kontras
Command2 Caption Histogram
Command3 Caption Keluar
Hscroll1 Min 1
Max 255
Value 0

4. Isikan program dibawah ini pada CommandButton1 (Mengatur


Kontras):
Private Sub Command1_Click()
•ebg = Val(Text1)

5
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 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)
xb = x * bg
If xb >= 0 Then
xb = xb * 1
Else
xb = xb * (-1)
End If
Picture1.PSet (i, j), RGB(x, x, x)
Picture3.PSet (i, j), RGB(xb, xb, xb)
Next j
Next i
End Sub

5. Dan isikan program dibawah ini pada CommandButton2 (Histogram) :


Private Sub Command2_Click()
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 = Int((r + g + b) / 3)
h(x + 1) = h(x + 1) + 1
Next j
Next i
For i = 1 To Picture3.Width Step 15
For j = 1 To Picture3.Height Step 15
warna = Picture3.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 = Int((r + g + b) / 3)
h(x + 1) = h(x + 1) + 1
Next j

6
Next i
ht2 = Picture3.Height - 150
wp3 = Picture2.Width
wp4 = Picture4.Width
Picture2.Line (0, ht2)-(wp3, ht2), RGB(255, 0,
0)
Picture4.Line (0, ht2)-(wp4, ht2), RGB(255, 0,
0)
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 255)
Picture4.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 255)
Next i
End Sub

Private Sub Command3_Click()


Unload Me
End Sub

6. Simpan form dengan nama Citra Kontras


Hasil yang diperoleh :

Gambar 6.3 Hasil program kontras

b. Percobaan Invers

1. Membuat Form baru, lalu desain seperti pada gambar dibawah ini :

7
Gambar 6.4 Desain form untuk invers

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

Table 6.2 Tabel Isian Form untuk Invers

Objek Property Nilai


Form Name Invers
Caption Mengatur Invers Citra
Picture1 Picture Nama File Gambar
Appereance Flat
Picture2 Appereance Flat
Picture3 Appereance Flat
Picture4 Appereance Flat
Command1 Caption Invers Citra
Command2 Caption Histogram
Command3 Caption Keluar

3. Isikan program dibawah ini pada CommandButton1 (Invers Citra):


Private Sub Command1_Click()
•ebg = Val(Text1)
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 And RGB(255, 0, 0)
8
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)
xb = x * bg
If xb >= 0 Then
xb = xb * 1
Else
xb = xb * (-1)
End If
Picture1.PSet (i, j), RGB(x, x, x)
Picture3.PSet (i, j), RGB(xb, xb, xb)
Next j
Next i
End Sub

4. Dan isikan program dibawah ini pada CommandButton2 (Histogram) :


Private Sub Command2_Click()
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 = Int((r + g + b) / 3)
h(x + 1) = h(x + 1) + 1
Next j
Next i
For i = 1 To Picture3.Width Step 15
For j = 1 To Picture3.Height Step 15
warna = Picture3.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 = Int((r + g + b) / 3)
h(x + 1) = h(x + 1) + 1
Next j
Next i
ht2 = Picture3.Height - 150
wp3 = Picture2.Width
wp4 = Picture4.Width
Picture2.Line (0, ht2)-(wp3, ht2), RGB(255, 0,

9
0)
Picture4.Line (0, ht2)-(wp4, ht2), RGB(255, 0,
0)
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 255)
Picture4.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 255)
Next i
End Sub

Private Sub Command3_Click()


Unload Me
End Sub

5. Simpan form dengan nama Citra Kontras


Hasil yang diperoleh :

Gambar 6.5 Hasil program invers

V. HASIL PERCOBAAN

5.1. Tugas dan Latihan

10
Buat Tugas Dengan VB Net
1. Ubah 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. Tampilkan Histogram Untuk Setiap nilai HSV Pada setiap
kanal

Jawab:
1. Program dengan kontras positif dan negative dengan Hscroll dengan
min -1 dan max 20, serta histogram

Gambar 6.6 Desain form untuk kontras positive dan negative

11
Program VB6 :

Public Class Form1


Public his1(0 To 255) As Integer
Public his2(0 To 255) As Integer
Public hmax1 As Integer
Public hmax2 As Integer
Private Sub TrackBar1_Scroll(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles TrackBar1.Scroll
TextBox1.Text = TrackBar1.Value
End Sub

Private Sub Button1_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim nilai As Integer =
Int(TextBox1.Text)
Dim i, j As Integer
Dim abu, xb, merah, hijau, biru As
Double
Dim gambar = New
Bitmap(PictureBox1.Image)
For i = 0 To gambar.Width - 1
For j = 0 To gambar.Height - 1
merah = gambar.GetPixel(i, j).R
hijau = gambar.GetPixel(i, j).G
biru = gambar.GetPixel(i, j).B
abu = (merah + hijau + biru) / 3
gambar.SetPixel(i, j,
Color.FromArgb(abu, abu, abu))
Next
PictureBox1.Image = gambar
Next

Dim gambar2 = New


Bitmap(PictureBox1.Image)
For i = 0 To gambar2.Width - 1
For j = 0 To gambar2.Height - 1
abu = gambar2.GetPixel(i, j).R
xb = nilai * abu
If xb > 255 Then xb = 255
If xb < 0 Then xb = 0
gambar2.SetPixel(i, j,
Color.FromArgb(xb, xb, xb))
Next
PictureBox2.Image = gambar2
Next
12
End Sub

Private Sub Button2_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
hmax1 = 0
hmax2 = 0

Dim gambar As New


Bitmap(PictureBox1.Image) 'Inisialisasi Nilai
Histogram ke 0
Dim gambar2 As New
Bitmap(PictureBox2.Image)
For i As Integer = 0 To 255
his1(i) = 0
his2(i) = 0
Next

'Pengambilan nilai histogram


For j As Integer = 0 To gambar.Width - 1
For k As Integer = 0 To
gambar.Height - 1
Dim abu As Integer =
gambar.GetPixel(j, k).R
his1(abu) = his1(abu) + 1
Next
Next

For j As Integer = 0 To gambar2.Width -


1
For k As Integer = 0 To
gambar2.Height - 1
Dim cont As Integer =
gambar2.GetPixel(j, k).R
his2(cont) = his2(cont) + 1
Next
Next

'Mencari nilai maximum dari histogram


warna merah
For m As Integer = 0 To 255
If his1(m) > hmax1 Then
hmax1 = his1(m)
End If
Next

For n As Integer = 0 To 255


If his2(n) > hmax2 Then
hmax2 = his2(n)
13
End If
Next

PictureBox3.Invalidate()
PictureBox4.Invalidate()
End Sub

Private Sub PictureBox3_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
PictureBox3.Paint
If hmax1 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = PictureBox3.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his1(i) / hmax1)
Dim x As Integer = PictureBox3.Width
* i / 256
Using penaR As New Pen(Color.Red, 2)
e.Graphics.DrawLine(penaR, x, h
- tmax, x, h)
End Using
Next
End Sub

Private Sub PictureBox4_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
PictureBox4.Paint
If hmax2 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = PictureBox4.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his2(i) / hmax2)
Dim x As Integer = PictureBox4.Width
* i / 256
Using penaR As New Pen(Color.Red, 2)
e.Graphics.DrawLine(penaR, x, h
- tmax, x, h)
End Using
Next
End Sub

Private Sub Form1_Load(sender As Object, e


As EventArgs) Handles MyBase.Load
PictureBox1.SizeMode =
14
PictureBoxSizeMode.StretchImage
PictureBox2.SizeMode =
PictureBoxSizeMode.StretchImage
End Sub
End Class

Output :

Gambar 6.7 Hasil kontras positive dan negative dengan nilai -1

15
Gambar 6.8 Hasil kontras positive dan negative dengan nilai 14
2. Menjelaskan perbedaan antara kondisi invers dengan pengubahan
nilai dengan HScroll.

Gambar 6.9 Desain form untuk invers pada Vbnet

16
Program VBnet :
Public Class Invers

Public his1(0 To 255) As Integer


Public his2(0 To 255) As Integer
Public hmax1 As Integer
Public hmax2 As Integer

Private Sub Button1_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim i, j As Integer
Dim abu, xb, merah, hijau, biru As
Double
Dim gambar = New
Bitmap(PictureBox1.Image)
For i = 0 To gambar.Width - 1
For j = 0 To gambar.Height - 1
merah = gambar.GetPixel(i, j).R
hijau = gambar.GetPixel(i, j).G
biru = gambar.GetPixel(i, j).B
abu = (merah + hijau + biru) / 3
gambar.SetPixel(i, j,
Color.FromArgb(abu, abu, abu))
Next
PictureBox1.Image = gambar
Next

Dim gambar2 = New


Bitmap(PictureBox1.Image)
For i = 0 To gambar2.Width - 1
For j = 0 To gambar2.Height - 1
abu = gambar2.GetPixel(i, j).R
xb = 255 - abu
If xb > 255 Then xb = 255
If xb < 0 Then xb = 0
gambar2.SetPixel(i, j,
Color.FromArgb(xb, xb, xb))
Next
PictureBox2.Image = gambar2
Next
End Sub

Private Sub Button2_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
hmax1 = 0
hmax2 = 0

17
Dim gambar As New
Bitmap(PictureBox1.Image) 'Inisialisasi Nilai
Histogram ke 0
Dim gambar2 As New
Bitmap(PictureBox2.Image)
For i As Integer = 0 To 255
his1(i) = 0
his2(i) = 0
Next

'Pengambilan nilai histogram


For j As Integer = 0 To gambar.Width - 1
For k As Integer = 0 To
gambar.Height - 1
Dim abu As Integer =
gambar.GetPixel(j, k).R
his1(abu) = his1(abu) + 1
Next
Next

For j As Integer = 0 To gambar2.Width -


1
For k As Integer = 0 To
gambar2.Height - 1
Dim inv As Integer =
gambar2.GetPixel(j, k).R
his2(inv) = his2(inv) + 1
Next
Next

'Mencari nilai maximum dari histogram


warna merah
For m As Integer = 0 To 255
If his1(m) > hmax1 Then
hmax1 = his1(m)
End If
Next

For n As Integer = 0 To 255


If his2(n) > hmax2 Then
hmax2 = his2(n)
End If
Next

PictureBox3.Invalidate()
PictureBox4.Invalidate()
End Sub

18
Private Sub PictureBox3_Paint(ByVal sender
As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
PictureBox3.Paint
If hmax1 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = PictureBox3.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his1(i) / hmax1)
Dim x As Integer = PictureBox3.Width
* i / 256
Using penaR As New Pen(Color.Red, 2)
e.Graphics.DrawLine(penaR, x, h
- tmax, x, h)
End Using
Next
End Sub

Private Sub PictureBox4_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
PictureBox4.Paint
If hmax2 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = PictureBox4.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his2(i) / hmax2)
Dim x As Integer = PictureBox4.Width
* i / 256
Using penaR As New Pen(Color.Red, 2)
e.Graphics.DrawLine(penaR, x, h
- tmax, x, h)
End Using
Next
End Sub

Private Sub TrackBar1_Scroll(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles TrackBar1.Scroll
TextBox1.Text = TrackBar1.Value
End Sub
End Class

19
Output VBnet :

Gambar 6.10 Hasil Invers dengan min -1

20
Gambar 6.11 Hasil Invers dengan max 20

3. Menampilkan Histogram Untuk Setiap nilai HSV Pada setiap kanal

Gambar 6.12 Desain form setiap HSV pada setiap kanal pada Vbnet

Program VBnet :
Public Class Kanal
Public his1(0 To 255) As Integer
Public his2(0 To 255) As Integer
21
Public his3(0 To 255) As Integer
Public hmax1 As Integer
Public hmax2 As Integer
Public hmax3 As Integer
Public H As Double, S As Double, V As
Double
Public max As Double
Public min As Double
Public RR, GG, BB As Integer

Sub Hitung_HSV()
End Sub
Private Sub Button1_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
hmax1 = 0
hmax2 = 0
hmax3 = 0

Dim gambar01 As New


Bitmap(gambar1.Image)
Dim gambar02 As New
Bitmap(gambar1.Image)
Dim gambar03 As New
Bitmap(gambar1.Image)

For i As Integer = 0 To 255


his1(i) = 0
his2(i) = 0
his3(i) = 0
Next

'Pengambilan nilai histogram


For j As Integer = 0 To
gambar01.Width - 1
For k As Integer = 0 To
gambar01.Height - 1
Dim merah As Integer =
gambar01.GetPixel(j, k).R
his1(merah) = his1(merah) +
1
gambar01.SetPixel(j, k,
Color.FromArgb(merah, 0, 0))
Next
kanal1.Image = gambar01
Next

For j As Integer = 0 To
gambar02.Width - 1
22
For k As Integer = 0 To
gambar02.Height - 1
Dim hijau As Integer =
gambar02.GetPixel(j, k).G
his2(hijau) = his2(hijau) +
1
gambar02.SetPixel(j, k,
Color.FromArgb(0, hijau, 0))
Next
kanal2.Image = gambar02
Next

For j As Integer = 0 To
gambar03.Width - 1
For k As Integer = 0 To
gambar03.Height - 1
Dim biru As Integer =
gambar03.GetPixel(j, k).B
his3(biru) = his3(biru) + 1
gambar03.SetPixel(j, k,
Color.FromArgb(0, 0, biru))
Next
kanal3.Image = gambar03
Next

'Mencari nilai maximum dari


histogram warna merah
For m As Integer = 0 To 255
If his1(m) > hmax1 Then
hmax1 = his1(m)
End If
Next

For n As Integer = 0 To 255


If his2(n) > hmax2 Then
hmax2 = his2(n)
End If
Next

For o As Integer = 0 To 255


If his3(o) > hmax3 Then
hmax3 = his3(o)
End If
Next

hiskanal1.Invalidate()
hiskanal2.Invalidate()
hiskanal3.Invalidate()

23
End Sub

Private Sub hiskanal1_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
hiskanal1.Paint
If hmax1 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = hiskanal1.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his1(i) / hmax1)
Dim x As Integer =
hiskanal1.Width * i / 256
Using penaR As New
Pen(Color.Red, 2)
e.Graphics.DrawLine(penaR,
x, h - tmax, x, h)
End Using
Next
End Sub

Private Sub hiskanal2_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
hiskanal2.Paint
If hmax2 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = hiskanal1.Height
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his2(i) / hmax2)
Dim x As Integer =
hiskanal1.Width * i / 256
Using penaR As New
Pen(Color.Green, 2)
e.Graphics.DrawLine(penaR,
x, h - tmax, x, h)
End Using
Next
End Sub

Private Sub hiskanal3_Paint(ByVal sender


As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
hiskanal3.Paint
If hmax3 <= 0 Then Exit Sub 'kalau
tinggi kurang dari 0 next step
Dim h As Integer = hiskanal1.Height
24
For i As Integer = 0 To 255
Dim tmax As Integer = CInt(h *
his3(i) / hmax3)
Dim x As Integer =
hiskanal1.Width * i / 256
Using penaR As New
Pen(Color.Blue, 2)
e.Graphics.DrawLine(penaR,
x, h - tmax, x, h)
End Using
Next
End Sub
Private Sub Button2_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
hmax1 = 0
hmax2 = 0
hmax3 = 0

Dim gambar00 As New


Bitmap(gambar1.Image)
Dim gambar01 As New
Bitmap(gambar1.Image)
Dim gambar02 As New
Bitmap(gambar1.Image)
Dim gambar03 As New
Bitmap(gambar1.Image)
For i As Integer = 0 To 255
his1(i) = 0
his2(i) = 0
his3(i) = 0
Next

For j As Integer = 0 To
gambar00.Width - 1
For k As Integer = 0 To
gambar00.Height - 1
RR = gambar00.GetPixel(j,
k).R
RR = RR / 255
GG = gambar00.GetPixel(j,
k).G
GG = GG / 255
BB = gambar00.GetPixel(j,
k).B
BB = BB / 255

'Hitung_HSV()
max = RR
25
If max < GG Then max = GG
If max < BB Then max = BB

min = RR
If min > GG Then min = GG
If min > BB Then min = BB

If max = min Then


H = 0
ElseIf max = RR Then
H = 60 * (((GG - BB) /
(max - min)) Mod 6)
ElseIf max = GG Then
H = 60 * (((BB - RR) /
(max - min)) + 2)
ElseIf max = BB Then
H = 60 * (((RR - GG) /
(max - min)) + 4)
End If

If H < 0 Then H = H + 360


Dim VV As Double = max
If max = min Then
S = 0
Else
S = (max - min) / VV
End If

'konversi HSV
H = H * 255 / 360
S = S * 255
V = VV * 255

gambar00.SetPixel(j, k,
Color.FromArgb(H, S, V))
Next
gambar2.Image = gambar00
Next
End Sub

Private Sub Label3_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles Label3.Click

End Sub
End Class

26
Output :

Gambar 6.13 Hasil form setiap HSV pada setiap kanal pada Vbnet

VI. ANALISA

 Program Kontras
Private Sub Command1_Click()‘Pendeklarasian sub
method Command1_Click dengan modified private,
method ini memberikan aksi ketika button
command1 di klik

Picture4.BackColor = vbWhite ‘Mengatur warna


background menjadi putih

27
bg = Val(HScroll1) ‘Menampung nilai Scroll dalam
variabel bg

For i = 1 To Picture1.Width Step 15 ‘Perulangan


matrix untuk lebar gambar, yaitu dimulai dari
index 1 sampai lebar Picture 1

For j = 1 To Picture1.Height Step 15 ‘Perulangan


matrix untuk tinggi gambar, yaitu dimulai dari
index 1 sampai tinggi Picture 1

warna = Picture1.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
grey-scale nya.

xb = (bg * x) ‘Fungsi perkalian nilai kontras

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 hasil brightness pada setiap
pixel rgb

28
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar

Next i ‘Mengakhiri perulangan matrix untuk lebar


gambar
End Sub
Private Sub Command2_Click()

Dim h(256) As Integer ‘pendeklarasian array h

For i = 1 To 256 ‘untuk perulangan nilai arry h


h(i) = 0
Next i
For j = 1 To Picture1.Height Step 15 ‘Perulangan
matrix untuk tinggi gambar, yaitu dimulai dari
index 1 sampai tinggi Picture 1

warna = Picture1.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
grey-scale nya.

h(x + 1) = h(x + 1) + 1

29
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar

Next i ‘Mengakhiri perulangan matrix untuk lebar


gambar

For j = 1 To Picture2.Height Step 15 ‘Perulangan


matrix untuk tinggi gambar, yaitu dimulai dari
index 1 sampai tinggi Picture 1

warna = Picture2.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
grey-scale nya.

h(x + 1) = h(x + 1) + 1
h1(x + 1) = h1(x + 1) + 1
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar

Next i ‘Mengakhiri perulangan matrix untuk lebar


gambar
For i = 1 To 256 ‘perulangan untuk mencetak
garis garfik histogram

30
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 0) ‘menggambarkan grafik histogram pada layar
dengan warna hitam

Picture4.Line (xp, Picture4.Height - h1(i))-(xp,


Picture4.Height), RGB(0, 0, 0) ‘menggambarkan
grafik histogram pada layar dengan warna hitam

Next i ‘untuk mengakhiri perulangan for


Private Sub Command2_Click()‘Pendeklarasian sub
method Command2_Click dengan modified private,
method ini memberikan aksi ketika button
command2 di klik

Unload Me ‘Fungsi untuk mengakhiri program

End Sub ‘Mengakhiri sub method Command2_Click

‘Untuk menampilkan text value dari fungsi scroll


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

 Program Invers
Private Sub Command1_Click()‘Pendeklarasian sub
method Command1_Click dengan modified private,
method ini memberikan aksi ketika button
command1 di klik

Picture4.BackColor = vbWhite ‘Mengatur warna


background menjadi putih

bg = Val(HScroll1) ‘Menampung nilai Scroll dalam


variabel bg

For i = 1 To Picture1.Width Step 15 ‘Perulangan


matrix untuk lebar gambar, yaitu dimulai dari
index 1 sampai lebar Picture 1

For j = 1 To Picture1.Height Step 15 ‘Perulangan


matrix untuk tinggi gambar, yaitu dimulai dari

31
index 1 sampai tinggi Picture 1

warna = Picture1.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
grey-scale nya.

xb = bg – x ‘Perhitungan nilai Invers, yaitu


nilai maksimum yang di ada pada variabel bg di
kurang dengan nilai x

‘Karena suatu kanal hanya dapat menapung nilai


positif maka di berikan kondisi, yaitu jika
perhitungan xb menghasilkan nilai negatif maka
akan di kalikan dengan -1 sehingga nilai xb
menjadi positif
If xb < 0 Then
xb = xb * (-1)
Else
xb = xb * 1
End If

Picture1.PSet (i, j), RGB(x, x, x) ‘Memberikan


32
nilai gray-scale pada setiap pixel rgb

Picture2.PSet (i, j), RGB(xb, xb, xb)


‘Memberikan nilai hasil brightness pada setiap
pixel rgb

Next j ‘Mengakhiri perulangan matrix untuk


tinggi gambar

Next i ‘Mengakhiri perulangan matrix untuk lebar


gambar
End Sub
Private Sub Command2_Click()

Dim h(256) As Integer ‘pendeklarasian array h

For i = 1 To 256 ‘untuk perulangan nilai arry h


h(i) = 0
Next i
For j = 1 To Picture1.Height Step 15 ‘Perulangan
matrix untuk tinggi gambar, yaitu dimulai dari
index 1 sampai tinggi Picture 1

warna = Picture1.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
33
grey-scale nya.

h(x + 1) = h(x + 1) + 1
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar

Next i ‘Mengakhiri perulangan matrix untuk lebar


gambar

For j = 1 To Picture2.Height Step 15 ‘Perulangan


matrix untuk tinggi gambar, yaitu dimulai dari
index 1 sampai tinggi Picture 1

warna = Picture2.Point(i, j) ‘Untuk mengambil


setiap titik pixel matrix yang ada pada gambar

r = warna And RGB(255, 0, 0) ‘Untuk mengambil


nilai warna merah dari satu titik pixel matrix

g = Int((warna And RGB(0, 255, 0)) / 256) ‘Untuk


mengambil nilai warna hijau dari satu titik
pixel matrix

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


256) ‘Untuk mengambil nilai warna biru dari satu
titik pixel matrix

x = (r + g + b) / 3 ‘Untuk melakukan konversi


dengan mengambil rata-rata dari nilai r, g, dan
b, sehingga menghasilkan nilai x sebagai nilai
grey-scale nya.

h(x + 1) = h(x + 1) + 1
h1(x + 1) = h1(x + 1) + 1
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar

34
Next i ‘Mengakhiri perulangan matrix untuk lebar
gambar
For i = 1 To 256 ‘perulangan untuk mencetak
garis garfik histogram
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - h(i))-(xp, ht2), RGB(0,
0, 0) ‘menggambarkan grafik histogram pada layar
dengan warna hitam

Picture4.Line (xp, Picture4.Height - h1(i))-(xp,


Picture4.Height), RGB(0, 0, 0) ‘menggambarkan
grafik histogram pada layar dengan warna hitam

Next i ‘untuk mengakhiri perulangan for


Private Sub Command2_Click()‘Pendeklarasian sub
method Command2_Click dengan modified private,
method ini memberikan aksi ketika button
command2 di klik

Unload Me ‘Fungsi untuk mengakhiri program

End Sub ‘Mengakhiri sub method Command2_Click

‘Untuk menampilkan text value dari fungsi scroll


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

 Histogram HSV
Public Class Form1 ‘Deklarasi class Form1 dengan
modified public
Public graf1, graf2, graf3 As Graphics
‘Deklarasi Objek graf1, graf2, graf3 dengan tipe
data Graphics
Private Sub Histogram_Click() Handles
Histogram.Click ‘Deklarasi sub method
Histogram_click dengan modified private, sub
method ini memberikan aksi ketika button
histogram di klik
Dim bmp As New Bitmap(PictureBox1.Image)
‘Deklarasi variabel bmp dengan tipe data bitmap
yang mengambil nilai image dari picturebox1

35
Dim c As Color ‘Deklarasi objek c dengan
tipe data color
Dim r, g, b As String ‘Deklarasi objek
r, g, b dengan tipe data String
Dim data, warna() As String ‘Deklarasi
objek data dan array warna dengan tipe data
string
Dim h(360), s(100), v(255) As Integer
‘Deklarasi objek array h, s, v dengan tipe data
integer
Dim h1, s1, v1 As Integer ‘Deklarasi
objek h1, s1, v1 dengan tipe data integer
graf1 = Hue.CreateGraphics ‘Memberikan
nilai hue ke dalam variabel graf1 yang nantinya
di gunakan untuk menggambar grafik
graf2 = Saturation.CreateGraphics
‘Memberikan nilai saturation ke dalam variabel
graf2 yang nantinya di gunakan untuk menggambar
grafik
graf3 = Values.CreateGraphics
‘Memberikan nilai values ke dalam variabel graf3
yang nantinya di gunakan untuk menggambar grafik
For i = 0 To PictureBox1.Width – 1
‘Perulangan matrix untuk lebar gambar, yaitu
dimulai dari index 0 sampai lebar PictureBox1
For j = 0 To PictureBox1.Height – 1
‘Perulangan matrix untuk tinggi gambar, yaitu
dimulai dari index 0 sampai lebar PictureBox1
c = bmp.GetPixel(i, j)
‘Mengambil nilai pixel dari bitmap PictureBox1
r = CStr(c.R) ‘Mengambil nilai
warna merah dari setiap pixel
g = CStr(c.G) ‘Mengambil nilai
warna hijau dari setiap pixel
b = CStr(c.B) ‘Mengambil nilai
warna biru dari setiap pixel
data = rgb2hsv(r + "," + g + ","
+ b) ‘Konversi nilai rgb ke hsv yang di tapung
nilainya pada variabel data

36
warna = data.Split(",")
‘Memilah data warna dan membaginya ke dalam
nilai h, s, v
h1 = CInt(warna(0))
s1 = Math.Floor(warna(1) * 100)
v1 = Math.Floor(warna(2) * 255)
h(h1) = h(h1) + 1 ‘Digunakan
untuk kenaikan step grafik pada histogram hue
s(s1) = s(s1) + 1 ‘Digunakan
untuk kenaikan step grafik pada histogram
Saturation
v(v1) = v(v1) + 1 ‘Digunakan
untuk kenaikan step grafik pada histogram Value
Next ’Mengakhiri perulangan matrix
untuk tinggi gambar
Next ’Mengakhiri perulangan matrix untuk
lebar gambar
Dim ht As Integer =
Hue.ClientSize.Height ’Deklarasi variabel ht
yang menampung nilai tinggi untuk histogram hue
Dim xt As Integer ’Deklarasi objek xt
dengan tipe data integer
For x = 0 To 360 ’Perulangan untuk
grafik histogram hue yaitu dimulai dari 0 sampai
360
xt = Hue.ClientSize.Width * x / 360
’Digunakan untuk menyesuaikan lebar grafik
graf1.DrawLine(Pens.SpringGreen, xt,
ht - CInt(h(x) / 8), xt, ht) ’Digunakan untuk
menggambarkan grafik dengan fungsi DrawLine
Next ’Mengakhiri perulangan untuk grafik
histogram hue
For x = 0 To 100 ’Perulangan untuk
grafik histogram saturation yaitu dimulai dari 0
sampai 100
xt = Hue.ClientSize.Width * x / 100
’Digunakan untuk menyesuaikan lebar grafik
graf2.DrawLine(Pens.Salmon, xt, ht -

37
CInt(s(x) / 8), xt, ht) ’Digunakan untuk
menggambarkan grafik dengan fungsi DrawLine
Next ’Mengakhiri perulangan untuk grafik
histogram saturation
For x = 0 To 255 ’Perulangan untuk
grafik histogram values yaitu dimulai dari 0
sampai 255
xt = Hue.ClientSize.Width * x / 255
’Digunakan untuk menyesuaikan lebar grafik
graf3.DrawLine(Pens.DarkViolet, xt,
ht - CInt(v(x) / 8), xt, ht) ’Digunakan untuk
menggambarkan grafik dengan fungsi DrawLine
Next ’Mengakhiri perulangan untuk grafik
histogram values
End Sub ’Mengakhiri sub method
Histogram_Click
End Class ’Mengakhiri class Form1

38
VII. KESIMPULAN

Dari percobaan yang telah di lakukan, maka dapat di ambil kesimpulan


yaitu :

 Jika sebuah citra yang mempunyai nilai keabuan yang tidak terlalu
berbeda untuk semua titik, dimana titik tergelap dalam citra tidak
mencapai hitam pekat dan titik paling terang dalam citra tidak berwarna
putih cemerlang. Dengan peningkatan kontras maka titik yang
cenderung gelap menjadi lebih gelap dan yang cenderung terang
menjadi lebih cemerlang.
 Invers citra adalah proses transformasi ke image negative dimana nilai
intensitas maksimum di kurangkan dengan nilai intensitas awal dari
suatu cita.
 Histogram adalah grafik yang menggambarkan penyebaran nilai-nilai
intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Dari
sebuah histogram dapat diketahui frekuensi kemunculan relative dari
intensitas pada citra, kecerahan, dan kontas dari sebuah gambar.

DAFTAR PUSTAKA

Munir, R., 2004, Pengolahan Citra Digital dengan Pendekatan Algoritmik,


Informatika, Bandung.
“IT: Pengolahan Citra 4: Brightness, Invers, Kuantisasi Biner”. http://seputar-
programming-it.blogspot.co.id/2015/11/pengolahan-citra-4-brightness-
invers.html
“Pengolahan Citra”. http://sorisoga.blogspot.co.id/2010/10/pengolahan-
citra.html

39

Anda mungkin juga menyukai