কমপিউটার কোনো বস্তুর ছবি দেখেই শনাক্ত করতে পারে না আসলে বস্তুটি কী ৷ কোনো বস্তুকে শনাক্ত করার জন্য প্রয়োজন পড়ে প্রোগ্রাম করার৷ বিভিন্ন ধরনের এলগরিদম ব্যবহার করে কোনো একটি নির্দিষ্ট বস্তুকে শনাক্ত করা হয়৷ নিচের চিত্র-১-এ যেকোনো বস্তুকে (objects) শনাক্ত করার প্রোগ্রামের উইন্ডোটি দেখানো হয়েছে৷ চিত্রে দেখানো হয়েছে চারটি বিভিন্ন ধরনের বস্তুর ছবি হতে নির্দিষ্ট একটি বস্তুর ছবিকে শনাক্ত করাকে৷ চারটি বিভিন্ন বস্তু যেমন ক্রিকেট ব্যাটের ছবি, জগের ছবি, একটি সেফটি পিন ও একটি টেবিলের ছবি৷ এখন আপনার দেয়া কোনো বস্তুর ছবির সাথে ওই চারটি বস্তুর ছবির তুলনা করা হবে এবং আপনার দেয়া ছবিটি ওই চারটি বস্তুর ছবির কত কাছাকাছি তা তুলনা করে শতকরা হিসেবে বলে দেয়া যাবে৷ এই প্রোগ্রামের সাহায্যে সাধারণ সব বস্তুর তুলনা করা যেতে পারে৷ তবে এই প্রোগ্রামের সাহায্যে কোনো মানুষের ছবি তুলনা করতে চাইলে ফলাফল সঠিক পাওয়া যাবে না৷ এখানে যে পদ্ধতির সাহায্যে বিভিন্ন বস্তুর ছবিগুলোর তুলনা করা হচ্ছে তা হচ্ছে Pixel Matching পদ্ধতি৷ প্রোগ্রামটি ভিজ্যুয়াল বেসিকে ডেভেলপ করা হয়েছে৷ প্রোগ্রামের কোড নিচে দেয়া হলো৷ প্রোগ্রামটি চালালে নিচের চিত্র-১-এর মতো একটি উইন্ডো পাওয়া যাবে৷ এবার আপনি যে বস্তুর ছবির সাথে প্রোগ্রামে উল্লেখ করা চারটি বস্তুর ছবির তুলনা করতে চান তা Load Object বাটনের সাহায্যে লোড করে নিন৷ এখানে যে ছবিগুলো ব্যবহার করা হয়েছে তা 140x110 পিক্সেলের৷ তাই যখন কোনো ছবি শনাক্তকরণের জন্য এই প্রোগ্রামে লোড করবেন তা 140x110 পিক্সেলের হতে হবে৷ কোনো বস্তুর ছবি লোড করার পর Stretch বাটনটি চাপতে হবে৷ সাধারণত যখন কোনো ছবি অন্য কোনো ছবির সাথে তুলনা করা হয় তা গ্রে স্কেলে নিয়ে বা সাদা-কালো অবস্থায় নিয়ে তুলনা করতে হয়৷ প্রোগ্রামে Black and White বাটনটি সব ছবিকে সাদা-কালো ছবিতে পরিবর্তন করে নেবে এবং Compare Objects বাটনটি চাপার সাথে সাথে যে বস্তুর ছবিটি লোড করা হয়েছে তার সাথে প্রোগ্রামে দেয়া চারটি ছবির কোনটির সাথে কোনটির শতকরা কত ভাগ মিলে তা দেখাবে৷ চিত্রে ভালোভাবে লক্ষ্য করুন৷ প্রোগ্রামে দেয়া চারটি বস্তুর ছবির সাথে লোড করা জগের ছবিটি, কোন ছবির সাথে কত বেশিভাগ মিলছে তা নিচের ছবিতে দেখলে দেখা যাবে৷ প্রোগ্রামে দেয়া জগের ছবির সাথে লোড করা জগের ছবিটির বেশিরভাগ মিলছে৷ আবারো বলছি সাধারণ বস্তু নির্ণয় বা শনাক্ত করতে এই প্রোগ্রামটি ব্যবহার করা যেতে পারে, তবে মানুষের মুখের ছবির সাথে তুলনা করলে ফলাফল সঠিক নাও আসতে পারে৷
Private Declare Function GetPixel Lib “gdi32” (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function StretchBlt Lib “gdi32” (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop 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 h, w As Long
Private Sub Command1_Click()
StretchBlt Picture11.hdc, 0, 0, 2647, 2865, Picture9.hdc, 0, 0, Picture9.Picture.Width, Picture9.Picture.Height, vbSrcCopy
End Sub
Private Sub Command2_Click()
Dim i, j, p1, p2 As Long
Dim r, g, b As Double
For i = 0 To 140
For j = 0 To 110
p1 = GetPixel(Picture1.hdc, i, j)
r = p1 Mod 256
g = (p1 Mod 256) / 256
b = ((p1 Mod 256) / 256) / 256
If r > 228 Or g > 228 Or b > 228 Then
SetPixel Picture2.hdc, i, j, vbWhite
Else
SetPixel Picture2.hdc, i, j, vbBlack
End If
p1 = GetPixel(Picture3.hdc, i, j)
r = p1 Mod 256
g = (p1 Mod 256) / 256
b = ((p1 Mod 256) / 256) / 256
If r > 228 Or g > 228 Or b > 228 Then
SetPixel Picture4.hdc, i, j, vbWhite
Else
SetPixel Picture4.hdc, i, j, vbBlack
End If
p1 = GetPixel(Picture5.hdc, i, j)
r = p1 Mod 256
g = (p1 Mod 256) / 256
b = ((p1 Mod 256) / 256) / 256
If r > 228 Or g > 228 Or b > 228 Then
SetPixel Picture6.hdc, i, j, vbWhite
Else
SetPixel Picture6.hdc, i, j, vbBlack
End If
p1 = GetPixel(Picture7.hdc, i, j)
r = p1 Mod 256
g = (p1 Mod 256) / 256
b = ((p1 Mod 256) / 256) / 256
If r > 228 Or g > 228 Or b > 228 Then
SetPixel Picture8.hdc, i, j, vbWhite
Else
SetPixel Picture8.hdc, i, j, vbBlack
End If
p1 = GetPixel(Picture11.hdc, i, j)
r = p1 Mod 256
g = (p1 Mod 256) / 256
b = ((p1 Mod 256) / 256) / 256
If r > 228 Or g > 228 Or b > 228 Then
SetPixel Picture10.hdc, i, j, vbWhite
Else
SetPixel Picture10.hdc, i, j, vbBlack
End If
Next j
Next i
End Sub
Private Sub Command3_Click()
Dim fname As String
On Error GoTo 1
Dim ch As Boolean
ch = True
With cm1
.ShowOpen
.Filter = “Char_Rec (*.jpg)|*jpg|Char_Rec (*.bmp)|*.bmp|Char_Rec (*.ico)|*.ico|Char_Rec (*.psd)|*.psd|Char_Rec (*.png)|*.png|All Files(*.*)|*.*”
fname = .FileName
End With
If fname = “” Then
MsgBox “Please Choose a filename”, vbCritical
End If
Picture9.Picture = LoadPicture(fname)
ch = False
1:
If ch Then
MsgBox Err.Description, vbCritical
End If
End Sub
Private Sub Command6_Click()
Dim i, j, p1, p2, Match1, Match2, Match3, Match4, Total As Long
Dim r, g, b As Double
Match1 = 0
Match2 = 0
Match3 = 0
Match4 = 0
Total = 0
For i = 0 To 140
For j = 0 To 110
p1 = GetPixel(Picture10.hdc, i, j)
p2 = GetPixel(Picture2.hdc, i, j)
If p1 = p2 Then
Match1 = Match1 + 1
End If
p2 = GetPixel(Picture4.hdc, i, j)
If p1 = p2 Then
Match2 = Match2 + 1
End If
p2 = GetPixel(Picture6.hdc, i, j)
If p1 = p2 Then
Match3 = Match3 + 1
End If
p2 = GetPixel(Picture8.hdc, i, j)
If p1 = p2 Then
Match4 = Match4 + 1
End If
Total = Total + 1
Next j
Next i
Text1 = Val(100 * Match1 / Total)
Text2 = Val(100 * Match2 / Total)
Text3 = Val(100 * Match3 / Total)
Text4 = Val(100 * Match4 / Total)
End Sub
যারা Face Recognition নিয়ে কাজ করতে চান, তারা নিউরালনেটওয়ার্ক নিয়ে কাজ করতে পারেন৷ এটি অন্য এক পদ্ধতি যা মানুষের ছবি শনাক্ত করার কাজে ব্যবহার করা হয়৷ প্রোগ্রামটি খুব সহজভাবে আপনাদের সামনে তুলে ধরা হয়েছে৷ এখানে পিক্সেল ম্যাচিং পদ্ধতিটি ব্যবহার করা হয়েছে৷ প্রোগ্রামে ভালোভাবে লক্ষ করলে দেখবেন Compare Objects বাটনটি চাপার সাথে সাথে প্রোগ্রামে দেয়া ছবিগুলোর সাথে লোড বা ইনপুট ছবিটির তুলনা হচ্ছে তা পিক্সেল ম্যাচিংয়ের মাধ্যমে৷ সাহায্যের জন্য দেখুন৷ www.geocitics.com/redu007 কজ
ফিডব্যাক : redu0007@yahoo.com