Home » » TUGAS AKHIR PEMROGRAMAN VISUAL VB 2008 (Pengolahan Citra dengan Beberapa Manipulasi)

TUGAS AKHIR PEMROGRAMAN VISUAL VB 2008 (Pengolahan Citra dengan Beberapa Manipulasi)

Written By Khoir Black on Sabtu, 29 Juni 2013 | 10.26.00

Berikut adalah Hasil Program Saya Mengenai Penambahan Beberapa Manipulasi Efek Terhadap Gambar dalam "PENGOLAHAN CITRA" dan Beberapa Tampilannya...

Listing Program....

Public Class Form1
    Dim gambar As Bitmap

    Private Sub OpenCitraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenCitraToolStripMenuItem.Click
        OFD.Filter = "BMP|*.bmp|JPG|*.Jpg"
        OFD.ShowDialog()

        If OFD.FileName = "" Then Exit Sub
        Pic1.Image = Image.FromFile(OFD.FileName)
        gambar = New Bitmap(Pic1.Image)
    End Sub

    Private Sub SaveCitraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveCitraToolStripMenuItem.Click
        SFD.Filter = "BMP|*.bmp|JPG|*.Jpg"
        SFD.ShowDialog()

        If SFD.FileName = "" Then Exit Sub
        If SFD.FilterIndex = 1 Then
            gambar.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
        End If
        If SFD.FilterIndex = 2 Then
            gambar.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
        End If
    End Sub

    Private Sub DefaultGambarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DefaultGambarToolStripMenuItem.Click
        gambar = New Bitmap(Pic1.Image)
    End Sub

    Private Sub KeluarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KeluarToolStripMenuItem.Click
        End
    End Sub
