PDA

View Full Version : تشخیص هویت از طریق عنبیه



asefy2008
جمعه 20 فروردین 1389, 01:34 صبح
سلام
دوستان نمونه کدی برای این مورد دارن؟
فرق نمی کنه از چه روشی باشه.
در ضمن برای هر کدوم از قسمت های زیر هم نمونه کدی داشتن بزارن ممنون میشم(مخصوصا قسمت مربوط به شناسایی مردمک برای پیدا کردن مرکز وشعاع آن):

1.iris segmentation :
1.1)iris localization
1.2)noise reducation
2.normalizaton
3.شیوه های رمزگذاری
4.مقایسه کردن


همچنین کدهای سی شارپ الگوریتم های زیر :
sobel algorithm_canny algorithm_hough transform_داگمن_ma_Wildes_cui_xu_chavez_تش یص یک مربع از دایره
(اگر هم سی شارپ نبود زبان های دیگه داشتن بزارن)
اگر هم تونستن در مورد این موارد هم یه توضیح بدن :
data mining_back propogation_paralel search algorithms_تبدیل ویولت گابور _ gabor filter


اگر این casia دیتابیس رو هم کسی داره لطف کنه ممنون میشم .


با بیان هر مطلبی که مربوط به این موضوع میشه می تونید کمک کنید.
در نهایت هم از این که موضوع طولانی و چندین سوال مطرح شد عذر می خوام می خواستم موضوع پراکنده نشه.
با تشکر از توجه شما

asefy2008
جمعه 20 فروردین 1389, 13:38 عصر
یعنی کسی در این مورد هیچی نمی دونه؟

seven7777777
جمعه 20 فروردین 1389, 18:13 عصر
asefy جان سلام
میگم مطمئنی این مطلب مبتدیه !!!:گیج:

فکر کنم باید دست به دامن گوگل شی ...

asefy2008
جمعه 20 فروردین 1389, 18:40 عصر
سلام

میگم مطمئنی این مطلب مبتدیه !!!:گیج:

خوب آره:لبخند:

فکر کنم باید دست به دامن گوگل شی ...
دست به دامن گوگل که خیلی وقت شدم ولی انصافا که خیلی سخته(مغزم دود کرده)
مطالب بسیار زیاد ولی اکثرا فارسی نیست و همچنین راه های زیادی وجود داره که آدم گیج میشه. مثلا می خوام از شبکه های عصبی (پرسپترون) برای تشخیص یک دایره از یک مربع استفاده کنم اصلا نمی دونم از کجا باید شروع کنم .درCODEPROJECT و CODE.GOOGLE هم هیچی پیدا نکردم اگر دوستان سایت های دیگه میشناسن که در مورد این مطلب توضیح داده کمک کنن.

حمید محمودی
یک شنبه 22 فروردین 1389, 00:05 صبح
سلام

بله که این مطلب خیلی مبتدیه !!!! :بامزه:

