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 = "JPG|*.jpg|BMP|*.bmp"
        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 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
    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
    Private Sub BrightnessToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrightnessToolStripMenuItem.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 = .GetPixel(Pc, Pb).R + 5
                    vH = .GetPixel(Pc, Pb).G + 5
                    vB = .GetPixel(Pc, Pb).B + 5
                    If vM > 255 Then vM = 255
                    If vB > 255 Then vB = 255
                    If vH > 255 Then vH = 255
                    .SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    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
    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
    Private Sub RotateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RotateToolStripMenuItem.Click
        Dim grb As Image
        grb = Pic2.Image
        If grb IsNot Nothing Then grb.RotateFlip(RotateFlipType.Rotate90FlipX)
        Pic2.Image = grb
    End Sub
    Private Sub Btnred_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnhijauk.Click
        Dim Pb, Pc As Integer
        Dim vM, vH, vB As Double
        Dim gambar2 = New Bitmap(Pic2.Image)
        For Pb = 0 To gambar2.Height - 1
            For Pc = 0 To gambar2.Width - 1
                vM = gambar2.GetPixel(Pc, Pb).R
                vH = gambar2.GetPixel(Pc, Pb).G + 10
                vB = gambar2.GetPixel(Pc, Pb).B
                If vH >= 255 Then vH = 255
                gambar2.SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
            Next
            Pic2.Image = gambar2
            Pic2.Refresh()
        Next
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Pic2.Image = Pic1.Image
    End Sub
    Private Sub Btnhijau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnhijau.Click
        Dim Pb, Pc As Integer
        Dim vM, vH, vB As Double
        Dim gambar2 = New Bitmap(Pic2.Image)
        For Pb = 0 To gambar2.Height - 1
            For Pc = 0 To gambar2.Width - 1
                vM = gambar2.GetPixel(Pc, Pb).R
                vH = gambar2.GetPixel(Pc, Pb).G - 10
                vB = gambar2.GetPixel(Pc, Pb).B
                If vH <= 0 Then vH = 0
                gambar2.SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
            Next
            Pic2.Image = gambar2
            Pic2.Refresh()
        Next
    End Sub
    Private Sub ContrasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContrasToolStripMenuItem.Click
        gambar = New Bitmap(Pic1.Image)
        Pic1.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()
                    Pic1.Refresh()
                End If
            Next
        End With
    End Sub
    Private Sub SmoothingToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SmoothingToolStripMenuItem.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 / 9 'a 
        MF(0, 1) = 1 / 9 'b 
        MF(0, 2) = 1 / 9 'c 
        MF(1, 0) = 1 / 9 'd 
        MF(1, 1) = 1 / 9 'e 
        MF(1, 2) = 1 / 9 'f 
        MF(2, 0) = 1 / 9 'g 
        MF(2, 1) = 1 / 9 'h 
        MF(2, 2) = 1 / 9 'i 
        gambar = New Bitmap(Pic1.Image)
        Pic1.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
        Pic1.Width = Pic1.Width
        Pic1.Show()
        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.Text = Int(100 * i / (Pic1.Image.Height - 2))
                    Pic1.Refresh()
                End If
            Next
        End With
        Pic1.Image = gambar
        Pic1.Refresh()
        Me.Text = "Proses Smoothing Image berhasil"
    End Sub
End Class
Home »
tugas manipulasi citra
 » Manipulasi Citra Lanjutan
Manipulasi Citra Lanjutan
Posted by puji lestari
 Posted on 23.16
 with 1 comment
Written by : Puji - Berbagi bersama...!!!
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam id libero non erat fermentum varius eget at elit. Suspendisse vel mattis diam. Ut sed dui in lectus hendrerit interdum nec ac neque. Praesent a metus eget augue lacinia accumsan ullamcorper sit amet tellus.
Join Me On: Facebook | Twitter | Google Plus :: Thank you for visiting ! ::



Assalamu'alaikum, blogwalking, baca-baca, cari inspirasi n salam ukhuwah.. ^_^
BalasHapusSekalian mau ngasih tau kalo di Toko Busana Muslimah Online
Banyak Banget Jilbab Cantik Murah Meriah, Kerudung, Hijab, Abaya, Turban, Shawl, Gamis, Mukena, Sejadah, Selendang, Aksesoris, DLL