Tampilan


   1. Negatif 

 Private Sub NegatifToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NegatifToolStripMenuItem.Click
        Dim pb, pc As Integer
        Dim vM, vH, vB As Double
        With gambar
            For pb = 0 To .Height - 1
                For pc = 0 To .Width - 1
                    vM = 255 - .GetPixel(pc, pb).R
                    vH = 255 - .GetPixel(pc, pb).G
                    vB = 255 - .GetPixel(pc, pb).B
                    If vM <= 0 Then vM = 0
                    If vB <= 0 Then vB = 0
                    If vH <= 0 Then vH = 0
                    .SetPixel(pc, pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub

    2. Grayscale


Private Sub GrayscaleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GrayscaleToolStripMenuItem.Click
        Dim pb, pc As Integer
        Dim rt, vM, vH, vB As Double
        With gambar
            For pb = 0 To .Height - 1
                For pc = 0 To .Width - 1
                    vM = .GetPixel(pc, pb).R
                    vH = .GetPixel(pc, pb).G
                    vB = .GetPixel(pc, pb).B
                    rt = (vM + vH + vB) / 3
                    .SetPixel(pc, pb, Color.FromArgb(rt, rt, rt))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub


3. Biner

 Private Sub BinerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BinerToolStripMenuItem.Click
        Dim pb, pc As Integer
        Dim rata, vM, vH, vB As Double
        With gambar
            For pb = 0 To .Height - 1
                For pc = 0 To .Width - 1
                    vM = .GetPixel(pc, pb).R
                    vH = .GetPixel(pc, pb).G
                    vB = .GetPixel(pc, pb).B
                    rata = (vM + vH + vB) / 3
                    If (rata < 128) Then
                        vM = 0
                        vH = 0
                        vB = 0
                    Else
                        vM = 255
                        vH = 255
                        vB = 255
                    End If
                    .SetPixel(pc, pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub



4. Inversi


 Private Sub InversiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InversiToolStripMenuItem.Click
        Dim inVal As Object

        inVal = InputBox("Berapa Bit ? ", "Inversi", "8")

        If inVal <> "" Then
            gambar = New Bitmap(Pic1.Image) 'Gambar asli dijadikan gambar Bitmap
            Pic2.Image = gambar
            Dim tempbmp As New Bitmap(Pic1.Image) 'deklarasi gambar Bitmap dari gambar asli untuk diproses
            Dim DX As Integer = 1
            Dim DY As Integer = 1
            Dim mBit, Red As Integer, Green As Integer, Blue As Integer, Grey As Integer
            Dim X, Y As Integer
            mBit = CInt(inVal)
            With tempbmp
                For X = DX To .Height - DX - 1
                    For Y = DY To .Width - DY - 1
                        Red = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada pixel(Y,X)
                        Green = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
                        Blue = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada pixel(Y,X)

                        If (Red > 255) Then
                            Red = 255
                        Else
                            If Red < 0 Then
                                Red = 0
                            End If
                        End If

                        If Green > 255 Then
                            Green = 255
                        Else
                            If Green < 0 Then
                                Green = 0
                            End If
                        End If

                        If Blue > 255 Then
                            Blue = 255
                        Else
                            If Blue < 0 Then
                                Blue = 0
                            End If
                        End If

                        gambar.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru pada pixel(Y,X)
                    Next
                    If X Mod 10 = 0 Then
                        Pic1.Invalidate()
                        Pic1.Refresh()
                    End If
                Next
            End With

            Pic1.Refresh()
            Me.Text = "Pengolahan Citra : PROSES INVERSI SAYA BERHASIL Lhooo.."
        End If
    End Sub


5. Low Pass

 Private Sub LowPassToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LowPassToolStripMenuItem.Click
        Dim MF(2, 2) As Double

        'MaskFilter.Show()
        'matriks Filter
        '  0 1 2
        '0 a b c
        '1 d e f
        '2 g h i

        'Filter smoothing
        MF(0, 0) = 0 'a
        MF(0, 1) = -1 'b
        MF(0, 2) = 0 'c

        MF(1, 0) = -1 'd
        MF(1, 1) = 4 'e
        MF(1, 2) = -1 'f

        MF(2, 0) = 0 'g
        MF(2, 1) = -1 'h
        MF(2, 2) = 0 'i

        gambar = New Bitmap(Pic1.Image)
        Pic2.Image = gambar
        Dim tempbmp As New Bitmap(Pic1.Image)
        Dim DX As Integer = 1
        Dim DY As Integer = 1
        Dim Red As Integer, Green As Integer, Blue As Integer

        Dim i As Integer, j As Integer
        Dim k As Integer, l As Integer 'untuk mask border

        With gambar
            For i = DX To .Height - DX - 1
                For j = DY To .Width - DY - 1
                    'proses matriks filter
                    'point(j,i)*e --> titik tengah
                    Red = CInt(.GetPixel(j, i).R) * MF(1, 1)
                    Green = CInt(.GetPixel(j, i).G) * MF(1, 1)
                    Blue = CInt(.GetPixel(j, i).B) * MF(1, 1)
                    'proses titik tetangga
                    'point(j-1,i-1)*a--> MF(0,0)--> titik kiri atas
                    If j - 1 < 1 And i - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i - 1).R) * MF(0, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i - 1).G) * MF(0, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i - 1).B) * MF(0, 0))
                    End If
                    'point(j,i-1)*b --> MF(0,1) --> titik atas
                    If i - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 1))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 1))
                    Else
                        Red = Red + (CInt(.GetPixel(j, i - 1).R) * MF(0, 1))
                        Green = Green + (CInt(.GetPixel(j, i - 1).G) * MF(0, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i - 1).B) * MF(0, 1))
                    End If
                    'point(j+1,i-1)*c --> MF(0,2) --> titik kanan atas
                    If j + 1 > .Width - DY - 1 And i - 1 > 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i - 1).R) * MF(0, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i - 1).G) * MF(0, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i - 1).B) * MF(0, 2))
                    End If
                    'point(j-1,i)*d --> MF(1,0) --> titik kiri
                    If j - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i).R) * MF(1, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i).G) * MF(1, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i).B) * MF(1, 0))
                    End If
                    'point(j+1,i)*f --> MF(1,2) --> titik kanan
                    If j + 1 > .Width - DY - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i).R) * MF(1, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i).G) * MF(1, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i).B) * MF(1, 2))
                    End If
                    'point(j-1,i+1)*g --> MF(2,0) --> titik kiri bawah
                    If j - 1 < 1 And i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i + 1).R) * MF(2, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i + 1).G) * MF(2, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i + 1).B) * MF(2, 0))
                    End If
                    'point(j,i+1)*g --> MF(2,1) --> titik bawah
                    If i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 1))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 1))
                    Else
                        Red = Red + (CInt(.GetPixel(j, i + 1).R) * MF(2, 1))
                        Green = Green + (CInt(.GetPixel(j, i + 1).G) * MF(2, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i + 1).B) * MF(2, 1))
                    End If
                    'point(j+1,i+1)*h --> MF(2,2) --> titik kanan bawah
                    If j + 1 > .Width - DY - 1 And i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i + 1).R) * MF(2, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i + 1).G) * MF(2, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i + 1).B) * MF(2, 2))
                    End If
                    'normalisasi
                    If Red < 0 Then
                        Red = 0
                    Else
                        If Red > 255 Then
                            Red = 255
                        End If
                    End If
                    If Green < 0 Then
                        Green = 0
                    Else
                        If Green > 255 Then
                            Green = 255
                        End If
                    End If
                    If Blue < 0 Then
                        Blue = 0
                    Else
                        If Blue > 255 Then
                            Blue = 255
                        End If
                    End If

                    'simpan warna hasil smoothing ke point j,i
                    gambar.SetPixel(j, i, Color.FromArgb(Red, Green, Blue))
                Next
                If i Mod 10 = 0 Then
                    Pic1.Invalidate()
                    Me.Text = Int(100 * i / (Pic1.Image.Height - 2)).ToString & "%"
                    Pic1.Refresh()
                End If
            Next
        End With
        Pic1.Refresh()
        Me.Text = "Proses Low Pass Image berhasil"
    End Sub