اما به نظر من با برنامه نویس های این سایت (http://freelancer.com) صحبت بکنی بد نیست.(پولشم که میدونی.....)

قبلنا اینکارو در حال تحقیقش بودم ولی ازبس موضوع پیچیده بود ولش کردم.که به جاییم نرسیدم.(شما اگه رسیدی بیا و برادری بکن یکمی توضیح بده.)

راستی یه سوال دیگه. یه نفر درباره دانلود(شایدم آپلود) یه نوع ویروس خیلی حرفه ای روی مغز انسان از طریق قرنیه یا شایدم عنبیه صحبت میکرد میخاستم بپرسم این قضیه رو شما شنیدین و چقدر صحت داره؟؟؟ (که اطلاعات از طریق لیزر ب سوی عنبیه فرستاده میشه و مغز هم دریافتشون میکنه ....)

ممنون

asefy2008
دوشنبه 23 فروردین 1389, 01:12 صبح
قبلنا اینکارو در حال تحقیقش بودم ولی ازبس موضوع پیچیده بود ولش کردم.که به جاییم نرسیدم.(شما اگه رسیدی بیا و برادری بکن یکمی توضیح بده.)

من خیلی پیش رفتم و به جاهایی هم رسیدم. البته اگه دوستان همراهی کنند و با هم در مورد برخی الگوریتم های مربوط به این موضوع کار کنیم خیلی سریع تر هم میشه پیش رفت من هم تا اونجایی که کار کردم اطلاعاتم رو در اختیار میزارم(من یکی از دوستام خوراکش همین مسائل تشخیص هویت که تونسته تشخیص هویت از طریق چهره و تشخیص دست خط رو پیاده سازی کنه منظورم عملی هست حتی الگوریتم های جدید هم میده اون می تونه خیلی کمک کنه ولی مستلزم این هست که اول کار کنیم بعد اون کمک می کنه همین طوری اطلاعات نمیده)


راستی یه سوال دیگه. یه نفر درباره دانلود(شایدم آپلود) یه نوع ویروس خیلی حرفه ای روی مغز انسان از طریق قرنیه یا شایدم عنبیه صحبت میکرد میخاستم بپرسم این قضیه رو شما شنیدین و چقدر صحت داره؟؟؟ (که اطلاعات از طریق لیزر ب سوی عنبیه فرستاده میشه و مغز هم دریافتشون میکنه ....)

در این مورد چیزی نشنیدم.

Mohsen_cia
پنج شنبه 02 اردیبهشت 1389, 12:28 عصر
با سلام
من اطلاعاتی در زمینه Iris Recognition دارم، اما نمیدونم که شما دقیقا چیکار میخواین کنین ...

قبلا من Fingerprint Recognition رو عملا به کار بردم ... هم Verification و هم Identification ... البته برنامه نویسیم زیاد خوب نیست ... اونم با VB.NET نوشتم با SDK

حالا اگه میتونم کمکی کنم بهم اطلاع بدین، منم بدم نمیاد Iris رو هم عملی کنم.
Mohsen_cia[@]Yahoo[dot]com

arefba
پنج شنبه 02 اردیبهشت 1389, 13:21 عصر
http://barnamenevis.org/forum/showpost.php?p=658416&postcount=195
یه نمونه برنامه امیدوارم به دردت بخوره

asefy2008
جمعه 17 اردیبهشت 1389, 14:21 عصر
با سلام
من اطلاعاتی در زمینه Iris Recognition دارم، اما نمیدونم که شما دقیقا چیکار میخواین کنین ...

قبلا من
Fingerprint Recognition
رو عملا به کار بردم ... هم
Verification
و هم
Identification
... البته برنامه نویسیم زیاد خوب نیست ... اونم با
VB.NET
نوشتم با
SDK


حالا اگه میتونم کمکی کنم بهم اطلاع بدین، منم بدم نمیاد Iris رو هم عملی کنم.

Mohsen_cia[@]Yahoo[dot]com


من دقیقا می خوام روی تشخیص هویت از طریق عنبیه کار کنم اما به خاطر این که سطح اطلاعات تو این موضوع پایین هست شاید نتونم منظورم رو خوب بیان کنم .
الان الگوریتم لبه یاب canny و cnn رو می خوام و همچنین گوسین بلور (نمی دونم درست میگم ) رو می خوام بدونم چیه اگر الگوریتمش هم باشه چه بهتر .
تبدیل ویولت برای فشرده سازی عکس رو هم می خوام.


http://barnamenevis.org/forum/showpo...&postcount=195 (http://barnamenevis.org/forum/showpost.php?p=658416&postcount=195)
یه نمونه برنامه امیدوارم به دردت بخوره

ممنون

asefy2008
جمعه 17 اردیبهشت 1389, 15:02 عصر
این هم الگوریتم لبه یاب sobel که با سی شارپ پیاده سازی شده :


public Bitmap SobelAlgorithm(Bitmap Image)
{
Bitmap Result = new Bitmap(Image.Width, Image.Height);
int temp, temp2;
int[,] SobelHorizontalArray = new int[3, 3]{
{ 1, 2, 1},
{ 0, 0, 0},
{ -1,-2,-1}
};
int[,] SobelVERTICALArray = new int[3, 3]{
{ 1, 0,-1},
{ 2, 0,-2},
{ 1,0,-1}
};
for (int i = 0; i < Image.Width; i++)
{
for (int j = 0; j < Image.Height; j++)
{
temp = 0;
temp2 = 0;
//convolve
for (int k = 0; k + i < Image.Width && k < 3; k++)
{
for (int n = 0; n + j < Image.Height && n < 3; n++)
{
temp += (Image.GetPixel(i + k, j + n).R * SobelHorizontalArray[k, n]);
temp2 += (Image.GetPixel(i + k, j + n).R * SobelVERTICALArray[k, n]);
}
}
if (Math.Sqrt(temp * temp + temp2 * temp2) > 129)
Result.SetPixel(i, j, Color.Black);
else
Result.SetPixel(i, j, Color.White);
}
}
return Result;
}

در پایا این پست این رو بگم که ممکنه پست ها از بحث اصلی خارج بشن و لی برای پیاده سازی سیستم اصلی به این مباحث احتیاج هست .
دوستان لطفا بیشتر کمک کنن.

asefy2008
یک شنبه 19 اردیبهشت 1389, 22:14 عصر
دوستان لطفا تو تحلیل و اجرای این کد کمک کنن (GaussianBlur)
من که هر چه کردم متوجه نشدم
این کد مربوط به پردازش تصویر هست.
دوستان خواهشا کامل و با جزئیات راهنمایی بفرمایید.
لازم به ذکر هست این کد از سایتی برداشته شده که اون رو فراموش کردم

asefy2008
سه شنبه 18 خرداد 1389, 22:06 عصر
برای کار روی عکس های مناسب دوستان می تونن از این (http://www.cbsr.ia.ac.cn/IrisDatabase.htm) سایت عکس های چشم رو دانلود کنند البته اول باید یک فرم پر کنند برای سایت مربوطه ارسال کنند بعد سایت بهشون یوزر و پسورد میده و انوقت باید یک فایل حدودا 400 مگی رو دانلود کنند.
یک نکته رو بگم که برنامه هایی که در پست های قبلی قرار دادم بدلیل این که زیاد با توابع سیستم کار می کنند بسیار کند هستند که در آینده مشکلات رو رفع و مجددا قرار میدم.

flash118
چهارشنبه 19 خرداد 1389, 20:10 عصر
با سلام دوست عزیز در مورد الگوریتم پردازش تصویر باید روی الگوریتم هم MAGIN هم یه نظری بنداز فکر کنم مشکل گشای کار باشد

asefy2008
چهارشنبه 19 خرداد 1389, 20:21 عصر
با سلام میشه یکم بیشتر در موردش توضیح بدی؟
اگر مقاله ای هم هست اگر بزاری بینهایت ممنون میشم
در ضمن در مورد الگوریتم cnn چیزی شنیدی اگر در مورد این هم یه توضیح بدی ممنونت میشم.
در مورد تبدیل هاف هم به همین ترتیب.
با تشکر از راهنماییت

asefy2008
چهارشنبه 19 خرداد 1389, 20:35 عصر
اگر دوستان کمک کنن بگن چرا در برنامه بالا از unsafe ارور میگره خیلی ممنون میشم

مصطفی ساتکی
چهارشنبه 19 خرداد 1389, 20:55 عصر
شما برای تشخیص عنبیه ابتدا بایستی مردمک چشم رو پیدا کنی که بجای تبدیل circular hough می تونی از cnn بجاش استفاده کنید .فکر کنم یه دفعه براتون به اختصار cnn رو توضیح دادم.شبکه ای که من در این زمینه طراحی کردم که رو مردمک چشم هم جواب داده با map بوده البته سفارش این کار برای پروژه ای دیگری بود که رو مردمک تست کردم جواب داد و بعد هم اگر database مربوط به اینکارت بزرگ باشه بهترین راه اینه از wavelet استفاده کنید.من مشتری برای اینکار نداشتم وگرنه طراحیش می کردم.

asefy2008
چهارشنبه 19 خرداد 1389, 21:52 عصر
بازهم تشکر راهنماییتون
به نظر شما، برای مرحله پیدا کردن مردمک، cnn می تونه یک انتخاب مناسب باشه یا انتخابهای بهتری هم هست؟

مصطفی ساتکی
چهارشنبه 19 خرداد 1389, 22:47 عصر
در چندین مقاله در IEEE خوندم که از Circular hough استفاده می کنند ولی من تست کردم با cnn هم جواب میده اینم یه راهکار دیگه اس میتونه با یه متد دیگه یه مقاله بشه

asefy2008
پنج شنبه 17 تیر 1389, 10:21 صبح
اگر دوستان کمک کنن بگن چرا در برنامه بالا از unsafe ارور میگره خیلی ممنون میشم
اینم پاسخ دوستمون peikesms :

روی نام برنامه در قسمت Solution Explorer راست کلیک کنید و گزینه Properties را انتخاب کنید. از پنجره باز شده گزینه دوم Build را انتخاب کنید. سپس گزینه Allow unsafe code را تیک بزنید.

انیشتین
پنج شنبه 17 تیر 1389, 13:15 عصر
راستی یه سوال دیگه. یه نفر درباره دانلود(شایدم آپلود) یه نوع ویروس خیلی حرفه ای روی مغز انسان از طریق قرنیه یا شایدم عنبیه صحبت میکرد میخاستم بپرسم این قضیه رو شما شنیدین و چقدر صحت داره؟؟؟ (که اطلاعات از طریق لیزر ب سوی عنبیه فرستاده میشه و مغز هم دریافتشون میکنه ....)

ممنون

سلام
فکر کنم فیلم تخیلی زیاد می بینی،
باور نکن عزیزم اینا فیلمه!!:لبخند:

asefy2008
پنج شنبه 17 تیر 1389, 14:03 عصر
سلام
فکر کنم فیلم تخیلی زیاد می بینی،
باور نکن عزیزم اینا فیلمه!!:لبخند:
دوست عزیز یا پاسخ کسی رو نده یا اگر پاسخ خواستی بدی درست بده، مسخرش نکن که باعث ناامیدی طرف بشه.یه چیزی شنید می خواست از صحتش مطمئن بشه این که چیز بدی نیست.
ندوستن عیب نیست نپرسیدن عیب

asefy2008
سه شنبه 22 تیر 1389, 19:23 عصر
اینم الگوریتم sobel (یک بار گذاشتم چون با توابع سیستم کار می کرد کند بود ):

public void SobelAlgorithm()
{
int gx, gy;
int[,] SobelHorizontalArray = new int[3, 3]{
{ 1, 2, 1},
{ 0, 0, 0},
{ -1,-2,-1}
};

int[,] SobelVERTICALArray = new int[3, 3]{
{ 1, 0,-1},
{ 2, 0,-2},
{ 1,0,-1}
};
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
gx = 0;
gy = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
gx += (image[i + k, j + n] * SobelHorizontalArray[k, n]);
gy += (image[i + k, j + n] * SobelVERTICALArray[k, n]);
}
}
int temp = (int)Math.Sqrt(gx * gx + gy * gy);
if (temp > 255)
image[i, j] = 255;
else if (temp < 0)
image[i, j] = 0;
else
image[i, j] = temp;
}
}
}
اگه الگوریتم ها درست پیاده سازی نشده دوستان حتما بگن تا رفع شه.

