PDA

View Full Version : سوال: پدازش تصویر در vb.net



sepehrazimi
چهارشنبه 03 خرداد 1391, 18:07 عصر
سلام دوستان
من چند وقتی هست که پردازش تصویر انجام می دهم مثلا می توانم فیلتر روی عکس ، انداختن دو عکس روی هم ، تشخیص لبه و ... اما مشکل من در اینجاست که بعد از اینکه لبه را تشخیص دادیم چطور می توانیم مثلا صورت انسان را تشخیص بدهد .
در اینترنت زیاد سرچ کردم اما تا تشخیص لبه بود و به بعد را پیدا نکردم دوستان اگه امکانش هست به من کمک کنن .
منتظر شما هستم :ناراحت:

sepehrazimi
چهارشنبه 03 خرداد 1391, 19:06 عصر
کسی نیست جواب بده !!!

Negin.cs
چهارشنبه 03 خرداد 1391, 19:24 عصر
سلام
درمورد Face Detection سرچ کنید ...

http://www.facedetection.com/

http://www.stanford.edu/class/ee368/Project_03/Project/reports/ee368group02.pdf

http://en.wikipedia.org/wiki/Face_detection

اما اگه بصورت کلی مثال زدین و میخواین نوع اشیا رو تشخیص بدین ، باید روی مباحث Data Mining کار کنین:

http://www.anderson.ucla.edu/faculty/jason.frand/teacher/technologies/palace/datamining.htm

http://en.wikipedia.org/wiki/Data_mining


موفق باشید

M.KH-SH
چهارشنبه 03 خرداد 1391, 20:11 عصر
من چند وقتی هست که پردازش تصویر انجام می دهم مثلا می توانم فیلتر روی عکس ، انداختن دو عکس روی هم ، تشخیص لبه و ... اما مشکل من در اینجاست که بعد از اینکه لبه را تشخیص دادیم چطور می توانیم مثلا صورت انسان را تشخیص بدهد .

دوست عزیز میشه راهنمایی کنین و نمونه کد قرار بدین که چطور میشه لبه اشیا رو در تصاویر تشخیص داد

من که کلا هیچی در این موارد نمیدونم که باید از کجا شروع کنم

مرسی از راهنمایی شما دوست عزیز

sepehrazimi
پنج شنبه 04 خرداد 1391, 08:00 صبح
دوست عزیزم برای تشخیص لبه می توانی از این الگوریتم استفاده کنی

Dim ax As New Bitmap("d:\a.jpg")

Dim r As Integer
Dim g As Integer
Dim b As Integer
Dim r1 As Integer
Dim g1 As Integer
Dim b1 As Integer
Dim r2 As Integer
Dim g2 As Integer
Dim b2 As Integer



For y = 0 To ax.Height - 2
For x = 0 To ax.Width - 2
r = ax.GetPixel(x, y).R
b = ax.GetPixel(x, y).B
g = ax.GetPixel(x, y).G

r1 = ax.GetPixel(x + 1, y).R
b1 = ax.GetPixel(x + 1, y).B
g1 = ax.GetPixel(x + 1, y).G

r2 = ax.GetPixel(x, y + 1).R
b2 = ax.GetPixel(x, y + 1).B
g2 = ax.GetPixel(x, y + 1).G

If ((Math.Sqrt(((r - r1) ^ 2) + ((g - g1) ^ 2) + ((b - b1) ^ 2)) >= 120) Or (Math.Sqrt(((r - r2) ^ 2) + ((g - g2) ^ 2) + ((b - b2) ^ 2)) >= 120)) Then
ax.SetPixel(x, y, Color.White)
Else
ax.SetPixel(x, y, Color.Black)
End If
Next
Next

PictureBox1.Image = ax
عدد های 120 را می توانی تغییر بدهی

sepehrazimi
پنج شنبه 04 خرداد 1391, 08:33 صبح
تشکر فراوان از (Negin.cs) اگه منابع فارسی هم دارید لطفا بگید :گیج:

Negin.cs
پنج شنبه 04 خرداد 1391, 08:56 صبح
تشکر فراوان از (Negin.cs) اگه منابع فارسی هم دارید لطفا بگید

ببینید اینجا احتمالآ چیزی باشه که به کارتون بیاد:

http://artificial.ir/intelligence/

:لبخندساده:

hakim22
پنج شنبه 04 خرداد 1391, 10:31 صبح
اگر واقعا قصد کد نویسی چنین برنامه هایی دارید زبان VB.NET زیاد مناسب نیست .

aminghaderi
پنج شنبه 11 خرداد 1391, 10:55 صبح
اگر واقعا قصد کد نویسی چنین برنامه هایی دارید زبان VB.NET زیاد مناسب نیست . کاملا موافقم ، اول باید قصد شما مشخص بشه ، که برای چی دارید بروی این پروژه کار می کنید؟!
اگر دانشجویی یا صرفا تحقیقی هست ، به نظر من C#‎ مناسب کارهست.(سریع + توابع گرافیکی زیاد + قابلیت + انعطاف)
اما اگر تجاری می خواهید بنویسید معمولا این جور پروژه ها رو با C++‎ به همراه بستر های توسعه ای مثل qt یا ... می نویسند که از سرعت و انعطاف بالاتری برخردار هست و هم کد شما یه کد Native هست و از امنیت بیشتری بر خردار است و البته کار شما بسیار زمانبر تر نسبت به C#‎ خواهد بود .

و به بعد را پیدا نکردم
به بعد هم می شه تجاری و خصوصی ، البته هنوز شک دارم نشه پیدا کرد .