6. High Pass

Private Sub HighPassToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HighPassToolStripMenuItem.Click
        Dim MF(2, 2) As Double

        'MaskFilter.Show()
        'matriks Filter
        '  0 1 2
        '0 a b c
        '1 d e f
        '2 g h i

        'Filter smoothing
        MF(0, 0) = -1 'a
        MF(0, 1) = -1 'b
        MF(0, 2) = -1 'c

        MF(1, 0) = -1 'd
        MF(1, 1) = 8 'e
        MF(1, 2) = -1 'f

        MF(2, 0) = -1 'g
        MF(2, 1) = -1 'h
        MF(2, 2) = -1 'i

        gambar = New Bitmap(Pic1.Image)
        Pic2.Image = gambar
        Dim tempbmp As New Bitmap(Pic1.Image)
        Dim DX As Integer = 1
        Dim DY As Integer = 1
        Dim Red As Integer, Green As Integer, Blue As Integer

        Dim i As Integer, j As Integer
        Dim k As Integer, l As Integer 'untuk mask border

        With gambar
            For i = DX To .Height - DX - 1
                For j = DY To .Width - DY - 1
                    'proses matriks filter
                    'point(j,i)*e --> titik tengah
                    Red = CInt(.GetPixel(j, i).R) * MF(1, 1)
                    Green = CInt(.GetPixel(j, i).G) * MF(1, 1)
                    Blue = CInt(.GetPixel(j, i).B) * MF(1, 1)
                    'proses titik tetangga
                    'point(j-1,i-1)*a--> MF(0,0)--> titik kiri atas
                    If j - 1 < 1 And i - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i - 1).R) * MF(0, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i - 1).G) * MF(0, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i - 1).B) * MF(0, 0))
                    End If
                    'point(j,i-1)*b --> MF(0,1) --> titik atas
                    If i - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 1))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 1))
                    Else
                        Red = Red + (CInt(.GetPixel(j, i - 1).R) * MF(0, 1))
                        Green = Green + (CInt(.GetPixel(j, i - 1).G) * MF(0, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i - 1).B) * MF(0, 1))
                    End If
                    'point(j+1,i-1)*c --> MF(0,2) --> titik kanan atas
                    If j + 1 > .Width - DY - 1 And i - 1 > 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i - 1).R) * MF(0, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i - 1).G) * MF(0, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i - 1).B) * MF(0, 2))
                    End If
                    'point(j-1,i)*d --> MF(1,0) --> titik kiri
                    If j - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i).R) * MF(1, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i).G) * MF(1, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i).B) * MF(1, 0))
                    End If
                    'point(j+1,i)*f --> MF(1,2) --> titik kanan
                    If j + 1 > .Width - DY - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i).R) * MF(1, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i).G) * MF(1, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i).B) * MF(1, 2))
                    End If
                    'point(j-1,i+1)*g --> MF(2,0) --> titik kiri bawah
                    If j - 1 < 1 And i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 0))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 0))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 0))
                    Else
                        Red = Red + (CInt(.GetPixel(j - 1, i + 1).R) * MF(2, 0))
                        Green = Green + (CInt(.GetPixel(j - 1, i + 1).G) * MF(2, 0))
                        Blue = Blue + (CInt(.GetPixel(j - 1, i + 1).B) * MF(2, 0))
                    End If
                    'point(j,i+1)*g --> MF(2,1) --> titik bawah
                    If i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 1))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 1))
                    Else
                        Red = Red + (CInt(.GetPixel(j, i + 1).R) * MF(2, 1))
                        Green = Green + (CInt(.GetPixel(j, i + 1).G) * MF(2, 1))
                        Blue = Blue + (CInt(.GetPixel(j, i + 1).B) * MF(2, 1))
                    End If
                    'point(j+1,i+1)*h --> MF(2,2) --> titik kanan bawah
                    If j + 1 > .Width - DY - 1 And i + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
                        Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 2))
                        Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 2))
                        Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 2))
                    Else
                        Red = Red + (CInt(.GetPixel(j + 1, i + 1).R) * MF(2, 2))
                        Green = Green + (CInt(.GetPixel(j + 1, i + 1).G) * MF(2, 2))
                        Blue = Blue + (CInt(.GetPixel(j + 1, i + 1).B) * MF(2, 2))
                    End If
                    'normalisasi
                    If Red < 0 Then
                        Red = 0
                    Else
                        If Red > 255 Then
                            Red = 255
                        End If
                    End If
                    If Green < 0 Then
                        Green = 0
                    Else
                        If Green > 255 Then
                            Green = 255
                        End If
                    End If
                    If Blue < 0 Then
                        Blue = 0
                    Else
                        If Blue > 255 Then
                            Blue = 255
                        End If
                    End If

                    'simpan warna hasil smoothing ke point j,i
                    gambar.SetPixel(j, i, Color.FromArgb(Red, Green, Blue))
                Next
                If i Mod 10 = 0 Then
                    Pic1.Invalidate()
                    Me.Text = Int(100 * i / (Pic1.Image.Height - 2)).ToString & "%"
                    Pic1.Refresh()
                End If
            Next
        End With
        Pic1.Refresh()
        Me.Text = "Hore High Pass Saya Sukses"
    End Sub