asefy2008
سه شنبه 22 تیر 1389, 19:29 عصر
در قطعه کد بالا image یک آرایه به تعداد پیکسل های عکستون هست.
اینم یک الگوریتم لبه یاب دیگه :

public void PrewittAlgorithm()
{
int gx, gy;
int[,] PrewittHorizontalArray = new int[3, 3]{
{ -1, -1, -1},
{ 0, 0, 0},
{ 1,1,1}
};

int[,] PrewittVERTICALArray = new int[3, 3]{
{ -1, 0,1},
{ -1, 0,1},
{ -1,0,1}
};
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
gx = 0;
gy = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
gx += (image[i + k, j + n] * PrewittHorizontalArray[k, n]);
gy += (image[i + k, j + n] * PrewittVERTICALArray[k, n]);
}
}
int temp = (int)Math.Sqrt(gx * gx + gy * gy);
if (temp > 255)
image[i, j] = 255;
else if (temp < 0)
image[i, j] = 0;
else
image[i, j] = temp;
}
}
}

asefy2008
سه شنبه 22 تیر 1389, 19:31 عصر
و اینم الگوریتم لبه یاب Roberts :

public void RobertsAlgorithm()
{
int gx, gy;
int[,] RobertsHorizontalArray = new int[2, 2]{
{ -1, 0},
{ 0, 1}
};

int[,] RobertsVERTICALArray = new int[2, 2]{
{ 0, -1},
{ 1,0}
};
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
gx = 0;
gy = 0;
//convolve
for (int k = 0; k + i < width && k < 2; k++)
{
for (int n = 0; n + j < height && n < 2; n++)
{
gx += (image[i + k, j + n] * RobertsHorizontalArray[k, n]);
gy += (image[i + k, j + n] * RobertsVERTICALArray[k, n]);
}
}
int temp = (int)Math.Sqrt(gx * gx + gy * gy);
if (temp > 255)
image[i, j] = 255;
else if (temp < 0)
image[i, j] = 0;
else
image[i, j] = temp;
}
}
}

