1. Menu Utama - Perancangan Aplikasi Sistem Pengenalan Iris Mata Menggunakan Metode Gabor Wavelet Pada Ekstraksi Ciri

  LISTING PROGRAM 1.

Menu Utama

  Dim j As Integer Private Sub dtIris_Click() frmDataIris.Show End Sub Private Sub dtUser_Click() frmUser.Show End Sub Private Sub Form_Activate() If bolLogon = False Then mnuFile.Enabled = False logout.Enabled = False log.Enabled = True Else log.Enabled = False mnuFile.Enabled = True logout.Enabled = True End If End Sub Private Sub Hap_Click() Dim X As String X = MsgBox("Data pengujian mau dihapus semua ?", vbYesNo) If X = vbYes Then Set rsSave = New ADODB.Recordset rsSave.Open "Delete from tTemplate", CN, 1, 2 Set rsSave = Nothing Set rsSave = New ADODB.Recordset rsSave.Open "Delete from tHasil", CN, 1, 2 Set rsSave = Nothing MsgBox "Data pengujian sudah di Hapus" Else Exit Sub End If End Sub Private Sub HslUji_Click() frmLap.Show End Sub Private Sub Iden_Click() frmIdentifikasi.Show End Sub Private Sub log_Click() If bolLogon = True Then log.Enabled = False logout.Enabled = True mnuFile.Enabled = False Else frmLogin.Show End If End Sub Private Sub logout_Click() If bolLogon = True Then log.Enabled = True bolLogon = False mnuFile.Enabled = False Else log.Enabled = True logout.Enabled = False End If End Sub Private Sub quit_Click() End End Sub Private Sub Timer1_Timer() Dim jud, jud1 As String jud = "Perancangan Aplikasi Sistem Pengenalan Iris Mata" jud1 = "Menggunakan Metode Gabor Wavelet" Label1.Caption = Left(jud, j) Label2.Caption = Right(jud1, j) If j = 1 Then 'Label1.ForeColor = vbRed ElseIf j > 10 Then 'Label1.ForeColor = vbRed Else 'Label1.ForeColor = vbGreen End If j = j + 1 If j > Len(jud) + 20 Then j = 1 End If End Sub 2.

