Thursday, May 23, 2019

Pengolahan Citra (Image Processing)


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