asefy2008
سه شنبه 22 تیر 1389, 19:42 عصر
ماسک يا عملگر لاپلاسين :
عملگر لاپلاسين از مشتق دوم تصوير استفاده مي کند. حساسيت عملگر لاپلاسين به نويز خيلي ز ياد است زيرا با نقاط عبور از صفر ارتباط دارد و ا ين در حالي است که در بيشتر موارد سيگنال نويز نيز داراي مقادير کوچک و نزديک صفر است .

public void LAPLACE_OperatorOrMask()
{
int sigma;
int[,] MaskArray = new int[3, 3]{
{ 1, 1, 1},
{ 1,-8,1},
{ 1,1,1}
};

for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
sigma = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
sigma += image[i + k, j + n] * MaskArray[k, n];
}
}
sigma = Math.Abs(sigma);
if (sigma > 255)
image[i, j] = 255;
else
image[i,j]= sigma;
}
}
}

asefy2008
سه شنبه 22 تیر 1389, 19:43 عصر
public void SmoothAgorithm()
{
int sigma;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
sigma = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
sigma += (image[i + k, j + n]) / 9;

}
}
image[i, j] = sigma;
}
}
}

asefy2008
سه شنبه 22 تیر 1389, 19:45 عصر
برای نرم کردن لبه ها به کار می رود :