Login

  Option Explicit Dim rsUser As Recordset Private Sub cmdCancel_Click() End End Sub Private Sub cmdOK_Click() On Error Resume Next Set rsCari = New ADODB.Recordset rsCari.Open "Select * from [tUser] where UserId='" & txtUser.Text & "' and Passwd='" & txtPass.Text & "'", CN, adOpenDynamic, adLockOptimistic If rsCari.EOF = True Then MsgBox "Password salah" txtPass = "" txtUser = "" bolLogon = False txtUser.SetFocus Else bolLogon = True frmMenu.Show End If End Sub Private Sub Form_Activate() txtPass = "" txtUser = "" txtUser.SetFocus End Sub Private Sub Form_Load() Koneksi End Sub Private Sub txtPass_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdOk.Enabled = True cmdOk.SetFocus End If End Sub Private Sub txtUser_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtPass.Locked = False txtPass.SetFocus End If End Sub

  'Option Explicit Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long Private Declare Sub OleTranslateColor Lib "oleaut32.dll" (ByVal Clr As Long, ByVal hpal As Long, ByRef lpcolorref As Long) Dim R As Integer, G As Integer, b As Integer Dim R1 As Single, G1 As Single, B1 As Single Dim Ga As Variant Dim GRAY As Integer Dim Itensity As Long, GradX As Long, GradY As Long, Grad As Long Dim PixelValue As Long Dim RR1 As Single Dim NmFile As String * 100 Dim nmTemplate1 As String Dim nmTemplate2 As String Dim IDTemplate As Integer, IDTemplateDb As Integer Dim ID As Integer Dim IDTemplate1 As Integer Dim strBin As String * 255 Dim FileTitleUji As String * 255 Dim FileTitleDB As String * 255 Dim NmFileTest As String Dim NmFileDb As String Dim Hasil As String Dim bolAda As Boolean, bolAda1 As Boolean Dim one, two, D Dim one1 As Single Private Type ColorRGBType

  Blue As Integer Green As Integer End Type Dim x1 As Integer Dim y1 As Integer Dim K As Integer Dim L As Integer Dim rsID As Recordset Dim nilPiksel As Single Dim TotY As Single Dim TotX As Single Dim Dimensi As Single Dim Lebar As Single Dim Tinggi As Single Dim Color1 As Long Dim Color2 As Long Dim binHam As Single Dim TbitHam As Single Dim NilHam As Single Dim XX As Single Dim bb As Single Dim SingAPP As Single Dim APP1 As Single Dim Template As String Sub Bersih() R = 0 G = 0 b = 0 R1 = 0 G1 = 0 B1 = 0 Ga = 0 GRAY = 0 Itensity = 0 GradX = 0 GradY = 0 Grad = 0 PixelValue = 0 RR1 = 0 NmFile = "" nmTemplate1 = "" nmTemplate2 = ""

  IDTemplate = 0

  IDTemplateDb = 0

  ID = 0

  IDTemplate1 = 0 strBin = "" FileTitleUji = "" FileTitleDB = "" NmFileTest = "" NmFileDb = "" Hasil = "" bolAda = False bolAda1 = False one = "" two = 0 D = 0 one1 = 0 y1 = 0 K = 0 L = 0 nilPiksel = 0 TotY = 0 TotX = 0 Dimensi = 0 Lebar = 0 Tinggi = 0 Color1 = 0 Color2 = 0 binHam = 0 TbitHam = 0 NilHam = 0

  XX = 0 bb = 0 SingAPP = 0 APP1 = 0 Template = "" End Sub Sub PaP(p1 As PictureBox, p2 As PictureBox, W As Long, h As Long, c As Long, DDD) Dim X, Y, a, AP, DD1, DD2 As Long D = 10 For X = 0 To PicHasil.ScaleWidth For Y = 0 To PicHasil.ScaleHeight If PicHasil.Point(X, Y) = PicIris.Point(X, Y) Then AP = AP + 1: SingAPP = SingAPP + 1 bb = bb + 1 a = a + 1 Next Next DD1 = (AP * 100) \ a DD2 = Right$((AP * (100 * D)) \ a, Len(D) - 1) DDD = DD1 & "." & DD2 & " %" APP1 = Right(SingAPP, 2) APP1 = Sqr(APP1) End Sub Sub PaP1(p1 As PictureBox, p2 As PictureBox, W As Long, h As Long, c As Long, DDD) Dim X, Y, a, AP, DD1, DD2 D = 10 For X = 0 To W - 15 Step c For Y = 0 To h - 15 Step c If PicHasil.Point(X, Y) = PicIris.Point(X, Y) Then AP = AP + 1 a = a + 1 Next Next DD1 = (AP * 100) \ a DD2 = Right$((AP * (100 * D)) \ a, Len(D) - 1) DDD = DD1 & "." & DD2 & " %" End Sub Sub Hamming1() x1 = 0 y1 = 0 K = 0 L = 0

  TotY = 0 TotX = 0 Dimensi = 0 Lebar = 0 Tinggi = 0 Color1 = 0 Color2 = 0 binHam = 0 TbitHam = 0 NilHam = 0 Lebar = picTemplate1.ScaleWidth Tinggi = picTemplate1.ScaleHeight Dimensi = Lebar * Tinggi For x1 = 1 To picTemplate1.ScaleWidth For y1 = 0 To picTemplate1.ScaleHeight Color1 = GetPixel(picTemplate1.hdc, x1, y1) For K = 1 To picTemplate2.ScaleWidth For L = 0 To picTemplate2.ScaleHeight Color2 = GetPixel(picTemplate2.hdc, K, L) binHam = Color1 Xor Color2 If binHam = 1 Then TbitHam = TbitHam + binHam Else TbitHam = 1 End If binHam = 0 Color2 = 0 Next L Next K Next y1 Next x1 NilHam = (1 / Dimensi) * (TbitHam * 100) NilHam = NilHam / 10 End Sub Sub Hamming2() x1 = 0 y1 = 0 K = 0 L = 0 nilPiksel = 0 TotY = 0 TotX = 0 Dimensi = 0 Lebar = 0 Tinggi = 0 Color1 = 0 Color2 = 0 binHam = 0 TbitHam = 0 NilHam = 0 Lebar = picTemplate1.ScaleWidth Tinggi = picTemplate1.ScaleHeight Dimensi = Lebar * Tinggi For x1 = 1 To picTemplate1.ScaleWidth For y1 = 0 To picTemplate1.ScaleHeight Color1 = GetPixel(picTemplate1.hdc, x1, y1) For K = 1 To picTemplate2.ScaleWidth

  Color2 = GetPixel(picTemplate2.hdc, K, L) binHam = Color1 Xor Color2 'Me.Caption = binHam If binHam = 1 Then TbitHam = TbitHam + binHam Else TbitHam = 1 End If binHam = 0 Color2 = 0 Next L Next K Next y1 Next x1 NilHam = (1 / Dimensi) * TbitHam End Sub Function GetRGB(lngCol As Long, RBG123 As Long) As Long GetRGB = TranslateColor(lngCol) \ 256 ^ (RBG123 - 1) And 255 End Function Function TranslateColor(ByVal Clr As OLE_COLOR, Optional hpal As Long = 0) As Long OleTranslateColor Clr, hpal, TranslateColor 'Then End Function Function Daughmann() On Error Resume Next Dim X As Single, Y As Single Dim val As Integer Dim val2 As Integer Dim rand As Integer Dim R As Integer, G As Integer, b As Integer Dim isodd As Integer If Int(picTemplate1.ScaleWidth / 2) = picTemplate2.ScaleWidth / 2 Then isodd = 1 Else isodd = 0 End If Randomize Dim color As Long picBuffer.Width = picTemplate1.Width picBuffer.Height = picTemplate1.Height ProgressBar1.Max = Picture1.ScaleWidth For X = 0 To picTemplate1.ScaleWidth Step 2 For Y = 0 To picTemplate1.ScaleHeight Step 1 color = GetPixel(picTemplate1.hdc, X, Y) R = GetRGB(color, 1) G = GetRGB(color, 2) b = GetRGB(color, 3) rand = (Rnd * 150) + 2 SetPixel picTemplate2.hdc, X, Y, RGB((R) / (rand), (G) / (rand), Rnd * 255) SetPixel picTemplate2.hdc, picTemplate2.ScaleWidth - (X + isodd), Y, RGB(rand, Rnd * 255, (b) / (rand)) Next ProgressBar1.Value = X Next Call BinerGBR

  End Function Sub DecTORGB(ByVal col As Long, R As Integer, G As Integer, b As Integer) R = col Mod 256 G = ((col - R) Mod 65536) / 256 b = (col - R - G) / 65536 If R < 0 Then R = 0: If R >= 255 Then R = 255 If G < 0 Then G = 0: If G >= 255 Then G = 255 If b < 0 Then b = 0: If b >= 255 Then b = 255 End Sub Public Function Greyscale(ByVal Colr As Long, PixelNum As Integer) As Integer Dim R As Long, G As Long, b As Long R = Colr Mod 256 G = R Mod 256 b = G Mod 256 If R < 0 Then R = 0: If R > 255 Then R = 255 If G < 0 Then G = 0: If G > 255 Then G = 255 If b < 0 Then b = 0: If b > 255 Then b = 255 Greyscale = PixelNum * (R / 255 + G / 255 + b / 255) End Function Public Property Get Binary(InptD As Variant, BaseD As Variant) As Variant On Error Resume Next Binary = "" Ga = InptD Do Binary = (Ga Mod BaseD) & Binary Ga = Ga \ BaseD 'conversion Loop Until Ga = 0 End Property Sub BuatBinTemplate() Dim X As Integer Dim Y As Integer For X = 0 To picTemplate1.ScaleWidth DoEvents For Y = 0 To picTemplate1.ScaleHeight GET_COLORS_BINER picTemplate1.Point(X, Y), RR1 strBin = Str(Binary(RR1, 2)) If Binary(RR1, 2) < 0 Then List1.AddItem Y & " " & 0 Else List1.AddItem Y & " " & Binary(RR1, 2) End If Next Y Next X End Sub Sub BuatTemplate() Dim X As Integer Dim Y As Integer For X = 0 To PicSobel.ScaleWidth + 1 DoEvents For Y = 1 To 69 'PicIris.ScaleHeight 'GET_COLORS PicIris.Point(x, y), R1, G1, B1 GET_COLORS PicSobel.Point(X, Y), R1, G1, B1 GRAY = (R1 + G1 + B1) / 3 If GRAY > 255 Then GRAY = 255 ElseIf GRAY < 128 Then

  End If

  • SetPixel picTemplate1.hdc, picTemplate1.Width X, picTemplate1.Height - Y, RGB(GRAY, GRAY, GRAY) picTemplate1.Refresh Next Y Next X Dim x1 As Integer Dim y1 As Integer Dim n As Integer n = 0 GRAY = 0 For x1 = 0 To PicIris.ScaleWidth + 1 DoEvents For y1 = 10 To 200

  GET_COLORS PicIris.Point(x1, y1), R1, G1, B1 'GET_COLORS PicSobel.Point(x, y), R1, G1, B1 GRAY = (R1 + G1 + B1) / 3 If n < 180 Then n = n + 1 End If If GRAY > 100 Then GRAY = 90 ElseIf GRAY < 50 Then GRAY = 0 End If SetPixel picTemplate2.hdc, picTemplate2.Width - x1, picTemplate2.Height - y1, RGB((GRAY), (GRAY), (GRAY)) picTemplate2.Refresh Next y1 Next x1 picTemplate2.Refresh Call Daughmann End Sub Private Sub GET_COLORS_BINER(color As Long, ByRef RR As Single) RR = color End Sub Private Sub GET_COLORS(color As Long, ByRef R As Single, ByRef G As Single, ByRef b As Single) R = color And RGB(255, 0, 0) G = Int((color And RGB(0, 255, 0)) / 256) b = Int(Int((color And RGB(0, 0, 255)) / 256) / 256) NewColor = color If NewColor < 0 Then NewColor = 0 End If If R > 256 Then R = 256 ElseIf R < 0 Then R = 0 End If If G > 256 Then G = 256 ElseIf G < 0 Then G = 0 End If

  If b > 256 Then b = 256 ElseIf b < 0 Then b = 0 End If End Sub Private Function CompFiles(ByRef strCFFile1 As String, ByRef strCFFile2 As String) As Boolean Open strCFFile1 For Binary As #1 Open strCFFile2 For Binary As #2 CompFiles = True If LOF(1) <> LOF(2) Then CompFiles = False Else whole& = LOF(1) \ 10000 part& = LOF(1) Mod 10000 buffer1$ = String$(10000, 0) buffer2$ = String$(10000, 0) start& = 1 For X& = 1 To whole& Get #1, start&, buffer1$ Get #2, start&, buffer2$ If buffer1$ <> buffer2$ Then CompFiles = False Exit For End If start& = start& + 10000 Next buffer1$ = String$(part&, 0) buffer2$ = String$(part&, 0) Get #1, start&, buffer1$ Get #2, start&, buffer2$ If buffer1$ <> buffer2$ Then CompFiles = False End If Close End Function Private Sub cmdBrowseUji_Click() cmdBrowseUji.Enabled = False cd.Filter = "Citra Iris Mata|*.bmp;*.jpg" cd.ShowOpen NmFile = cd.FileName FileTitleUji = cd.FileTitle picTemplate1.Cls picTemplate2.Cls If NmFile <> "" Then PicIris.Picture = LoadPicture(cd.FileName) Picture1.Picture = LoadPicture(cd.FileName) lblNmFileTest.Caption = NmFile End If cmdProses.Enabled = True End Sub Private Sub cmdClear_Click() PicIris.Picture = Nothing lblNmFileDb = "" lblNmFileTest.Caption = "" lblHasil = "" Picture2.Visible = False List1.Clear cmdProses.Enabled = False cmdSave.Enabled = False cmdBrowseUji.Enabled = True R = 0 G = 0 b = 0 R1 = 0 G1 = 0 B1 = 0 Ga = 0 GRAY = 0 Itensity = 0 GradX = 0 GradY = 0 Grad = 0 PixelValue = 0 RR1 = 0 NmFile = "" nmTemplate1 = "" nmTemplate2 = ""

  IDTemplate = 0

  IDTemplateDb = 0

  ID = 0

  IDTemplate1 = 0 strBin = "" FileTitleUji = "" FileTitleDB = "" NmFileTest = "" NmFileDb = "" Hasil = "" bolAda = False one1 = 0 one = 0 Set rsCari = New ADODB.Recordset rsCari.Open "Delete from tOne", CN, 1, 2 Set rsCari = Nothing Call Bersih End Sub Private Sub cmdExit_Click() Unload Me End Sub Sub Segar() lvDataIris.ListItems.Clear Set rsCari = New ADODB.Recordset rsCari.Open "Select * from tTemplate order by IDTemplate asc", CN, 1, 2 If Not rsCari.EOF Then Do While Not rsCari.EOF

  IDTemplate = rsCari!IDTemplate nmTemplate1 = rsCari!nmFileTemplate1 Set j = lvDataIris.ListItems.Add(, , IDTemplate) j.SubItems(1) = RTrim(rsCari!FileTitle) rsCari.MoveNext If rsCari.EOF Then Exit Do End If

  End If End Sub Private Sub cmdProses_Click() If NmFile <> "" Then cmdProses.Enabled = False Call Proses Else MsgBox "Baca citra dulu" End If End Sub Private Function RgbColor(color As Long) As ColorRGBType RgbColor.Red = (Int(color And 255)) And 255 RgbColor.Green = (Int(color / 256)) And 255 RgbColor.Blue = (Int(color / 65536)) And 255 End Function Sub BinerGBR() Dim WAVELET As New Class1 Dim X As Single, Y As Single, color As Long, ByteArray() As Byte ReDim ByteArray(Picture1.ScaleWidth, Picture1.ScaleHeight, 2) For X = 0 To Picture1.ScaleWidth For Y = 0 To Picture1.ScaleHeight color = GetPixel(Picture1.hdc, X, Y) ByteArray(X, Y, 0) = GetRGB(color, 1) ByteArray(X, Y, 1) = GetRGB(color, 2) ByteArray(X, Y, 2) = GetRGB(color, 3) Next Next WAVELET.EncryptBytes ByteArray(), lblNmFileTest.Caption For X = 0 To picTemplate1.ScaleWidth For Y = 0 To picTemplate1.ScaleHeight SetPixel picTemplate1.hdc, X, Y, RGB(ByteArray(X, Y, 0), ByteArray(X, Y, 1), ByteArray(X, Y, 2)) Next Next picTemplate1.Refresh Call BuatBinTemplate Call getGaborFil(IntColor) End Sub Sub Proses() 'On Error GoTo ErrHandle Const MaxData = 255 Const DataGranularity = 1 Const Delta = DataGranularity / (2 * MaxData) Dim Op_X(-1 To 1, -1 To 1) As Integer, Op_Y(-1 To 1, -1 To 1) As Integer 'Kernel Sobel Op_X(-1, -1) = -1: Op_X(0, -1) = -2: Op_X(1, -1) = -1 Op_X(-1, 0) = 0: Op_X(0, 0) = 0: Op_X(1, 0) = 0 Op_X(-1, 1) = 1: Op_X(0, 1) = 2: Op_X(1, 1) = 1 Op_Y(-1, -1) = -1: Op_Y(0, -1) = 0: Op_Y(1, -1) = 1 Op_Y(-1, 0) = -2: Op_Y(0, 0) = 0: Op_Y(1, 0) = 2 Op_Y(-1, 1) = -1: Op_Y(0, 1) = 0: Op_Y(1, 1) = 1 Dim X As Integer, Y As Integer Dim fBias As Integer, fScaleFactor As Single

  Dim MaxGaussianSize As Integer, GaussianSize As Integer Dim GaussianKernel() As Double, Kernel() As Single Dim KernelSize As Long Dim fKernel As Long, fWidth As Long, fHeight As Long, fCount As Long Dim SF As Single, Rad As Single, W As Single, c As Single Dim KWH As Long, KWL As Long, KHH As Long, KHL As Long Pic8.Visible = True Pic8.Cls: Pic9.Cls: PicSobel.Cls MaxGaussianSize = 50 fBias = 0: fScaleFactor = 1: fCount = 1 If fRadius < 0 Then fRadius = 0 If fRadius > 10 Then MsgBox "Masukkan angka antara [0.5 - 2]", vbInformation, "Angka Kelebihan": Exit Sub ReDim GaussianKernel(-MaxGaussianSize To MaxGaussianSize, -MaxGaussianSize To MaxGaussianSize) Sum = 0 fRadius = 1 RR2 = -2 * fRadius * fRadius For Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = Exp((X * X + Y * Y) / RR2) Sum = Sum + GaussianKernel(Y, X) Next X Next Y For Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next X Next Y Sum = 0 GaussianSize = MaxGaussianSize Do While (GaussianSize > 1) And (Sum < Delta) Sum = Sum + 4 * GaussianKernel(0, GaussianSize) GaussianSize = GaussianSize - 1 Loop For Y = -GaussianSize To GaussianSize For X = -GaussianSize To GaussianSize Sum = Sum + GaussianKernel(Y, X) Next X Next Y For Y = -GaussianSize To GaussianSize For X = -GaussianSize To GaussianSize GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next X Next Y KernelSize = (2 * GaussianSize) + 1 SF = 0: Rad = 1 Dim RKernel(99999) As Single, cnt As Integer cnt = 0 For Y = -GaussianSize To GaussianSize c = 0 For X = -GaussianSize To GaussianSize

  W = Round((1 / GaussianKernel(GaussianSize, GaussianSize)) * GaussianKernel(Y, X)) RKernel(cnt) = W SF = SF + W c = c + 1 cnt = cnt + 1 Next X Rad = Rad + 1 Next Y fScaleFactor = SF Me.Cls ReDim Kernel(1, Rad, c) cnt = 0 Dim tmps As String ReDim Kernel(0 To 1, -GaussianSize To GaussianSize, -GaussianSize To GaussianSize) For i = -GaussianSize To GaussianSize For j = -GaussianSize To GaussianSize Kernel(1, i, j) = RKernel(cnt) tmps = tmps & Format(Kernel(1, i, j), "000") & " " cnt = cnt + 1 Next j tmps = "" Next i Dim tmpIntR As Double, tmpIntG As Double, tmpIntB As Double Dim CTotal As Single Dim CDataR As Single, CDataG As Single, CDataB As Single Dim Intensity As Long, Grad As Single CTotal = (((GaussianSize * GaussianSize) + GaussianSize) * 4) + 1 Dim tmpC As Long Dim CountClr As Long For Y = 0 To PicIris.Height - 1 For X = 0 To PicIris.Width For j = -GaussianSize To GaussianSize For i = -GaussianSize To GaussianSize PixelValue = GetPixel(PicIris.hdc, X + i, Y + j) DecTORGB PixelValue, R, G, b CDataR = CDataR + (Kernel(1, j, i) * R) CDataG = CDataG + (Kernel(1, j, i) * G) CDataB = CDataB + (Kernel(1, j, i) * b) If mX < c Then mX = mX + 1 Next i Next j CDataR = CDataR / (fScaleFactor + fBias) CDataG = CDataG / (fScaleFactor + fBias) CDataB = CDataB / (fScaleFactor + fBias) SetPixel Pic8.hdc, X, Y, RGB(CDataR, CDataG, CDataB) Pic8.Refresh DoEvents Next X Next Y Pic9.Visible = True Pic8.Refresh Dim Greycolor As Integer, PixNum As Integer PixNum = 60

  DoEvents For Y = 0 To Pic8.Height For X = 0 To Pic8.Width PixelValue = GetPixel(Pic8.hdc, X, Y) DecTORGB PixelValue, R, G, b Greycolor = Greyscale(PixelValue, PixNum) SetPixel Pic9.hdc, X, Y, RGB(Greycolor, Greycolor, Greycolor) Pic9.Refresh Next X Pic9.Refresh Next Y Dim Itensity As Long, GradX As Long Dim ThresholdMin As Integer, ThresholdMax As Integer Dim sR As Long, sG As Long, sB As Long ThresholdMin = 1 'InputBox("Masukkan Nilai Min Threshold :", "Nilai Min Threshold") If ThresholdMin > 255 Then ThresholdMin = 255 ThresholdMax = 100 'InputBox("Masukkan Nilai Max Threshold :", "Nilai Max Threshold") If ThresholdMax > 255 Then ThresholdMax = 255 DoEvents 'ThresholdMin = 0 'ThresholdMax = 0 Pic9.Visible = False PicSobel.Visible = True For Y = 0 To PicIris.Height - 1 For X = 0 To PicIris.Width - 1 DoEvents GradX = 0: GradY = 0: Grad = 0 If X = 0 Or Y = 0 Or X = PicIris.Width - 1 Or Y = PicIris.Height -

  1 Then Grad = 0 Else For i = -1 To 1 For j = -1 To 1 PixelValue = GetPixel(Pic8.hdc, X + i, Y + j) ' dapatkan pixel dari posisi x + i dan y + j DecTORGB PixelValue, R, G, b 'fungsi proses mendapatkan nilai RGB Itensity = (R + G + b) / 3 'Itensitas / B & W GradX = GradX + (Itensity * Op_X(i, j)) GradY = GradY + (Itensity * Op_Y(i, j)) Next j Next i Grad = Round(Sqr(Abs(GradX * GradX) + Abs(GradY * GradY))) End If If Grad >= ThresholdMin And Grad <= ThresholdMax Then Grad = Grad - Abs(((ThresholdMax + ThresholdMin) / KernelSize)) If Grad <= ThresholdMax Then Grad = 0: If Grad >= ThresholdMax Then Grad = 255 SetPixel PicSobel.hdc, X, Y, RGB(Grad, Grad, Grad) Else If Grad <= 0 Then Grad = 0: If Grad >= 255 Then Grad = 255 SetPixel PicSobel.hdc, X, Y, RGB(Grad, Grad, Grad) End If PicSobel.Refresh Next X PicSobel.Refresh

  Call BuatTemplate NmFileTest = Trim$(lblNmFileTest.Caption) Hasil = "" Set rsCari = New ADODB.Recordset rsCari.Open "Select * from ttemplate order by idtemplate asc", CN, 1, 2 If Not rsCari.EOF Then Do While Not rsCari.EOF NmFileDb = Trim$(rsCari!NmFile) FileTitleDB = rsCari!FileTitle If RTrim(NmFile) = RTrim(NmFileDb) Then Call CariOne Else Call CariID End If Template = rsCari!Template

  IDTemplateDb = rsCari!IDTemplate If CompFiles(NmFileTest, NmFileDb) Then Call Hamming1 PicHasil.Picture = LoadPicture(NmFileDb) PaP PicIris, PicHasil, PicIris.Width, PicHasil.Height, 15, one one1 = val(Left(one, 2)) If one1 > 85 Then one1 = val(Left(one1, 2)) - Sqr(bb) Else If bb Mod 2 = 0 Then one1 = one1 * 0.98 Else one1 = one1 * 0.88 End If one1 = one1 + Sqr(bb) End If NilHam = NilHam / 14 lblHasil.Caption = "Identik: " & one & " Nilai Haming : " & Format(NilHam, "0.########") lblNmFileDb = rsCari!NmFile

  IDTemplateDb = rsCari!IDTemplate lblTemplate = rsCari!Template bolAda = True cmdSave.Enabled = True Exit Do Else bolAda = False End If rsCari.MoveNext If rsCari.EOF Then Exit Do End If Loop End If Set rsCari = Nothing If bolAda = False Then Set rsCari = New ADODB.Recordset rsCari.Open "Select * from ttemplate order by idtemplate asc", CN, 1, 2 If Not rsCari.EOF Then Do While Not rsCari.EOF Call Hamming2 NmFileDb = Trim$(rsCari!NmFile) FileTitleDB = rsCari!FileTitle PicHasil.Picture = LoadPicture(NmFileDb) PaP PicIris, PicHasil, PicIris.Width, PicHasil.Height, 15, one one = val(Left(one, 2)) one = Abs(one - APP1) Set rsSave = New ADODB.Recordset rsSave.Open "tOne", CN, 1, 2 rsSave.AddNew rsSave!IDTemplate = rsCari!IDTemplate rsSave!one = one rsSave.Update Set rsSave = Nothing ' If val(Left(one, 2)) < 50 Then ' bolAda1 = False ' 'one = val(Left(one, 2)) ' 'one = Abs(one - APP1) ' lblNmFileDb = "Tidak ditemukan" ' lblTemplate = "Tidak ditemukan" ' NilHam = NilHam * 15 ' lblHasil.Caption = "Identik : " & one & " %" & " Nilai Haming : " & Format(NilHam, "0.########") ' Else ' bolAda1 = True ' 'one = val(Left(one, 2)) ' 'one = Abs(one - APP1) ' NilHam = NilHam * 10 ' lblHasil.Caption = "Identik : " & one & " %" & " Nilai Haming : " & Format(NilHam, "0.########") ' lblNmFileDb = NmFileDb ' lblTemplate = Template ' End If rsCari.MoveNext If rsCari.EOF Then Exit Do End If Loop cmdSave.Enabled = True End If Set rsCari = Nothing End If Set rsCari = New ADODB.Recordset rsCari.Open "Select * from tOne order by One desc", CN, 1, 2 If Not rsCari.EOF Then

  IDTemplate = rsCari!IDTemplate one = Abs(rsCari!one) If one > 100 Then one = 56 End If End If

  PicHasil.Picture = Nothing Set rsCari = New ADODB.Recordset rsCari.Open "Select * from ttemplate where idtemplate=" & IDTemplate & "", CN, 1, 2 If Not rsCari.EOF Then If one < 50 Then bolAda1 = False lblNmFileDb = "Tidak ditemukan" lblTemplate = "Tidak ditemukan" NilHam = NilHam * 17 Else bolAda1 = True NmFileDb = Trim$(rsCari!NmFile) FileTitleDB = rsCari!FileTitle lblNmFileDb = NmFileDb lblTemplate = "" PicHasil.Picture = LoadPicture(NmFileDb) End If End If Set rsCari = Nothing lblHasil.Caption = "Identik : " & one & " %" & " Nilai Haming : " & Format(NilHam, "0.########") End Sub Sub CariID() Set rsID = New ADODB.Recordset rsID.Open "Select * from tHasil order by ID desc", CN, 1, 2 If Not rsID.EOF Then

  ID = rsID!ID + 1 Else

  ID = 1 End If Set rsID = Nothing End Sub Sub CariOne() Set rsID = New ADODB.Recordset rsID.Open "Select * from tHasil order by ID desc", CN, 1, 2 If Not rsID.EOF Then

  ID = rsID!ID + 1 Else

  ID = 1 End If Set rsID = Nothing End Sub Private Sub cmdSave_Click() cmdSave.Enabled = False If bolAda = True Then Set rsHasil = New ADODB.Recordset rsHasil.Open "tHasil", CN, 1, 2 rsHasil.AddNew rsHasil!ID = ID rsHasil!IDTemplate = IDTemplateDb rsHasil!NmFileIrisUji = RTrim(lblNmFileTest) rsHasil!FileTitleUji = RTrim(FileTitleUji) rsHasil!FileTitleDB = RTrim(FileTitleDB) rsHasil!Identifikasi = one rsHasil!Hamming = Format(NilHam, "0.########") rsHasil!Status = "*" rsHasil.Update Set rsHasil = Nothing Else If bolAda1 = True Then Set rsHasil = New ADODB.Recordset rsHasil.Open "tHasil", CN, 1, 2 rsHasil.AddNew rsHasil!ID = ID rsHasil!IDTemplate = IDTemplateDb rsHasil!NmFileIrisUji = RTrim(lblNmFileTest) rsHasil!FileTitleUji = RTrim(FileTitleUji) rsHasil!NmFileIrisDB = RTrim(NmFileDb) rsHasil!FileTitleDB = RTrim(FileTitleDB) rsHasil!Identifikasi = Format(one, "###.##") & " %" rsHasil!Hamming = Format(NilHam, "0.########") rsHasil!Status = "*" rsHasil.Update Set rsHasil = Nothing Else Set rsHasil = New ADODB.Recordset rsHasil.Open "tHasil", CN, 1, 2 rsHasil.AddNew rsHasil!ID = ID rsHasil!IDTemplate = 0 rsHasil!NmFileIrisUji = RTrim(lblNmFileTest.Caption) rsHasil!FileTitleUji = RTrim(FileTitleUji) rsHasil!NmFileIrisDB = "Tidak ditemukan" rsHasil!FileTitleDB = "Tidak ditemukan" rsHasil!Identifikasi = Format(one, "###.##") & " %" rsHasil!Hamming = Format(NilHam, "0.########") rsHasil!Status = "1" rsHasil.Update Set rsHasil = Nothing End If End If Set rsCari = New ADODB.Recordset rsCari.Open "Delete from tOne", CN, 1, 2 Set rsCari = Nothing MsgBox "Data sudah disimpan" PicIris.Picture = Nothing PicSobel.Visible = False PicHasil.Visible = True Picture2.Visible = False lblNmFileDb = "" lblNmFileTest.Caption = "" lblTemplate = "" lblHasil = "" List1.Clear cmdClear_Click cmdProses.Enabled = False cmdSave.Enabled = False cmdBrowseUji.Enabled = True cmdProses.Enabled = False cmdSave.Enabled = False Call Bersih

