Berikut Design Program Pengolahan citra :
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 As Integer
Dim vM, vH, vB As Double
With gambar
For Pb = 0 To .Height - 1
For Pc = 0 To .Width - 1
vM = 225 - .GetPixel(Pc, Pb).R
vH = 225 - .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 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
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 DefaultGambarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DefaultGambarToolStripMenuItem.Click
gambar = New Bitmap(Pic1.Image)
End Sub
Private Sub ContrastToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContrastToolStripMenuItem.Click
Dim Pb, Pc As Integer
Dim vM, vH, vB As Double
Dim tc As Integer
tc = 5
With gambar
For Pb = 0 To .Height - 0 - 1
For Pc = 0 To .Width - 0 - 1
vM = .GetPixel(Pc, Pb).R
vH = .GetPixel(Pc, Pb).G
vB = .GetPixel(Pc, Pb).B
'grey = (vM + vH + vB) / 3 'konversi konversi warna pada pixel Pb,Pc ke grey
vM = vM * tc
vH = vH * tc
vB = vB * tc
If (vM > 255) Then
vM = 255
End If
If (vH > 255) Then
vH = 255
End If
If (vB > 255) Then
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 Rotasi(ByVal s As RotateFlipType)
gambar = New Bitmap(Pic1.Image)
Pic2.Image = gambar
gambar.RotateFlip(s)
Pic2.Image = gambar
Pic2.Refresh()
End Sub
Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
Rotasi(RotateFlipType.Rotate90FlipNone)
End Sub
Private Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.Click
Rotasi(RotateFlipType.Rotate180FlipNone)
End Sub
Private Sub ToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.Click
Rotasi(RotateFlipType.Rotate270FlipNone)
End Sub
Private Sub FilterSmoothingToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FilterSmoothingToolStripMenuItem.Click
Dim bitmap As New Bitmap(Pic1.Image)
Dim DX As Integer = 1
Dim DY As Integer = 1
Dim vM, vH, vB As Double
Dim Pb, Pc As Integer
Dim k As Integer, l As Integer 'untuk mask border
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
With gambar
For Pb = DX To .Height - DX - 1
For Pc = DY To .Width - DY - 1
'proses matriks filter
'point(Pc,Pb)*e --> titik tengah
vM = CInt(.GetPixel(Pc, Pb).R) * MF(1, 1)
vH = CInt(.GetPixel(Pc, Pb).G) * MF(1, 1)
vB = CInt(.GetPixel(Pc, Pb).B) * MF(1, 1)
'proses titik tetangga
'point(Pc-1,Pb-1)*a--> MF(0,0)--> titik kiri atas
If Pc - 1 < 1 And Pb - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(0, 0))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(0, 0))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(0, 0))
Else
vM = vM + (CInt(.GetPixel(Pc - 1, Pb - 1).R) * MF(0, 0))
vH = vH + (CInt(.GetPixel(Pc - 1, Pb - 1).G) * MF(0, 0))
vB = vB + (CInt(.GetPixel(Pc - 1, Pb - 1).B) * MF(0, 0))
End If
'point(Pc,Pb-1)*b --> MF(0,1) --> titik atas
If Pb - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(0, 1))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(0, 1))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(0, 1))
Else
vM = vM + (CInt(.GetPixel(Pc, Pb - 1).R) * MF(0, 1))
vH = vH + (CInt(.GetPixel(Pc, Pb - 1).G) * MF(0, 1))
vB = vB + (CInt(.GetPixel(Pc, Pb - 1).B) * MF(0, 1))
End If
'point(Pc+1,Pb-1)*c --> MF(0,2) --> titik kanan atas
If Pc + 1 > .Width - DY - 1 And Pb - 1 > 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(0, 2))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(0, 2))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(0, 2))
Else
vM = vM + (CInt(.GetPixel(Pc + 1, Pb - 1).R) * MF(0, 2))
vH = vH + (CInt(.GetPixel(Pc + 1, Pb - 1).G) * MF(0, 2))
vB = vB + (CInt(.GetPixel(Pc + 1, Pb - 1).B) * MF(0, 2))
End If
'point(Pc-1,Pb)*d --> MF(1,0) --> titik kiri
If Pc - 1 < 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(1, 0))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(1, 0))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(1, 0))
Else
vM = vM + (CInt(.GetPixel(Pc - 1, Pb).R) * MF(1, 0))
vH = vH + (CInt(.GetPixel(Pc - 1, Pb).G) * MF(1, 0))
vB = vB + (CInt(.GetPixel(Pc - 1, Pb).B) * MF(1, 0))
End If
'point(Pc+1,Pb)*f --> MF(1,2) --> titik kanan
If Pc + 1 > .Width - DY - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(1, 2))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(1, 2))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(1, 2))
Else
vM = vM + (CInt(.GetPixel(Pc + 1, Pb).R) * MF(1, 2))
vH = vH + (CInt(.GetPixel(Pc + 1, Pb).G) * MF(1, 2))
vB = vB + (CInt(.GetPixel(Pc + 1, Pb).B) * MF(1, 2))
End If
'point(Pc-1,Pb+1)*g --> MF(2,0) --> titik kiri bawah
If Pc - 1 < 1 And Pb + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(2, 0))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(2, 0))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(2, 0))
Else
vM = vM + (CInt(.GetPixel(Pc - 1, Pb + 1).R) * MF(2, 0))
vH = vH + (CInt(.GetPixel(Pc - 1, Pb + 1).G) * MF(2, 0))
vB = vB + (CInt(.GetPixel(Pc - 1, Pb + 1).B) * MF(2, 0))
End If
'point(Pc,Pb+1)*g --> MF(2,1) --> titik bawah
If Pb + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(2, 1))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(2, 1))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(2, 1))
Else
vM = vM + (CInt(.GetPixel(Pc, Pb + 1).R) * MF(2, 1))
vH = vH + (CInt(.GetPixel(Pc, Pb + 1).G) * MF(2, 1))
vB = vB + (CInt(.GetPixel(Pc, Pb + 1).B) * MF(2, 1))
End If
'point(Pc+1,Pb+1)*h --> MF(2,2) --> titik kanan bawah
If Pc + 1 > .Width - DY - 1 And Pb + 1 > .Height - DX - 1 Then 'jika out of border ambil nilai tengah/point(x,y)
vM = vM + (CInt(.GetPixel(Pc, Pb).R) * MF(2, 2))
vH = vH + (CInt(.GetPixel(Pc, Pb).G) * MF(2, 2))
vB = vB + (CInt(.GetPixel(Pc, Pb).B) * MF(2, 2))
Else
vM = vM + (CInt(.GetPixel(Pc + 1, Pb + 1).R) * MF(2, 2))
vH = vH + (CInt(.GetPixel(Pc + 1, Pb + 1).G) * MF(2, 2))
vB = vB + (CInt(.GetPixel(Pc + 1, Pb + 1).B) * MF(2, 2))
End If
'normalisasi
If (vM < 0) Then
vM = 0
Else
If (vM > 255) Then
vM = 255
End If
End If
If (vH < 0) Then
vH = 0
Else
If (vH > 255) Then
vH = 255
End If
End If
If (vB < 0) Then
vB = 0
Else
If (vB > 255) Then
vB = 255
End If
End If
'simpan warna hasil smoothing ke point Pc,Pb
.SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
Next
Pic2.Image = gambar
Pic2.Refresh()
Next
End With
End Sub
Maka hasilnya seperti berikut :
Tampilan Grayscale :
Tampilan Negatif :
Tampilan Brigthness:
Tampilan Rotate 90 Derajat :
Tampilan 180 Derajat :
Tampilan 270 derajat :
Tampilan Biner :
Tampilan Contrast :
















