Tampilkan postingan dengan label vb net. Tampilkan semua postingan
Tampilkan postingan dengan label vb net. Tampilkan semua postingan

Jumat, 28 Juni 2013

Pengolahan CitraAGZ Bumz



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

Tampilannya : 



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

Tampilannya : 



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
  

Tampilannya : 



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

Tampilannya : 



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
  

Tampilannya : 



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

                                   Tampilannya :



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
  

                                    Tampilannya : 


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
  
 Tampilannya :



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


  Tampilannya :




10. 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 Scale berhasil"
        End If

    End Sub
End Class
  


Tampilannya :



Tugas SI-P1101