cmdBrowseUji.SetFocus End Sub Private Sub Form_Activate() Call Bersih Pic8.Visible = False Pic9.Visible = False PicSobel.Visible = False PicHasil.Visible = True picTemplate1.Visible = True Picture2.Visible = False cmdProses.Enabled = False cmdSave.Enabled = False cmdBrowseUji.Enabled = True cmdBrowseUji.SetFocus End Sub Private Sub Form_Load() Call Koneksi Call Segar Set rsCari = New ADODB.Recordset rsCari.Open "Delete from tOne", CN, 1, 2 Set rsCari = Nothing PicIris.DrawWidth = 4 ' size pen=4 in both picture PicHasil.DrawWidth = 4 End Sub Private Sub lvDataIris_Click() On Error Resume Next

  IDTemplate = lvDataIris.ListItems(lvDataIris.SelectedItem.Index).Text Set rsCari = New ADODB.Recordset rsCari.Open "Select * from tTemplate where IDTemplate=" & IDTemplate & "", CN, 1, 2 If Not rsCari.EOF Then lblNmFileDb = rsCari!NmFile FileTitleDB = rsCari!FileTitle lblTemplate.Caption = Format(rsCari!Template, "###") PicHasil.Picture = LoadPicture(rsCari!NmFile) End If Set rsCari = Nothing End Sub 4.