public void GaussianBlurAlgorithm()
{
int sigma;
int[,] GaussianBlurArrayMask = new int[3, 3]{
{ 1, 2, 1},
{ 2, 4,2},
{ 1,2,1}
};
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
sigma = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
sigma += (image[i + k, j + n] * GaussianBlurArrayMask[k, n]);
}
}
sigma /= 16;
if (sigma > 255)
sigma = 255;
if (sigma < 0)
sigma = 0;
image[i, j]= sigma;
}
}
}

asefy2008
سه شنبه 22 تیر 1389, 19:50 عصر
برای پیاده سازی الگوریتم canny به این تاپیک (http://barnamenevis.org/forum/showthread.php?t=215533) مراجعه کنید.

asefy2008
سه شنبه 22 تیر 1389, 20:03 عصر
حالا می خوام مرز داخلی عنبیه جدا کنیم. برای این منظور از الگوریتم sobel استفاده می کنیم.
در زیر دو عکس وجود داره یکی قبل اعمال الگوریتم sobel و یکی بعد از اعمال می بینید تقریبا مرز داخلی که همون مرز بین مردمک و عنبیه هست کاملا مشخص هست و میشه اون رو پیدا کرد.

asefy2008
سه شنبه 22 تیر 1389, 20:05 عصر
برای کوچک کردن عکس از قطعه کد زیر می تونید استفاده کنید :

//ResizeImage
public Bitmap resizeImage(Bitmap Image, Size size)
{
Bitmap b = new Bitmap(size.Width, size.Height);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage((Image)Image, 0, 0, size.Width, size.Height);
g.Dispose();
return b;
}

asefy2008
شنبه 22 مرداد 1390, 19:26 عصر
لبه یاب سوبل که در زیر قرار دادم از تمام برنامه های موجود در این تاپیک سریع تر است(البته پرویت هم در این برنامه قرار داره.)

سوداگر
یک شنبه 23 مرداد 1390, 07:33 صبح
دكتر عليرضا عصاره روي موضوع تشخيص بيماري هاي چشم با كامپيوتر زياد كار كرده، ميتونيد اسم ايشون رو توي گوگل تايپ كنيد شايد مفيد باشه!
از سمينار ايشون توي دانشگاه چمران كه درمورد تشخيص منطقه Fovia توي چشم بود معلومه كارش خيلي درسته.

asefy2008
یک شنبه 23 مرداد 1390, 14:42 عصر
دكتر عليرضا عصاره روي موضوع تشخيص بيماري هاي چشم با كامپيوتر زياد كار كرده، ميتونيد ايم ايشون رو توي گوگل تايپ كنيد شايد مفيد باشه!
از سمينار ايشون توي دانشگاه چمران كه درمورد تشخيص منطقه Fovia توي چشم بود معلومه كارش خيلي درسته.
ممنون دوست عزیز

و این هم لبه یاب کانی البته من ننوشتم. اما یک مقدار کند کار می کنه چون با توابع سیستم زیاد کار می کنه اگر تمامش رو به صورت اشاره گری درست کنید حتما سریع تر کار می کنه