Minggu, 30 Juni 2013

pengolahan citra


Didalam Pengolahan Citra ada bermacam macam jenis seperti pada contoh dibawah ini :

1.DEFAULT GAMBAR

2. GRAYSCALE

3. NEGATIF

4. BRIGTHNESS

5. BINER

6. SMOOTHING

7. CONTRAST

8. ROTATE 180

9. ROTATE 90

10. INVERSI


Berikut Listing Program dan Tampilannya :


Public Class Form1

    Dim gambar As Bitmap


    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 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 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
 
 
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. 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
 
4. BRIGTHNESS

    Private Sub BrigthnessToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrigthnessToolStripMenuItem.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
 
5. 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
 
6. SMOOTHING

    Private Sub SmooToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SmooToolStripMenuItem.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)

        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


        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 Smoothing Image berhasil"


    End Sub
 
7. CONTRAST

     Private Sub ContrastToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContrastToolStripMenuItem.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
  
8. ROTATE 180

    Private Sub Rotate180ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rotate180ToolStripMenuItem.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. ROTATE 90
    Private Sub Rotate90ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rotate90ToolStripMenuItem.Click
        Dim rgb As Image
        rgb = Pic2.Image
        If rgb IsNot Nothing Then rgb.RotateFlip(RotateFlipType.Rotate90FlipXY)
        Pic2.Image = rgb
    End Sub
 
 
 
 
 

Tugas SI-P1101