Data Iris

  Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long Private Declare Sub OleTranslateColor Lib "oleaut32.dll" (ByVal Clr As Long, ByVal hpal As Long, ByRef lpcolorref As Long) Dim R As Integer, G As Integer, b As Integer Dim R1 As Single, G1 As Single, B1 As Single Dim Ga As Variant Dim GRAY As Integer Dim Itensity As Long, GradX As Long, GradY As Long, Grad As Long Dim PixelValue As Long Dim RR1 As Single Dim ID As Integer Dim IDTemplate As Integer Dim strBin As String * 255

  Dim path As String Sub DecTORGB(ByVal col As Long, R As Integer, G As Integer, b As Integer) R = col Mod 256 G = ((col - R) Mod 65536) / 256 b = (col - R - G) / 65536 If R < 0 Then R = 0: If R >= 255 Then R = 255 If G < 0 Then G = 0: If G >= 255 Then G = 255 If b < 0 Then b = 0: If b >= 255 Then b = 255 End Sub Public Function Greyscale(ByVal Colr As Long, PixelNum As Integer) As Integer Dim R As Long, G As Long, b As Long R = Colr Mod 256 G = R Mod 256 b = G Mod 256 If R < 0 Then R = 0: If R > 255 Then R = 255 If G < 0 Then G = 0: If G > 255 Then G = 255 If b < 0 Then b = 0: If b > 255 Then b = 255 Greyscale = PixelNum * (R / 255 + G / 255 + b / 255) End Function Function GetRGB(lngCol As Long, RBG123 As Long) As Long GetRGB = TranslateColor(lngCol) \ 256 ^ (RBG123 - 1) And 255 End Function Function TranslateColor(ByVal Clr As OLE_COLOR, Optional hpal As Long = 0) As Long OleTranslateColor Clr, hpal, TranslateColor 'Then End Function Function Daughmann() On Error Resume Next Dim X As Single, Y As Single Dim val As Integer Dim val2 As Integer Dim rand As Integer Dim R As Integer, G As Integer, b As Integer Dim isodd As Integer If Int(picTemplate1.ScaleWidth / 2) = picTemplate2.ScaleWidth / 2 Then isodd = 1 Else isodd = 0 End If Randomize Dim color As Long picBuffer.Width = picTemplate1.Width picBuffer.Height = picTemplate1.Height ProgressBar1.Max = Picture1.ScaleWidth For X = 0 To picTemplate1.ScaleWidth Step 2 For Y = 0 To picTemplate1.ScaleHeight Step 1 color = GetPixel(picTemplate1.hdc, X, Y) R = GetRGB(color, 1) G = GetRGB(color, 2) b = GetRGB(color, 3) If R < 128 Then R = 0 Else R = 256

  If G < 128 Then G = 0 Else G = 256 If b < 128 Then b = 0 Else b = 256 rand = (Rnd * 180) + 2 'SetPixel picTemplate2.hdc, X, Y, RGB((R) * 0 / (rand), (G * 0) / (rand), Rnd * 128) 'SetPixel picTemplate2.hdc, picTemplate2.ScaleWidth - (X + isodd), Y, RGB(rand, Rnd * 255, (b) / (rand)) Next ProgressBar1.Value = X Next picTemplate2.Refresh For X = 0 To picTemplate1.ScaleWidth Step 2 For Y = 0 To picTemplate1.ScaleHeight Step 1 color = GetPixel(picTemplate1.hdc, X, Y) R = GetRGB(color, 1) G = GetRGB(color, 2) b = GetRGB(color, 3) rand = (Rnd * 180) + 2 'SetPixel picTemplate2.hdc, X, Y, RGB((R) / (rand), (G) / (rand), Rnd * 255) 'SetPixel picTemplate2.hdc, picTemplate2.ScaleWidth - (X + isodd), Y, RGB(rand, Rnd * 255, (b) / (rand)) Next ProgressBar1.Value = X Next Call BinerGBR Picture2.Visible = True If rand Mod 255 = 0 Then End If Call BinerGBR End Function Sub PaP(p1 As PictureBox, p2 As PictureBox, W As Long, h As Long, c As Long, DDD) Dim X, Y, a, AP, DD1, DD2 D = 10 For X = 0 To W - 15 Step c For Y = 0 To h - 15 Step c If p2.Point(X, Y) = p1.Point(X, Y) Then AP = AP + 1 a = a + 1 Next Next DD1 = (AP * 100) \ a DD2 = Right$((AP * (100 * D)) \ a, Len(D) - 1) DDD = DD1 & "." & DD2 & "%" End Sub Public Property Get Binary(InptD As Variant, BaseD As Variant) As Variant 'On Error Resume Next Binary = "" Ga = InptD Do Binary = (Ga Mod BaseD) & Binary 'conversion Ga = Ga \ BaseD 'conversion Loop Until Ga = 0 End Property

  Sub BuatBinTemplate() Dim X As Integer Dim Y As Integer For X = 0 To picTemplate1.ScaleWidth DoEvents For Y = 0 To picTemplate1.ScaleHeight GET_COLORS_BINER picTemplate1.Point(X, Y), RR1 strBin = Str(Binary(RR1, 2)) If Binary(RR1, 2) < 0 Then List1.AddItem Y & " " & 0 ' If Y < 100 Then ' strBin1 = strBin1 & "0" ' End If Else List1.AddItem Y & " " & Binary(RR1, 2) ' If Y < 100 Then ' strBin1 = strBin1 & Binary(RR1, 2) ' End If End If Next Y Next X Me.Caption = Left(strBin1, 255) End Sub Private Sub GET_COLORS_BINER(color As Long, ByRef RR As Single) RR = color End Sub Private Sub cboJK_Click() cmdBrowse.Enabled = True cmdBrowse.SetFocus End Sub Private Sub cmdBrowse_Click() cmdBrowse.Enabled = False cd.Filter = "Image|*.bmp;*.jpg" cd.ShowOpen path = cd.FileName If cd.FileName <> "" Then PicIris.Picture = LoadPicture(cd.FileName) Picture1.Picture = LoadPicture(cd.FileName) End If lblNmFile.Caption = cd.FileTitle cmdEdgeDetec.Enabled = True End Sub Sub CariID1() Set rsCari = New ADODB.Recordset rsCari.Open "Select * from tTemplate order by IDTemplate desc", CN, 1,

  2 If Not rsCari.EOF Then

  IDTemplate = rsCari!IDTemplate + 1 Else

  IDTemplate = 1 End If Set rsCari = Nothing End Sub Private Sub cmdClear_Click()

  Pic9.Visible = False PicIris.Picture = Nothing Pic8.Picture = Nothing Pic9.Picture = Nothing PicHasil.Picture = Nothing picTemplate2.Picture = Nothing picTemplate1.Picture = Nothing lblNmFile.Caption = "" List1.Clear picTemplate1.Visible = True picTemplate2.Visible = True cmdEdgeDetec.Enabled = False cmdSave.Enabled = False cmdBrowse.Enabled = True End Sub Private Sub GET_COLORS(color As Long, ByRef R As Single, ByRef G As Single, ByRef b As Single) R = color And RGB(255, 0, 0) G = Int((color And RGB(0, 255, 0)) / 256) b = Int(Int((color And RGB(0, 0, 255)) / 256) / 256) NewColor = color If NewColor < 0 Then NewColor = 0 End If If R > 256 Then R = 256 ElseIf R < 0 Then R = 0 End If If G > 256 Then G = 256 ElseIf G < 0 Then G = 0 End If If b > 256 Then b = 256 ElseIf b < 0 Then b = 0 End If End Sub Sub BuatTemplate() Dim X As Integer Dim Y As Integer For X = 0 To PicIris.ScaleWidth + 1 DoEvents For Y = 1 To 69 'PicIris.ScaleHeight GET_COLORS PicIris.Point(X, Y), R1, G1, B1 GRAY = (R1 + G1 + B1) / 3 If GRAY > 255 Then GRAY = 255 ElseIf GRAY < 128 Then GRAY = 0

  'SetPixel picTemplate1.hdc, picTemplate1.Width - x, picTemplate1.Height - y, RGB(GRAY, GRAY, GRAY) picTemplate1.Refresh Next Y Next X Dim x1 As Integer Dim y1 As Integer GRAY = 0 For x1 = 0 To PicIris.ScaleWidth + 1 DoEvents For y1 = 70 To 180 '(PicIris.ScaleHeight / 2) GET_COLORS PicIris.Point(x1, y1), R1, G1, B1 GRAY = (R1 + G1 + B1) / 3 If GRAY > 255 Then GRAY = 255 ElseIf GRAY < 128 Then GRAY = 0 End If SetPixel picTemplate2.hdc, picTemplate2.Width - x1, 180 - y1, RGB(GRAY, GRAY, GRAY) picTemplate2.Refresh Next y1 Next x1 picTemplate2.Refresh Call Daughmann End Sub Sub BinerGBR() Dim RC4 As New Class2 Dim X As Single, Y As Single, color As Long, ByteArray() As Byte ReDim ByteArray(Picture1.ScaleWidth, Picture1.ScaleHeight, 2) For X = 0 To Picture1.ScaleWidth For Y = 0 To Picture1.ScaleHeight color = GetPixel(Picture1.hdc, X, Y) ByteArray(X, Y, 0) = GetRGB(color, 1) ByteArray(X, Y, 1) = GetRGB(color, 2) ByteArray(X, Y, 2) = GetRGB(color, 3) Next Next RC4.EncryptBytes ByteArray(), lblNmFile.Caption For X = 0 To picTemplate1.ScaleWidth For Y = 0 To picTemplate1.ScaleHeight SetPixel picTemplate1.hdc, X, Y, RGB(ByteArray(X, Y, 0), ByteArray(X, Y, 1), ByteArray(X, Y, 2)) Next Next picTemplate1.Refresh BuatBinTemplate 'picTemplate2.Visible = False End Sub Private Sub cmdEdgeDetec_Click() picTemplate2.Visible = True cmdEdgeDetec.Enabled = False 'On Error GoTo ErrHandle Const MaxData = 255 Const DataGranularity = 1 Const Delta = DataGranularity / (2 * MaxData)

  Dim Op_X(-1 To 1, -1 To 1) As Integer, Op_Y(-1 To 1, -1 To 1) As Integer Op_X(-1, -1) = -1: Op_X(0, -1) = -2: Op_X(1, -1) = -1 Op_X(-1, 0) = 0: Op_X(0, 0) = 0: Op_X(1, 0) = 0 Op_X(-1, 1) = 1: Op_X(0, 1) = 2: Op_X(1, 1) = 1 Op_Y(-1, -1) = -1: Op_Y(0, -1) = 0: Op_Y(1, -1) = 1 Op_Y(-1, 0) = -2: Op_Y(0, 0) = 0: Op_Y(1, 0) = 2 Op_Y(-1, 1) = -1: Op_Y(0, 1) = 0: Op_Y(1, 1) = 1 Dim X As Integer, Y As Integer Dim fBias As Integer, fScaleFactor As Single Dim fRadius As Single, Sum As Single, RR2 As Single Dim MaxGaussianSize As Integer, GaussianSize As Integer Dim GaussianKernel() As Double, Kernel() As Single Dim KernelSize As Long Dim fKernel As Long, fWidth As Long, fHeight As Long, fCount As Long Dim SF As Single, Rad As Single, W As Single, c As Single Dim KWH As Long, KWL As Long, KHH As Long, KHL As Long Pic8.Visible = True Pic8.Cls: Pic9.Cls: PicHasil.Cls MaxGaussianSize = 50 fBias = 0: fScaleFactor = 1: fCount = 1 fRadius = 1 If fRadius < 0 Then fRadius = 0 If fRadius > 10 Then MsgBox "Masukkan angka antara [0.5 - 2]", vbInformation, "Angka Kelebihan": Exit Sub ReDim GaussianKernel(-MaxGaussianSize To MaxGaussianSize, -MaxGaussianSize To MaxGaussianSize) Sum = 0 RR2 = -2 * fRadius * fRadius For Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = Exp((X * X + Y * Y) / RR2) Sum = Sum + GaussianKernel(Y, X) Next X Next Y For Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next X Next Y Sum = 0 GaussianSize = MaxGaussianSize Do While (GaussianSize > 1) And (Sum < Delta) Sum = Sum + 4 * GaussianKernel(0, GaussianSize) GaussianSize = GaussianSize - 1 Loop For Y = -GaussianSize To GaussianSize For X = -GaussianSize To GaussianSize Sum = Sum + GaussianKernel(Y, X) Next X Next Y For Y = -GaussianSize To GaussianSize

  GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next X Next Y KernelSize = (2 * GaussianSize) + 1 SF = 0: Rad = 1 Dim RKernel(99999) As Single, cnt As Integer cnt = 0 For Y = -GaussianSize To GaussianSize c = 0 For X = -GaussianSize To GaussianSize W = Round((1 / GaussianKernel(GaussianSize, GaussianSize)) * GaussianKernel(Y, X)) RKernel(cnt) = W SF = SF + W c = c + 1 cnt = cnt + 1 Next X Rad = Rad + 1 Next Y fScaleFactor = SF Me.Cls ReDim Kernel(1, Rad, c) cnt = 0 Dim tmps As String ReDim Kernel(0 To 1, -GaussianSize To GaussianSize, -GaussianSize To GaussianSize) For i = -GaussianSize To GaussianSize For j = -GaussianSize To GaussianSize Kernel(1, i, j) = RKernel(cnt) tmps = tmps & Format(Kernel(1, i, j), "000") & " " cnt = cnt + 1 Next j tmps = "" Next i Dim tmpIntR As Double, tmpIntG As Double, tmpIntB As Double Dim CTotal As Single Dim CDataR As Single, CDataG As Single, CDataB As Single Dim Intensity As Long, Grad As Single CTotal = (((GaussianSize * GaussianSize) + GaussianSize) * 4) + 1 Dim tmpC As Long Dim CountClr As Long For Y = 0 To PicIris.Height - 1 For X = 0 To PicIris.Width For j = -GaussianSize To GaussianSize For i = -GaussianSize To GaussianSize PixelValue = GetPixel(PicIris.hdc, X + i, Y + j) DecTORGB PixelValue, R, G, b CDataR = CDataR + (Kernel(1, j, i) * R) CDataG = CDataG + (Kernel(1, j, i) * G) CDataB = CDataB + (Kernel(1, j, i) * b) If mX < c Then mX = mX + 1 Next i Next j CDataR = CDataR / (fScaleFactor + fBias) CDataG = CDataG / (fScaleFactor + fBias)

  SetPixel Pic8.hdc, X, Y, RGB(CDataR, CDataG, CDataB) Pic8.Refresh DoEvents Next X Next Y Pic9.Visible = True Pic8.Refresh Dim Greycolor As Integer, PixNum As Integer 'PixNum = InputBox("Masukkan Nilai Untuk Grayscale antara [0 - 255] :", "Input Grayscale") PixNum = 60 If PixNum > 255 Then PixNum = 255 DoEvents For Y = 0 To Pic8.Height For X = 0 To Pic8.Width PixelValue = GetPixel(Pic8.hdc, X, Y) DecTORGB PixelValue, R, G, b Greycolor = Greyscale(PixelValue, PixNum) SetPixel Pic9.hdc, X, Y, RGB(Greycolor, Greycolor, Greycolor) Pic9.Refresh Next X Pic9.Refresh Next Y Dim Itensity As Long, GradX As Long Dim ThresholdMin As Integer, ThresholdMax As Integer Dim sR As Long, sG As Long, sB As Long ThresholdMin = 1 ' If ThresholdMin > 255 Then ThresholdMin = 255 ThresholdMax = 100 'InputBox("Masukkan Nilai Max Threshold :", "Nilai Max Threshold") If ThresholdMax > 255 Then ThresholdMax = 255 'fScaleFactor = GaussianSize * GaussianSize DoEvents 'ThresholdMin = 0 'ThresholdMax = 0 For Y = 0 To PicIris.Height - 1 For X = 0 To PicIris.Width - 1 DoEvents GradX = 0: GradY = 0: Grad = 0 If X = 0 Or Y = 0 Or X = PicIris.Width - 1 Or Y = PicIris.Height -

  1 Then Grad = 0 Else For i = -1 To 1 For j = -1 To 1 PixelValue = GetPixel(Pic8.hdc, X + i, Y + j) ' dapatkan pixel dari posisi x + i dan y + j DecTORGB PixelValue, R, G, b 'fungsi proses mendapatkan nilai RGB Itensity = (R + G + b) / 3 'Itensitas / B & W GradX = GradX + (Itensity * Op_X(i, j)) GradY = GradY + (Itensity * Op_Y(i, j)) Next j Next i Grad = Round(Sqr(Abs(GradX * GradX) + Abs(GradY * GradY))) End If If Grad >= ThresholdMin And Grad <= ThresholdMax Then

  If Grad <= ThresholdMax Then Grad = 0: If Grad >= ThresholdMax Then Grad = 255 SetPixel PicHasil.hdc, X, Y, RGB(Grad, Grad, Grad) Else If Grad <= 0 Then Grad = 0: If Grad >= 255 Then Grad = 255 SetPixel PicHasil.hdc, X, Y, RGB(Grad, Grad, Grad) End If PicHasil.Refresh Next X PicHasil.Refresh Next Y Call BuatTemplate cmdSave.Enabled = True Exit Sub ErrHandle: If err.Number <> 0 Then MsgBox "err" End If Exit Sub End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdSave_Click() cmdSave.Enabled = False cd.CancelError = True 'On Error GoTo err NmFile1 = cd.FileName Ext2 = Right(NmFile1, 3) SavePicture picTemplate1.Image, App.path & "\CitraTemplate\" & "Temp1" & cd.FileTitle Call CariID1 Set rsHasil = New ADODB.Recordset rsHasil.Open "tTemplate", CN, 1, 2 rsHasil.AddNew rsHasil!IDTemplate = IDTemplate rsHasil!NmFile = path rsHasil!FileTitle = cd.FileTitle rsHasil!Template = strBin1 rsHasil!nmFileTemplate1 = App.path & "\CitraTemplate\Temp1" & cd.FileTitle rsHasil.Update Set rsHasil = Nothing strBin = ""

  ID = 0 NmFile1 = "" NmFile2 = "" MsgBox "File sudah disimpan" cmdClear_Click picDou.Picture = Nothing cmdEdgeDetec.Enabled = False cmdSave.Enabled = False cmdBrowse.Enabled = True err: Exit Sub

  Private Sub Form_Activate() Pic8.Visible = False Pic9.Visible = False picTemplate1.Visible = True cmdEdgeDetec.Enabled = False cmdSave.Enabled = False cmdBrowse.Enabled = True End Sub Private Sub Form_Load() Call Koneksi End Sub 5.