7. Rotate 90
 Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        Dim rgb As Image
        rgb = Pic2.Image
        If rgb IsNot Nothing Then rgb.RotateFlip(RotateFlipType.Rotate90FlipXY)
        Pic2.Image = rgb
    End Sub



8. Rotate 180
Private Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.Click
        Dim pb, pc As Integer
        Dim vM, vH, vB As Double
        Dim gambar3 As Bitmap = New Bitmap(Pic1.Image)
        With gambar
            For pb = .Height - 1 To 0 Step -1
                For pc = .Width - 1 To 0 Step -1
                    vM = .GetPixel(pc, pb).R
                    vH = .GetPixel(pc, pb).G
                    vB = .GetPixel(pc, pb).B
                    gambar3.SetPixel(.Width - 1 - pc, .Height - 1 - pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar3
                Pic2.Refresh()
            Next
        End With
    End Sub




9. Contras

Private Sub ContrasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContrasToolStripMenuItem.Click
        gambar = New Bitmap(Pic1.Image)
        Pic2.Image = gambar
        Dim tempbmp As New Bitmap(Pic1.Image)
        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

        With tempbmp
            For X = DX To .Height - DX - 1
                For Y = DY To .Width - DY - 1
                    Red = CInt(.GetPixel(Y, X).R)
                    Green = CInt(.GetPixel(Y, X).G)
                    Blue = CInt(.GetPixel(Y, X).B)
                    '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
                    gambar.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue))
                Next
                If X Mod 10 = 0 Then
                    Pic1.Invalidate()
                    Pic2.Refresh()
                End If
            Next
        End With
    End Sub

    Private Sub InversiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InversiToolStripMenuItem.Click
        Dim inVal As Object

        inVal = InputBox("Berapa Bit ? ", "Inversi", "8")

        If inVal <> "" Then
            gambar = New Bitmap(Pic1.Image) 'Gambar asli dijadikan gambar Bitmap
            Pic2.Image = gambar
            Dim tempbmp As New Bitmap(Pic1.Image) 'deklarasi gambar Bitmap dari gambar asli untuk diproses
            Dim DX As Integer = 1
            Dim DY As Integer = 1
            Dim mBit, Red As Integer, Green As Integer, Blue As Integer, Grey As Integer
            Dim X, Y As Integer
            mBit = CInt(inVal)
            With tempbmp
                For X = DX To .Height - DX - 1
                    For Y = DY To .Width - DY - 1
                        Red = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).R) 'ambil nilai warna merah (Red) pada pixel(Y,X)
                        Green = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).G) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
                        Blue = CInt((Math.Pow(2, mBit) - 1)) - CInt(.GetPixel(Y, X).B) 'ambil nilai warna biru (Blue) pada pixel(Y,X)

                        If (Red > 255) Then
                            Red = 255
                        Else
                            If Red < 0 Then
                                Red = 0
                            End If
                        End If

                        If Green > 255 Then
                            Green = 255
                        Else
                            If Green < 0 Then
                                Green = 0
                            End If
                        End If

                        If Blue > 255 Then
                            Blue = 255
                        Else
                            If Blue < 0 Then
                                Blue = 0
                            End If
                        End If

                        gambar.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru pada pixel(Y,X)
                    Next
                    If X Mod 10 = 0 Then
                        Pic1.Invalidate()
                        Pic1.Refresh()
                    End If
                Next
            End With

            Pic1.Refresh()
            Me.Text = "Pengolahan Citra : PROSES INVERSI SAYA BERHASIL Lhooo.."
        End If
    End Sub

