PENGELOHAN CITRA
Berikut
ini Listing Program dan 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 Open_citra.Click
OFD1.Filter = "BMP|*.bmp|JPG|*.jpg"
OFD1.ShowDialog()
If
OFD1.FileName = "" Then Exit Sub
Pic1.Image =
Image.FromFile(OFD1.FileName)
gambar = New
Bitmap(Pic1.Image)
End Sub
Private Sub SFD_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Save_citra.Click
SFD1.Filter = "JPG|*.jpg|BMP|*.bmp"
SFD1.ShowDialog()
If
SFD1.FileName = "" Then Exit Sub
If
SFD1.FilterIndex = 1 Then
gambar.Save(SFD1.FileName,
System.Drawing.Imaging.ImageFormat.Jpeg)
End If
If
SFD1.FilterIndex = 2 Then
gambar.Save(SFD1.FileName,
System.Drawing.Imaging.ImageFormat.Bmp)
End If
End Sub
Private Sub KeluarToolStripMenuItem1_Click(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles
KeluarToolStripMenuItem1.Click
End
End Sub
Private Sub Form1_Load(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.Text
= "rahmi rasfanny"
End Sub
Private Sub Btn_hijauu_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_hijauu.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 Btn_Hijau_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_Hijau.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
Tampilannya :
1.Grayscale
Listing Program :
Private Sub Grayscale_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 :
2. Negatif
Listing Program :
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 = 225 - .GetPixel(pc,
pb).R
vH = 225 - .GetPixel(pc,
pb).G
vB = 225 - .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 :
3. Brigthness
Listing Program :
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 >
225 Then vM = 225
If
vB > 225 Then vB = 225
If
vH > 225 Then vH = 225
.SetPixel(pc, pb,
Color.FromArgb(vM, vH, vB))
Next
Pic2.Image = gambar
Pic2.Refresh()
Next
End With
End Sub
Tampilannya :
4 . Biner
Listing Program :
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 = 225 - .GetPixel(pc,
pb).R
vH = 225 - .GetPixel(pc,
pb).G
vB = 225 - .GetPixel(pc,
pb).B
rata = (vM + vH + vB) / 3
If
(rata < 128) Then
vM = 0
vH = 0
vB = 0
Else
vM = 225
vH = 225
vB = 225
End
If
.SetPixel(pc, pb,
Color.FromArgb(vM, vH, vB))
Next
Pic2.Image = gambar
Pic2.Refresh()
Next
End With
End Sub
Tampilannya :
5 . Retote
Listing Program :
Private Sub RotateToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles
RotateToolStripMenuItem.Click
Dim rgb
As Image
rgb = Pic2.Image
If rgb IsNot Nothing Then rgb.RotateFlip(RotateFlipType.Rotate90FlipXY)
Pic2.Image = rgb
End Sub
Tampilannya :
6 . Contrast
Listing Program :
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 :
7 . Semoothing
Listing Program :
Private Sub SemothingToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles
SemothingToolStripMenuItem.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 :
8 . Inversi
Listing Program :
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
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
Logaritmik berhasil"
End If
End Sub
Tampilannya :
9 . Logaritmik
Listing Program :
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
Logaritmik berhasil"
End If
End Sub
Tampilannya :
10 . Low pass
Listing Program :
Private Sub WeigToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles
WeigToolStripMenuItem.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
Tampilannya :
11 . Hegh pass
Listing Program :
Private Sub HeghPassToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles
HeghPassToolStripMenuItem.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
= "Proses High Pass Image berhasil"
End Sub
Tampilannya :