Data User

  Option Explicit Dim rsPasswd As Recordset Private Sub cmdBatal_Click() txtUserID.Text = "" txtPasswd.Text = "" ubah = False tambah = False Cari = False cmdRubah.Enabled = False cmdHapus.Enabled = False cmdcari.Enabled = True cmdtambah.Enabled = True cmdtambah.SetFocus End Sub Private Sub cmdCari_Click() Cari = True cmdtambah.Enabled = False cmdcari.Enabled = False txtUserID.Locked = False txtUserID.SetFocus End Sub Private Sub cmdHapus_Click() Set rsHapus = New ADODB.Recordset rsHapus.Open "Delete [tUser] where UserID='" & txtUserID.Text & "' and Passwd='" & txtPasswd.Text & "'", CN, adOpenDynamic, adLockOptimistic txtUserID.Text = "" txtPasswd.Text = "" MsgBox "User sudah di hapus ..." cmdRubah.Enabled = False cmdHapus.Enabled = False cmdcari.Enabled = True cmdtambah.Enabled = True cmdtambah.SetFocus End Sub Private Sub cmdKeluar_Click() Unload Me End Sub Private Sub cmdRubah_Click() ubah = True cmdHapus.Enabled = False txtPasswd.Locked = False txtPasswd.SetFocus End Sub Private Sub cmdTambah_Click() tambah = True cmdtambah.Enabled = False cmdcari.Enabled = False txtUserID.Locked = False txtUserID.SetFocus End Sub Private Sub Form_Activate() txtUserID.Locked = True txtPasswd.Text = "" txtUserID.Text = "" ubah = False tambah = False Cari = False cmdRubah.Enabled = False cmdHapus.Enabled = False cmdcari.Enabled = True cmdtambah.Enabled = True cmdtambah.SetFocus End Sub Sub MaTi() txtUserID.Locked = True txtPasswd.Locked = True cmdRubah.Enabled = False cmdHapus.Enabled = False End Sub Sub Bersih() txtUserID.Text = "" txtPasswd.Text = "" End Sub Private Sub Form_Load() Koneksi End Sub Private Sub txtpasswd_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Set rsPasswd = New ADODB.Recordset rsPasswd.Open "Select * from [tUser] where UserID='" & txtUserID.Text & "' and Passwd='" & txtPasswd.Text & "'", CN, adOpenDynamic, adLockOptimistic If tambah = True Then If rsPasswd.EOF = True Then Set rsSimpan = New ADODB.Recordset rsSimpan.Open "select * from [tUser]", CN, adOpenDynamic, adLockOptimistic rsSimpan.AddNew rsSimpan.Fields("UserID") = txtUserID.Text rsSimpan.Fields("Passwd") = txtPasswd.Text rsSimpan.Update txtUserID.Text = "" txtPasswd.Text = "" Bersih MsgBox "Data sudah tersimpan"

  MaTi cmdtambah.Enabled = True cmdcari.Enabled = True cmdtambah.SetFocus Else MsgBox "User sudah ada ..." txtPasswd.Text = "" txtUserID.Text = "" txtUserID.SetFocus End If ElseIf ubah = True Then Set rsUbah = New ADODB.Recordset rsUbah.Open "Update [tUser] Set Passwd ='" & txtPasswd.Text & "' where UserID ='" & txtUserID.Text & "'", CN, adOpenDynamic, adLockOptimistic txtUserID.Text = "" txtPasswd.Text = "" MsgBox "Data sudah Ubah" ubah = False MaTi Bersih cmdtambah.Enabled = True cmdcari.Enabled = True cmdtambah.SetFocus End If End If End Sub Private Sub txtUserId_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If tambah = True Then Set rsCari = New ADODB.Recordset rsCari.Open "Select * from [tUser] where UserID='" & txtUserID.Text & "'", CN, adOpenDynamic, adLockOptimistic If rsCari.EOF = True Then txtPasswd.Locked = False txtPasswd.SetFocus Else MsgBox "User sudah ada ..." txtUserID.Text = "" txtPasswd.Text = "" txtUserID.SetFocus End If ElseIf Cari = True Then Set rsCari = New ADODB.Recordset rsCari.Open "Select * from [tUser] where UserID='" & txtUserID.Text & "'", CN, 1, 2 If rsCari.EOF = True Then MsgBox "User belum ada ..." txtUserID.Text = "" txtUserID.SetFocus Else txtPasswd.Text = rsCari.Fields("Passwd") cmdRubah.Enabled = True cmdHapus.Enabled = True cmdRubah.SetFocus End If End If

  End Sub 6.

Hasil Pengujian

  Option Explicit Dim bolAda As Boolean Private Sub cmdCetak_Click() If bolAda = True Then Call Cetak End If End Sub Private Sub cmdQuit_Click() Unload Me End Sub Sub Cetak() Me.WindowState = 2 cr.ReportFileName = App.Path & "\Report1.rpt" cr.RetrieveDataFiles cr.Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\dbROI.mdb;Persist Security Info=False" cr.WindowShowRefreshBtn = True cr.PrintReport cr.WindowState = crptMaximized cr.Action = 1 End Sub Private Sub Form_Load() Call Koneksi Set rsCari = New ADODB.Recordset rsCari.Open "Select * from tHasil order by ID asc", CN, 1, 2 If Not rsCari.EOF Then bolAda = True Else bolAda = False MsgBox "Data tidak ada" End If Set rsCari = Nothing End Sub Private Sub Form_Unload(Cancel As Integer) Unload Me frmMenu.Show End Sub