10. Logaritmik

Private Sub LogaritmikToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LogaritmikToolStripMenuItem.Click
        Dim tL As Object

        tL = InputBox("Masukan Nilai C : ", "Transformasi Logaritmik", "0")

        If tL <> "" Then
            gambar = New Bitmap(Pic1.Image) 'Gambar asli dijadikan gambar Bitmap
            Pic2.Image = gambar
            Dim tempbmp As New Bitmap(Pic1.Image) 'deklarasi gambar Bitmap dari gambar asli untuk diproses
            Dim DX As Integer = 1
            Dim DY As Integer = 1
            Dim c, Red As Integer, Green As Integer, Blue As Integer, Grey As Integer
            Dim X, Y As Integer
            c = CDbl(tL)
            With tempbmp
                For X = DX To .Height - DX - 1
                    For Y = DY To .Width - DY - 1
                        Red = c * Math.Log(CInt(.GetPixel(Y, X).R) + 1) 'ambil nilai warna merah (Red) pada pixel(Y,X)
                        Green = c * Math.Log(CInt(.GetPixel(Y, X).G) + 1) 'ambil nilai warna hijau (Green) pada pixel(Y,X)
                        Blue = c * Math.Log(CInt(.GetPixel(Y, X).B) + 1) 'ambil nilai warna biru (Blue) pada pixel(Y,X)

                        If (Red > 255) Then
                            Red = 255
                        Else
                            If Red < 0 Then
                                Red = 0
                            End If
                        End If

                        If Green > 255 Then
                            Green = 255
                        Else
                            If Green < 0 Then
                                Green = 0
                            End If
                        End If

                        If Blue > 255 Then
                            Blue = 255
                        Else
                            If Blue < 0 Then
                                Blue = 0
                            End If
                        End If

                        gambar.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) 'simpan warna baru pada pixel(Y,X)
                    Next
                    If X Mod 10 = 0 Then
                        Pic1.Invalidate()
                        Pic1.Refresh()
                    End If
                Next
            End With
            Pic1.Refresh()
            Me.Text = "Pengolahan Citra : Proses Transformasi Saya Logaritmik Sukses"
        End If
    End Sub



Demikian Hasil Tugas Program "PENGOLAHAN CINTRA" Saya..
Terima Kasih

Silahkan Kunjungi http://mesran.net/ Untuk Belajar Pemrograman Visual Lainnya..
Jangan Lupa kunjungi Juga http://khoirblack.blogspot.com/
Terima Kasih






















Share this article :

2 komentar: