DI SUSUN OLEH :
NIM : 1457301088
KELAS/SEMESTER : 3.4/6
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 :
Oleh
Nim : 1457301088
Kelas : TI 3.4
Disetujui Oleh :
i
DAFTAR ISI
ii
DAFTAR GAMBAR
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.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
Dimana :
S = Intensitas baru
r = Intensitas awal
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 :
k = nilai kontras
2
meskipun tidak terlalu terang atau tidak terlalu gelap bila semua
pengelompokan nilai keabuan berada di tengah histogram.
3
S = T(r) = (L-1) – r
Dimana :
S = Intensitas baru
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.
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
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
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
b. Percobaan Invers
1. Membuat Form baru, lalu desain seperti pada gambar dibawah ini :
7
Gambar 6.4 Desain form untuk invers
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
V. HASIL PERCOBAAN
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
11
Program VB6 :
PictureBox3.Invalidate()
PictureBox4.Invalidate()
End Sub
Output :
15
Gambar 6.8 Hasil kontras positive dan negative dengan nilai 14
2. Menjelaskan perbedaan antara kondisi invers dengan pengubahan
nilai dengan HScroll.
16
Program VBnet :
Public Class Invers
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
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
19
Output VBnet :
20
Gambar 6.11 Hasil Invers dengan max 20
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
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
hiskanal1.Invalidate()
hiskanal2.Invalidate()
hiskanal3.Invalidate()
23
End Sub
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
'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
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
27
bg = Val(HScroll1) ‘Menampung nilai Scroll dalam
variabel bg
28
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar
h(x + 1) = h(x + 1) + 1
29
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar
h(x + 1) = h(x + 1) + 1
h1(x + 1) = h1(x + 1) + 1
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar
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
Program Invers
Private Sub Command1_Click()‘Pendeklarasian sub
method Command1_Click dengan modified private,
method ini memberikan aksi ketika button
command1 di klik
31
index 1 sampai tinggi Picture 1
h(x + 1) = h(x + 1) + 1
Next j ‘Mengakhiri perulangan matrix untuk
tinggi gambar
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
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
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
39