PENGOLAHAN CITRA (IMAGE
PROCESSING)
KECERDASAN BUATAN
Oleh
:
NIM NAMA
1. 181021400109 Azwin Anggara
2. 161011400026 Irma Handayani
3. 181021400122 Riski Yudi Lesmana
4. 161011400009 Tika
Liyana
PROGRAM STUDI TEKNIK
INFORMATIKA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA
& KOMPUTER
ERESHA
TANGERANG SELATAN
2019
KATA PENGANTAR
Puji
syukur saya panjatkan kehadirat tuhan yang maha esa, yang atas rahmat-Nya maka
saya dapat menyelesaikan penyusunan makalah yang berjudul “ PENGOLAHAN CITRA”.
Penulisan laporan ini merupakan salah satu tugas dari matakuliah Kecerdasan Buatan sebelum pelaksanaan UAS.
Dalam
Penulisan laporan ini saya merasa masih banyak kekurangan – kekurangan baik pada teknis
penulisan maupun materi, mengingat akan kemampuan yang dimiliki saya. Untuk itu
kritik dan saran dari semua pihak sangat saya harapkan demi penyempurnaan
pembuatan makalah ini.
Dalam
penulisan makalah ini saya menyampaikan ucapan terima kasih yang tak terhingga
kepada pihak – pihak yang membantu dalam menyelesaikan penulisan makalah ini,
khususnya kepada orang tua, keluarga, teman, sahabat, dan semua pihak yang
tidak dapat disebutkan satu persatu, yang telah memberikan bantuan dalam
penulisan makalah ini.
Akhirnya
saya berharap semoga Allah memberikan imbalan yang setimpal pada mereka yang
telah memberikan bantuan, dan dapat menjadikan semua bantuan ini ibadah, Amiin
Yaa Robbal ‘Alamiin.
Serpong, 23 Mei 2019
BAB
I
PENDAHULUAN
1.1.
Latar
Belakang
Seiring
dengan perkembangan jaman pengetahuan dan teknologi yang pesat sekarang ini, maka
kita dihadapkan kepada suatu bentuk permasalahan yang
lebih komplek yang menuntut kreativitas. perkembangan
teknik tentang image processing yang berkembang
dengan pesat saat. ini.terutama pada pengolahan gambar. (Jurnal Ilmiah Pendidikan Informatika Volume 1, Nomor 1, Tahun 2016)
Pengolahan citra digital adalah teknik mengolah
citra yang bertujuan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia
atau mesin komputer yang dapat berupa foto maupun gambar bergerak (Sutoyo, 2009).
Pengolahan citra digital memiliki beberapa kelebihan, yaitu murah, cepat, dan tidak
merusak sampai yang diukur dan mampu mengidentifikasi fisik produk secara
obyektif (Somantri, 2010).
Pengolahan citra digital (Digital Image Processing) adalah sebuah
disiplin ilmu yang mempelajari tentang teknik-teknik mengolah citra. Citra yang
dimaksud disini adalah gambar diam (foto) maupun gambar bergerak (yang berasal
dari webcam). Sedangkan digital
disini mempunyai maksud bahwa pengolahan citra/gambar dilakukan secara digital
menggunakan komputer. Secara matematis, citra merupakan fungsi kontinyu (continue) dengan intensitas cahaya pada
bidang dua dimensi. Agar dapat diolah dengan komputer digital, maka suatu citra
harus dipresentasikan secara numeric dengan nilai-nilai diskrit. Repersentasi
dari fungsi kontinyu menjadi nilai-nilai diskrit disebut digitalisasi citra.
Sebuah citra digital dapat diwakili oleh
sebuah matriks dua dimensi f(x,y) yang terdiri dari M kolom dan N baris, dimana
perpotongan antara kolom dan baris disebut piksel (pixel = picture element)
atau elemen terkecil dari sebuah citra. (Seminar Nasional Teknologi Informasi
& Komunikasi Terapan 2011)
BAB
II
LANDASAN TEORI
2.1.
Image Processing
Image processing atau
pengolahan citra merupakan suatu metode atau teknik yang dapat digunakan untuk memproses citra atau gambar dengan
jalan mjemanipulasinjya menjadi suatu data gambar yang diisikan untuk mendapatkan suatu informasi tertentu
mengenai obyek yang sedang diamati .dan hal –hal yang perlu diperhatikan sebagai
referensi pembuatannya disini diantaranya adalah:
a.
Pengolahan Citra
Citra adalah representasi dua dimentasi untuk
bentuk-bentuk fisik nyata tiga dimensi.Citra dalam perwujudan dapat
bermacam-macam,mulai dari gambar perwujudan nya dapat bermacam –macam,mulai dari
gambar putih pada sebuah foto (yang tidak bergerak)sampai pada gambar warna
yang bergerak pada televisi .proses transformasi dari bentuk tiga dimensi ke
bentuk dua dimensi untuk menghasilkan citra akan dipengaruhi oleh bermacammacam
factor yang mengakibatkan citra penampilan citra suatu benda tidak sama persis
dengan bentuk fisik nyatanya.
Faktor-faktor tersebut merupakan efek degradasi atau
penurunan kualitas yang dapat berupa rentang kontras benda yang terlalu sempit
atau terlalu lebar ,distorsi geometric kekaburan (blur), kekaburan akibat objek
citra yang bergerak 9 motion blur,noisw atau gangguan yang disebabkan oleh
interferensi pembuat citra ,baik itu pembuat tranduser ,peralatan elektronik
maupun peralatan optik .karena pengolahan citra digital dilakukan dengan
computer digital ,maka citra yang akan diolah terlebih dahulu ditranformasikan
kedalam bentuk besaran – besaran diskrit dari niloai tingkat keabuan pada titik
element citra .bentuk dari citra ini disebut citra digital.
Element-element citra digital apabila ditampilkan
dalam layer monitor akan menempati sebuah ruang yang disebut Pixel (picture element) .Teknik dan proses
untuk mengurangi atau menghilangkan efek degradasi pada citra meliputi teknik
perbaikan atau peningkatan citra (image
enchancement ) ,restorasi citra (image
restoration) dan tranformasi special (special
transformation), subyek lain dari pengolahan citra digital diantaranya
adalah pengkodean citra ,segmentasi citra(image segmentation ),representasi
edan diskripsi citra (image representation
and diskription)
b.
Model Citra
Citra disini merupakan matrik dua dimensi dari fungsi
intensitas cahaya,karena itu referensi citra menggunakan dua variabelyang
menunjuk posisi pada bidang dengan sebuah fungsi intensitas cahaya yang dapat
dituliskan sebagai berikut f(x,y).karena cahaya merupakan salah satu bentuk
energi yang dalam persamaan 1:
0 < (π₯π₯)
< ~ (1)
Konversi system koordinat citra diskrit ditunjukkan pada gambar 1:
Gambar 1. Koordinat Citra Diskrit
Citra yang dilihat sehari-hari merupakan cahaya yang direfleksikan sebuah
obyek.fungsi.fungsi f(x,y) dapat dilihat sebagai fungsi dengan dua
unsur,pertama merupakan besarnya sumber cahaya yang melengkapi pandangan kita
terhadap obyek (illumination),kedua merupakan besaran cahaya yang difleksikan
oleh obyek dalam pandangan kita (reflectance component).keduanya dituliskan
fungsi yang berturut-turut i(x,y) dan r(x,y).merupakan kombinasi perkalian
untuk membentuk fungsi f(x.y) yang dapat ditulis dengan persamaan sebagai
berikut:
ππ(π₯π₯, π¦π¦) = ππ(π₯π₯, π¦π¦)ππ(π₯π₯, π¦π¦)
0 < (π₯π₯, π¦π¦) < ~
0 < (π₯π₯, π¦π¦) < 1
Persamaan diatas menandakan bahwa nilai kerefleksian
dibatasi oleh nilai 0(total absorbtion) dan nilai satu (total reflectance)fungsi
i(x,y) yang sudah didiskritkan baik koordinat special maupun tingkat
kecerahannya.kata continue disini dijelaskan bahwa indek x dan y bernilai bulat
.kita dapat menganggap citra digital (berikutnya akan disingkat dengan
citra)sebagai matrik dengan ukuran MxN yang baris dan kolomnya menunjukkan
titik-titiknya yang diperlihatkan pada persamaan berikut:
Citra yang tidak berwarna atau
hitam putih dikenal juga sebagai citra dengan derajat keabuan (citra grey level
/greyscale).Derajat keabuan yang dimiliki ini bias beragam mulai deari dua derajat
keabuan yaitu(0 dan 1)yang dikenal juga sebagai citra monokrome.16 derajat keabuaan
dan 256 derajat kebuan.
Dalam sebuah citra
monochrome,sebuah pixel diwakili oleh 1 bit data yang berisikan data tentang
derajat keabuan yang dimiliki oleh pixel tersebut.data akan berisi 1 apabila
pixel berwarna putih dan akan berisi 0 bila pixel berwarna hitam.
Citra yang dimiliki 16derajat
keabuan(mulai dari 0 mewakili warna hitam sampai 15 yang mewakili warna putih) dipresentasikan
oleh 4 bit data.sedangkan citra dengan 256 derajat keabuan (nilai 0 mewakili
hitam sampai dengan 256 yang mewakili warna putih )dipresentasikan leh 8bit
data.
Dalam citra berwarna,jumlah
warna bisa beragam mulai dari 16,256,65536 atau 16 juta warna yang masingmasing
dipresentasikan oleh 4,8,16 atau 24 bit data untuk setiap pixelnya .warna yang
terdiri dari 3 komponen utama yaitu merah (red), nilai hijau (green),dan nilai
biru (blue).
c. Warna
RGB dan Gray Scale
Model warna RGB (red, green, blue)
mendiskripsikan warna sebagai kombinasi positif dari warna yaitu merah, hijau
dan biru sehingga membentuk sebuah warna C dengan persamaan 4:
πΆπΆ = ππππ + ππππ + ππππ
2.2.Operasi Pengolahan Citra
Operasi - operasi yang dilakukan di dalam pengolahan
citra banyak ragamnya. Namun, secara umum, operasi pengolahan citra dapat
diklasifikasikan dalam beberapa jenis sebagai berikut:
1.
Perbaikan
Kualitas Citra (Image Enhancement).
Jenis operasi ini bertujuan untuk memperbaiki kualitas
citra dengan cara memanipulasi
parameter-parameter citra. Dengan operasi ini, ciri – ciri khusus yang terdapat di dalam citra lebih ditonjolkan.
Contoh - contoh operasi perbaikan
citra:
a.
Perbaikan kontras gelap / terang.
b.
Perbaikan tepian objek (Edge Enhancement).
c.
Penajaman (Sharpening).
d.
pembrian
warna semu (Pseudocoloring).
e.
penapisan
derau (noise filtering).
2.
Pemugaran Citra
(Image Restoration).
Operasi ini bertujuan menghilangkan/meminimumkan cacat
pada citra. Tujuan pemugaran citra hampir sama dengan operasi perbaikan citra. Bedanya, pada pemugaran citra penyebab
degradasi gambar diketahui.
Contoh - contoh
operasi Pemugaran Citra:
a. Penghilangan Kesamaran
(Deblurring).
b. Penghilangan Derau (Noise).
3. Pemampatan Citra (Image Compression).
Jenis operasi ini dilakukan agar citra dapat
direpresentasikan dalam bentuk yang lebih kompak sehingga memerlukan memori
yang lebih sedikit. Hal penting yang harus diperhatikan dalam pemampatan adalah
citra yang telah dimampatkan harus tetap mempunyai kualitas gambar yang bagus.
4. Segmentasi Citra (Image Segmentation).
Jenis operasi ini bertujuan untuk memecah suatu citra
ke dalam beberapa segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan
erat dengan pengenalan pola.
5. Pengorakan Citra (Image Analysis).
Jenis operasi ini bertujuan menghitung besaran
kuantitif dari citra untuk menghasilkan deskripsinya. Teknik pengorakan citra
mengekstraksi ciri
- ciri tertentu yang membantu dalam
identifikasi objek. Proses segmentasi kadangkala diperlukan untuk melokalisasi
objek yang diinginkan dari sekelilingnya.
Contoh-contoh Operasi Pengorakan
Citra:
a. Pendeteksian tepi Objek (Edge Detection).
b. Ekstraksi Batas (Boundary).
c. Representasi Daerah (Region).
6. Rekonstruksi Citra (Image Reconstruction).
Jenis
operasi ini bertujuan untuk membentuk ulang objek dari beberapa citra hasil
proyeksi. Operasi rekonstruksi citra banyak digunakan dalam bidang medis.
Misalnya beberapa foto rontgen dengan sinar X digunakan untuk membentuk ulang
gambar organ tubuh.
BAB III
PEMBAHASAN
3.1.
Coding
a.
frmPengCitra.vb
Public Class frmPengCitra
Dim bmap As
Bitmap 'deklarasi gambar/image dengan tipe Bitmap
Dim PicAda
As Boolean
Private Sub
OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles OpenToolStripMenuItem.Click
OpenFileDialog1.Filter = "Images|*.GIF;*.TIF;*.JPG;*.BMP"
OpenFileDialog1.ShowDialog()
If
OpenFileDialog1.FileName = "" Then Exit Sub
'else
PicAda =
True
picAwal.Image = Image.FromFile(OpenFileDialog1.FileName)
picAwal.Width = picAwal.Height * picAwal.Image.Width /
picAwal.Image.Height
End Sub
Private Sub
ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ExitToolStripMenuItem.Click
End
End Sub
Private Sub
frmUtama_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
ProgressBar1.Hide()
Me.WindowState
= FormWindowState.Maximized
PicAda =
False
End Sub
Private Sub
GreyScaleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles GreyScaleToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX As Integer = 1
Dim DY
As Integer = 1
Dim Red
As Integer, Green As Integer, Blue As Integer, Grey As Integer
Dim X, Y
As Integer
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y,
X).R) 'ambil nilai warna merah (Red) pada pixel(Y,X)
Green
= CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
If (Grey < 128) Then
Red = 0
Green = 0
Blue = 0
Else
Red = 255
Blue = 255
Green = 255
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Grey Scale : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text = "Pengolahan Citra :
Proses Grey Scale berhasil"
End
Sub
Private Sub
SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles SaveToolStripMenuItem.Click
Dim i As
Integer
Dim str
As String
For i =
1 To 1000
If i
< 10 Then str = "Picture_00" & i.ToString &
".jpg"
If i
> 9 And i < 100 Then str = "Picture_0" & i.ToString &
".jpg"
If i
> 99 Then str = "Picture_" & i.ToString & ".jpg"
If i
> 900 Then MsgBox("You Have Over 900 Pictures, Please Check And Delete
Unnecesary Ones")
If
Not System.IO.File.Exists(str) Then
Try
picAwal.Image.Save(str, System.Drawing.Imaging.ImageFormat.Jpeg)
'Cropped
'PictureBox1.Image.Save(str, System.Drawing.Imaging.ImageFormat.Png)
MsgBox("Gambar berhasil di simpan ^_^", MsgBoxStyle.OkOnly,
"Save Succes")
Catch Ex As Exception
MsgBox("Could Not Write To Location")
End Try
Exit For
End
If
Next
End Sub
Private
Sub BinerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BinerToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap = New Bitmap(picAwal.Image) 'Gambar
asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer
Dim DY
As Integer
Dim Red,
Green, Blue, Grey As Integer
Dim X, Y
As Integer
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
Grey = (Red + Green + Blue)
/ 3 'konversi warna pada pixel Y,X ke grey
'proses perubahan ke biner
Dim clr As Color = bmap.GetPixel(Y, X)
If (Grey < 128) Then
Red = 0
Green = 0
Blue = 0
Else
Red = 255
Blue = 255
Green = 255
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Biner : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Biner berhasil"
End Sub
Private
Sub MBitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MBitToolStripMenuItem.Click
'untuk m
bit
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red As Integer, Green As Integer, Blue
As Integer, Grey As Integer
Dim X, Y
As Integer
Dim m As
Integer = 2
Dim Xth
As Double
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y,
X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
Blue
= CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada pixel(Y,X)
Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Xth = (2 ^ m) * Int(Grey / 2 ^ m)
If (Xth > 256) Then
Red = 255
Green = 255
Blue = 255
Else
Red = Xth
Green = Xth
Blue = Xth
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses M Bit : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text = "Pengolahan Citra :
Proses M Bit berhasil"
End Sub
Private Sub
BrigthnessToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BrigthnessToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red
As Integer, Green As Integer, Blue As Integer ',Grey As Integer
Dim X, Y
As Integer
Dim tb
As Integer
tb = 75
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y,
X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
Blue
= CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada pixel(Y,X)
'Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = Red + tb
Green = Green + tb
Blue = Blue + tb
If (Red > 255) Then
Red = 255
End If
If (Blue > 255) Then
Blue = 255
End If
If (Green > 255) Then
Green = 255
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Brightness Scale : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text = "Pengolahan Citra :
Proses Brightness berhasil"
End Sub
Private Sub
ContrastToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ContrastToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses", MsgBoxStyle.Critical
+ MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red,
Green, Blue As Integer
Dim X, Y
As Integer
Dim tc
As Integer
tc = 5
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y,
X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
Blue
= CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada pixel(Y,X)
'Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = Red * tc
Blue = Blue * tc
Green = Green * tc
If (Red > 255) Then
Red = 255
End If
If (Blue > 255) Then
Blue = 255
End If
If (Green > 255) Then
Green = 255
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses contrast : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X /
(picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses contrast berhasil"
End Sub
Private Sub
InversiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles InversiToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer
Dim DY
As Integer
Dim X, Y
As Integer
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Dim clr As Color = bmap.GetPixel(Y, X)
'inversi 8 bit = 255-x
clr = Color.FromArgb(255, 255 - clr.R, 255 - clr.G, 255 - clr.B)
bmap.SetPixel(Y, X, clr)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Inversi : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Inversi berhasil"
End Sub
Private Sub
NegativeImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles NegativeImageToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang
akan diproses", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error
Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim L As Integer = 100
Dim
Red As Integer, Green As Integer, Blue As Integer
Dim X, Y
As Integer
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
'Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = L - Red
Blue = L - Blue
Green = L - Green
If (Red > 255) Then
Red = 255
ElseIf (Red < 0) Then
Red = 0
End If
If (Blue > 255) Then
Blue = 255
ElseIf (Blue < 0) Then
Blue = 0
End If
If (Green > 255) Then
Green = 255
ElseIf (Green < 0) Then
Green = 0
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Negative Image : " & Int(100 * X
/ (picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Negative Image berhasil"
End Sub
Private Sub
AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles AboutToolStripMenuItem.Click
AboutPengolahanCitra.Show()
End Sub
Private Sub
KonvolusiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
End Sub
Private Sub
Rotasi(ByVal s As RotateFlipType)
If PicAda = False Then
MsgBox("Pilih
dulu gambar yang akan diproses", MsgBoxStyle.Critical +
MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
bmap.RotateFlip(s)
picAwal.Image = bmap
End Sub
Private Sub
RotasiLeftToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RotasiLeftToolStripMenuItem.Click
Rotasi(RotateFlipType.Rotate270FlipNone)
End Sub
Private Sub
RotateRightToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RotateRightToolStripMenuItem.Click
Rotasi(RotateFlipType.Rotate90FlipNone)
End Sub
Private Sub
ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ToolStripMenuItem5.Click
Rotasi(RotateFlipType.Rotate90FlipNone)
End Sub
Private Sub ToolStripMenuItem6_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
ToolStripMenuItem6.Click
Rotasi(RotateFlipType.Rotate180FlipNone)
End Sub
Private Sub
ToolStripMenuItem7_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ToolStripMenuItem7.Click
Rotasi(RotateFlipType.Rotate270FlipNone)
End Sub
Private Sub
PowerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PowerToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red
As Integer, Green As Integer, Blue As Integer, Grey As Integer
Dim X, Y
As Integer
Dim C As Integer = 1.5
Dim
z As Integer = 1.1
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = C * Red ^ z
Green = C * Green ^ z
Blue = C * Blue ^ z
If (Red > 255) Then
Red = 255
ElseIf (Red < 0) Then
Red = 0
End If
If (Blue > 255) Then
Blue = 255
ElseIf (Blue < 0) Then
Blue = 0
End If
If (Green > 255) Then
Green = 255
ElseIf (Green < 0) Then
Green = 0
End
If
bmap.SetPixel(Y, X,
Color.FromArgb(Red, Green, Blue)) 'simpan warna baru pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Power of Law n Power : " &
Int(100 * X / (picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Power of Law n Power berhasil"
End Sub
Private Sub
RootPowerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RootPowerToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red
As Integer, Green As Integer, Blue As Integer, Grey As Integer
Dim X, Y
As Integer
Dim C As
Integer = 1.5
Dim z As
Integer = 1.1
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = C * Red ^ (1 / z)
Green = C * Green ^ (1 / z)
Blue = C * Blue ^ (1 / z)
If (Red > 255) Then
Red = 255
ElseIf (Red < 0) Then
Red = 0
End If
If (Blue > 255) Then
Blue
= 255
ElseIf (Blue < 0) Then
Blue = 0
End If
If (Green > 255) Then
Green = 255
ElseIf (Green < 0) Then
Green = 0
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Power of Law n root Power : " &
Int(100 * X / (picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Power of Law n root Power berhasil"
End Sub
Private Sub
LogaritmikToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles LogaritmikToolStripMenuItem1.Click
If PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red
As Integer, Green As Integer, Blue As Integer
Dim X, Y
As Integer
'Dim G
As Integer
Dim C As
Integer = 36
Dim L As
Integer = 1.1
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada
pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
'Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
Red = C * Math.Log(Red + 1)
Green
= C * Math.Log(Green + 1)
Blue = C * Math.Log(Blue + 1)
If (Red > 255) Then
Red = 255
ElseIf (Red < 0) Then
Red = 0
End If
If (Blue > 255) Then
Blue = 255
ElseIf (Blue < 0) Then
Blue = 0
End If
If (Green > 255) Then
Green = 255
ElseIf (Green < 0) Then
Green = 0
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Logaritmik : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Logaritmik berhasil"
End Sub
Private Sub
InversLogaritmikToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles InversLogaritmikToolStripMenuItem.Click
If
PicAda = False Then
MsgBox("Pilih dulu gambar yang akan diproses",
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")
Exit
Sub
End If
bmap =
New Bitmap(picAwal.Image) 'Gambar asli dijadikan gambar Bitmap
picAwal.Image = bmap
Dim
tempbmp As New Bitmap(picAwal.Image) 'deklarasi gambar Bitmap dari gambar asli
untuk diproses
Dim DX
As Integer = 1
Dim DY
As Integer = 1
Dim Red As Integer, Green As Integer, Blue
As Integer
Dim R,
G, B As Integer
Dim X, Y
As Integer
'Dim G
As Integer
Dim C As
Integer = 36
Dim L As
Integer = 120
ProgressBar1.Width = picAwal.Width
ProgressBar1.Show()
With
tempbmp
For
X = DX To .Height - DX - 1
For Y = DY To .Width - DY - 1
Red = CInt(.GetPixel(Y,
X).R) 'ambil nilai warna merah (Red) pada pixel(Y,X)
Green = CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada
pixel(Y,X)
Blue = CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada
pixel(Y,X)
'Grey = (Red + Green + Blue) / 3 'konversi warna pada pixel Y,X ke grey
R = (L - Red + 1)
B = (L - Blue + 1)
G = (L - Green + 1)
If (R <= 0) Then
Red = 0
Else
Red = C * Math.Log(R)
End If
If (G <= 0) Then
Green = 0
Else
Green = C * Math.Log(G)
End If
If (B <= 0) Then
Blue = 0
Else
Blue = C * Math.Log(B)
End If
'Red = C * Math.Log(L - Red + 1)
'Green = C * Math.Log(L - Green + 1)
'Blue = C * Math.Log(L - Blue + 1)
If (Red > 255) Then
Red = 255
ElseIf (Red < 0) Then
Red = 0
End If
If (Blue > 255) Then
Blue = 255
ElseIf (Blue < 0) Then
Blue = 0
End If
If (Green > 255) Then
Green = 255
ElseIf (Green < 0) Then
Green = 0
End If
bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru
pada pixel(Y,X)
Next
If X Mod 10 = 0 Then
picAwal.Invalidate()
Me.Text = "Progres Proses Logaritmik : " & Int(100 * X /
(picAwal.Image.Height - 2)).ToString & "%"
ProgressBar1.Value = Int(100 * X / (picAwal.Image.Height - 2))
picAwal.Refresh()
End If
Next
End With
ProgressBar1.Hide()
picAwal.Refresh()
Me.Text
= "Pengolahan Citra : Proses Logaritmik berhasil"
End Sub
End
Class
b.
AboutPengCitra.vb
Public NotInheritable Class
AboutPengolahanCitra
Private Sub AboutPengCitra_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
' Set the title of the form.
Dim ApplicationTitle As String
If My.Application.Info.Title <>
"" Then
ApplicationTitle =
My.Application.Info.Title
Else
ApplicationTitle =
System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
End If
Me.Text = "Aplikasi Pengolahan
Citra" 'String.Format("About {0}", ApplicationTitle)
' Initialize all of the text displayed
on the About Box.
' TODO: Customize the application's
assembly information in the "Application" pane of the project
'
properties dialog (under the "Project" menu).
Me.LabelMataKuliah.Text =
"Kecerdasan Buatan" 'My.Application.Info.ProductName
Me.LabelAplikasi.Text =
"Pengolahan Citra" 'My.Application.Info.LabelVersion
Me.LabelUniversitas.Text = "STMIK
Eresha" 'My.Application.Info.Copyright
Me.LabelTahun.Text = "2019" 'My.Application.Info.CompanyName
End Sub
Private Sub OKButton_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub OKButton_Click_1(sender As
Object, e As EventArgs) Handles OKButton.Click
Me.Close()
End Sub
End Class
3.1.
Interface
BAB IV
PENUTUP
4.1.
Kesimpulan
Dalam pengolahan image processing dibutuhkan ketepatan dan keakuratan data serta
pengetahuan tentang statistika karena pengolahan image ini berhubungan dengan pengolahan data.
Hasil dari penelitian ini yaitu
program dapat merubah rotasi image menjadi
kiri, kanan, 90ΒΊ, 180 ΒΊ, dan 270 ΒΊ, selain merubah rotasi program ini juga
dapat mengkonversi image ke GreyScale, Biner, mBit, Brightness, Contrast, Inversi, Negative Image.
4.2.
Saran
Saran perbaikan sistem untuk mendapatkan
akurasi yang lebih tinggi dapat dilakukan dengan pengembangan metode filtering dengan kombinasi operasi opening closing serta filter median agar noise tidak terlihat dan menambahkan analisis tekstur pada
pengolahan citra digital.
Daftar Pustaka
Sutoyo. T,
Mulyanto. Edy, Suhartono. Vincent, Dwi Nurhayati Oky, Wijanarto, “ Teori
Pengolahan Citra Digital ”, Andi Yogyakarta dan UDINUS Semarang, 2009.
Seminar Nasional
Teknologi Informasi & Komunikasi Terapan 2011
Jurnal Ilmiah Pendidikan Informatika Volume 1, Nomor 1, Tahun
2016
Jurnal Teknotan
Vol. 11 No. 2, Agustus 2017