این پروژه در راستای ساخت نرم افزاری برای تشخیص حروف و یا تعیین حالات عاطفی متفاوت در افراد مختلف انجام گرفته است.
در ابتدا از افراد مختلف در حالات مختلف و در ضمن ادای حروف متفاوت عکسبرداری شده و برنامه هایی برای تعیین فواصل و ویژگیهای مختلف چهره در این حالات توسط نرم افزار Matlab نوشته شده است.
در این نرم افزار عکس ورودی از منبع گرافیکی خوانده می شود و پس از انجام عملیاتی مثل resize کردن، تبدیل به حالت grayscale در برخی موارد، الگوریتم های لبه یابی، گذراندن از فیلترهای خاص، scan کردن، انجام عملیات dilation و erosion، یافتن رنج RGB نقاط مختلف تصویر، پیدا کردن ضرایب همبستگی و تشابهات و ...
می توان کادر صورت، کادر لب و دهان، کادر چشم، کادر ابروها، فواصل و ابعاد مورد نظر را به دست آورد و با مقایسه این اطلاعات با دیتای موجود حالات و حروف را تشخیص داد.
این نرم افزار می تواند در پروژه های روباتیک یا برای درک حروف برای ناشنوایان مورد استفاده قرار گیرد
مقدمه یا بر پردازش تصویر صورت:
صورت یک منبع قوی از اطلاعات رفتاری انسانهایت.
بیان چهره نشان دهنده حالات رفتارهای اجتماعی رگوله شده سیگنالهای مربوط به صحبت کردن، حالات عاطفی و ...
است که می تواند عملکرد مغز و آسیب شناسی را آشکار سازد.
اغلب سیستمهای توصیف کننده صوت از مدلهای پیچیده دو یا سه بعدی صوت را برای درک حالات مثل پیشانی، ابرو، چشمها، بینی، دهان، گونه و چانه استفاده می کنند.
اغلب شش حالت برای درک حالات چهره وجود دارد که عبارتند از خوشحالی، ترس، عصبانیت، تنفر، ناراحتی و تعجب.
اگر به بررسی صورت به صورت دینامیک بپردازیم تغییرات صوت می تواند به دو دلیل باشد:
1-عوامل درونی و 2-عوامل بیرونی
حالات عضلانی صورت نقش مهمی در رفتار بشر مثل سخنرانی، توصیف چهره و ...
اشارات دارند.
پنفیلد به این نکته دست یافته است که مدارات عصبی که وابسته به دست ها و صورت (بخصوص دهان) هستند نقش مهم در فعل و انفعالات ماشین دارند.
کلاً مراحل درک تصویر 6 مرحله است:
1-گرفتن عکس 2-پردازش اولیه 3-توصیف ویژگیها 4-مرحله دریافت 5-بیس اطلاعات 6-تشخیص
*گرفتن عکس: در این پروژه برای هر حالت یا در مورد ادای هر حرف از 5 الی 9 نفر توسط دوربین دیجیتال عکسبرداری شده که این عکسها با کیفیت بالا در ابعاد 1536×2048 هستند.
برای بالا بردن دقت لازم است که حروف به طور کامل توسط افراد ادا شوند و هم چنین لازم است حالات به خوبی اجرا شوند، پس ممکن است از هر فرد برای هر حالت یا هر خرف عکسهای متعدد گرفته شود.
عکسها با زمینه تیره درنظر گرفته شده اند.
این عکسها اطلاعات آماری از ابعاد و هندسه صورت را در همه این حالات نتیجه می دهد.
خواندن عکس:
خواندن عکس توسط دستور Imread صورت می گیرد.
\filename)آدرسA=(Imread(
این دستور تصویر را از فایلهای گرافیکی می خواند و به صورت دیتا قابل استفاده می سازد.
هر پیکسل عکس حاوی اطلاعات لازم است.
یافتن کادر صورت:
برای resize کردن یک عکس یک function به نام myresize تعریف نموده ایم.
در این function این گونه عمل می کنیم:
ابتدا size عکس را به حدود کاهش داده این چون تصاویر بسیار بزرگ بوده و سرعت انجام برنامه کم است پس از این دستور استفاده می کنیم:
(ضریب کوچک کردن عکس و A=Imresize(filename
2-تبدیل عکس رنگی به حالت grayscale:
برای این کار از دستور زیر استفاده می کنیم.
با انجام این کار اطلاعات از رنج 256 رنگ به رنج 5 تا 1 تبدیل می شوند.
بدین ترتیب انجام بسیاری از عملیات روی تصویر مقدور می گردد.
3-الگوریتم لبه یابی:
برای پیدا کردن کادر صورت نیاز به پیدا کردن لبه های چهره داریم و یک الگ.ریتم نیاز است تا با توجه به تغییرات رنگ کادر نسبت به چهره ما تیرگی ها و روشنی ها و سایه ها و ...
لبه های موجود در عکس را پیدا کنیم تا بتوانیم با scan کردن لبه های مختلف کادر چهره را پیدا کنیم.
الگوریتم مورد نظر به این صورت است.
برای پیدا کردن کادر صورت نیاز به پیدا کردن لبه های چهره داریم و یک الگ.ریتم نیاز است تا با توجه به تغییرات رنگ کادر نسبت به چهره ما تیرگی ها و روشنی ها و سایه ها و ...
الگوریتم مورد نظر به این صورت است.
عکس را به حالت باینری درمی آورد: A=Im2bw(IC, gray+hresh (IC)) دستور strel بعداً به طور کامل توضیح داده می شود: se = strel (disk,6) A = Imclose (A , se) B = Imopen (B , se) 4-Scan کردن عکس: برای این کار لازم است اطلاعات موجود روی عکس از چهار طرف scan شوند تا به خطوط کادر صورت برسیم.
ما با عکسهایی با Bacjground سیاه یا تیو کار کرده ایم.
پس برای یافتن کادر چهره نکته مهم لبه یابی است.
چهار لبه اطراف صورت این گونه تعریف شده اند.
*Upedge یک function با عنوان updage برای پیدا کردن لبه بالایی صورت درنظر گرفته ایم.
در این function از گوشه بالا سمت چپ شروع به scan کردن نموده و با رسیدن به لبه های مورد نظر مقادیر ثبت می گردد.
Downedge: یک function برای یافتن لبه پائین صورت است مانند upedge می باشد با این تفاوت که از گوشه پائین سمت چپ شروع به scan به صورت افقی می کنیم.
Right edge: در این function، scan کردن از گوشه بالا سمت راست شروع می شود و عملیات جاروب کردن به صورت عمودی صورت می گیرد.
Left edge: نقطه شروع آن مانند upedge می باشد ولی scan کردن به صورت عمودی انجام می گیرد حال با مقادیر به دست آمده از این چهار function کادر صورت به دست می آید.
فیلتر کردن تصویر: برای حذف نویز تصویر نیاز به یک فیلتر پائین گذر داریم تا کمی محوی در تصویر ایجاد کند.
چون ما برای پیدا کردن ناحیه لب و مقادیر آن از رنج RGB رنگ لب استفاده کرده ایم، ممکن است وجود هرگونه لکه روی پوست صورت مشکل ساز باشد، به همین دلیل از یک فیلتر پائین گذر استفاده می کنیم تا گونه ای یکنواختی روی صورت ایجاد سازد.
ما بدین صورت از فیلتر پائین گذر استفاده کرده ایم: I=imfilter (i,h); که با این کار عکس i را از فیلتر h عبور می دهیم.
H یک فیلتر پائین گذر است که آن را خودمان در ابتدای برنامه تعریف می کنیم.
ابعاد I با ابعاد i (تصویر قبل از فیلتر شدن) یکسان است.0 دستور strel: این دستور یک المنت ساختاری مورفولوژیک بوجود می آورد.
SE= strel (shape , parameters) Shape: شل مورد نظر Parameters: ابعاد شکل مورد نظر به این صورت که ما با دادن یک شکل، کادر مورد نظر خود را تعریف می کنیم و ابعاد آن را تعیین می نماییم.
با حرکت دادن آن کادر روی تصویر اصلی عملیات مورد نظر روی آن کادر انجام می گیرد.
این گونه که ما بعضی از نقاط را در واقع 1 کرده و برخی دیگر را 0 می کنیم.
پس عملیاتت فقط روی نقاط 1 صورت می گیرد.
مثلاً ما برای انجام dilation و erosion روی صورت به این صورت از این دستور استفاده کرده ایم: SE=strel (“rectangle” , [15 20]) با این کار روی یک مستطیل این عملیات را انجام می دهیم و یا حرکت آن روی همه عکس در تمام تصویر روی نقاط مورد نظر گسترش و سایش را انجام می دهیم.
یا مثلاً در مورد پیدا کردن کادر چشم و یا ابرو یک کادر تعریف کرده و با حرکت آن کادر روی تمام صورت و پیدا کردن همبستگی بیشتر چشم و ابرو را می یابیم.
* انجام dilation و erosion (گسترش سایش): در هنگام کار با عکسهای رنگی مثلاً برای پیدا کردن لب اگر بخواهم با دادن مقادیر RGB لب، آن را محل یابی کنیم ممکن است وجود لکه روی پوست یا وجود قرمزی های کوچک روی نواحی صورت مشکل ساز شود.
پس لازم است ابتدا این لکه های کوچک را حذف کنیم.
بهترین روش برای این کار درنظرگرفتن مشاع همسایگی است.
به این صورت که نکته هایی که اندازه کوچکی دارند باز هم کوچکتر و کوچکتر شده و محو شوند.
به این عمل erosin می گویند.
در نرم افزار matlab از دستور Imerode برای این منظور استفاده می شود.
A=Imerode (IM , SE) IM همان اسم عکس مورد نظر می باشد.
SE نیز قبلاً تعریف شده است که در دستور strel شرح داده شد.
پس از انجام شرح داده شد.
پس از انجام خسهد (سایش) با این مشکل ممکن است مواجه شویم که برخی از اطلاعات لازم نیز از بین برود.
به همین دلیل لازم است که پس از محو کردن نقاط و لکه های غیرلازم، اطلاعات لازم را تقویت کنیم یعنی نقاطی که شعاع همسایگی خوبی دارند و ممکن است با erosion دچار محوی شده باشند، دوباره تقویت کنیم به همین دلیل عملیات dilation را انجام می دهیم.
برای انجام این کار در نرم افزار matlab از دستور Imedilate استفاده می کنیم.
این دستور به این صورت استفاده می شود.
A=Imedilate (IM , SE) IM در واقع همان عکس مورد نظر اسیت و SE در دستور Strel به طور کامل شرح داده شد.
با تغییر مقادیر SE ضریب گسترش و سایش را تغییر می دهیم یعنی با کم کردن یا زیاد کردن SE مقدار شعاع همسایگی لازم یا بزرگی و کوچکی یک لکه را برای محو شدن یا باقی ماندن و هم چنین تقویت آن تعیین می کنیم.
در dilation و erosion اولیه این مقدار را بزرگ تعیین می کنیم تا لکه های صورت به طور کامل حذف شود و پس از پیدا کردن حدود کادر لب برای اینکه لب را به طور کامل داشته باشیم و نویزهای اطراف آن را حذف کرده و اطلاعات مفید لب را تقویت کنیم بار دیگر erosion و dilation انجام می هیم ولی با مقدار SE کمتر.
*پیدا کردن کادر لب: پس از فیلتر کردن و انجام dilation و erosion بسیاری از نویزهای مزاحم موجود در تصویر حذف شده و می توانیم از اطلاعات موجود در عکس رنگی برای مکان یابی استفاده کنیم.
عکس رنگی از سه لایه رنگی تشکیل شده که مجموع این سه لایه عکس را با رنگ واقع نشام می دهد و هر طیف رنگی روی عکس حاوی اطلاعات R، G و B می باشد.
پس لازم است که سه لایه عکس را جداسازی کرده و رنج رنگهای مورد نظر را بدست آوریم.
ابتدا رنج RGB رنگ لب را در عکسهای متفاوت به دست می آوریم و با میانگین گیری کیا تعیین حدود بالا و پایین رنگ لب را در حالات متفاوت به دست می آوریم.
یعنی نقاطی که مشخصه رنگی آنها در حدود مورد نظر تعیین شده در رنج لب قرار می گیرند جدا می کنیم، سپس این نقاط را با 1 مقدار دهی می کنیم و بقیه نقاط موجود در عکس را 0 می کنیم.
پس از آن با همان function که بریا پیدا کردن کادر صورت تعریف کرده ایم (myresize)، کادر لب را پیدا می کنیم.
در بعضی از حالات پس از این کار در اطراف لب نویز مشاهده می شود، پس بار دیگر عملیات dilation و erosion را با قدرت کمتری نسبت به قبل انجام می دهیم و دوباره با همان function کادر لب را پدیا می کنیم تا به طور واضح ابعاد لب را داشته باشیم.
و سپس همان کادر به دست آمده را روی عکس اصلی به دست می آوریم و * یافتن اندازه های مورد نظر لب: حال که کادر لب را بدست آورده اتیم ابعاد مورد نظر را روی کادر به دست آمده درمی آوریم تا بتوانیم با حالات به دست آمده در ادای حروف متفاوت یا حالات عاطفی مقایسه کنیم.
لازم است که اندازه های به دست آمده نسبت به ابعاد عکس نرمالیزه شود.
زیرا ممکن است ابعاد متفاوت باشد.
عکسهای گرفته شده در ابعاد 1536×2048 می باشند.
پس ما ابتدا ابعاد لب را نسبت به ابعاد عکس به دست می آوریم.
نکته مهم این است که نمی توان ابعاد را بر ابعاد لب در حالت نرمال تقسیم کرد، زیرا برای تشخیص اینکه مردی چه فرمی را ادا می کند یا چه حالتی دارد لزومی ندارد که ما به عکس حالت نرمال او دسترسی داشته باشیم و برنامه این قابلیت را داردت که در محدوده وسیعی برای افراد متفاوت نشخیص داشته باشد.
البته نرمالیزه کردن نسبت به حالت نرمال لب می تواند دقت کار را کمی افزایش دعد ولی در عوض ما، در تشخیص تعداد افراد دچار محدود می شویم.
*مقایسه اندازه ها با اندازه های حالات لب در هنگام ادای حروف یا حالات مختلف: ما ابتدا ابعاد لب را در حالات مختلف ادا، حروف یا حالات مختلف احساسی اندازه گیری کرده ایم.
برای این کار این اندازه ها را در افراد متفاوت به دست می آوریم و سپس نسبت به ابعاد عکس نرمالیزه کرده ایم.
با این کار محدوده اندازه ها در مورد هر حرف یا هر حالت تعیین یم شود.
حال ابعاد لب فردی که عکس او به عنوان دیتای جدید وارد شده با این محدوده ها مقایسه می شود و مشخص می شود که این ابعاد به کدام حرف نزدیک تر است.
پس حرف مورد نظر مشخص می شود و نام حرف بالای عکس نشان داده می شود.
*ادامه عملیات که برای تشخیص حالت از روی چهره لازم می باشند: در مورد ادای حروف فقط مکان یابی لبها لازم می باشد و تغییرات در اجزای دیگر صورت محسوس نمی باشد ولی در مورد حالات عاطفی که روی چهره نمایان می شود علاوه بر تغییرات روی لب، روی عناصر دیگر نیز علاماتی مشاهده می شود.
پس لازم است مثلاً اندازه های چشم یا ابروها را داشته باشیم.
*یافتن کادر حدودی چشم با اندازه گیری میزان همبستگی با چشم نمونه: پس از مقایسه حالت لب نمونه ورودی با نمونه هیا دیگر و تشخیص حالات لب مثل خنده، تعجب، ناراحتی، عصبانیت و ...
تغییرات دیگر چهره را تعیین می کنیم.
برای یافتن کادر چشم این گونه عمل می کنیم: 1-ابتدا یک کادر چشم به صورت نمونه به برنامه می دهیم و توسط دستور Imeread که قبلاً توضیح داده شد، این عکس خوانده می شود و اطلاعات آن ثبت می گردد.
2-حال عکس جدید به عنوان ورودی خوانده می شود.
3-عکس ورودی مثل حالات قبل توسط function که تعیرف شده است یعنی myresize در ابعاد مورد نظر کوچک شده و به حالت grayscale درمی آید.
و کادر صورت درمی آید.
5-توسط دستور strel کادری با مقادیر مورد نظر تعریف می کنیم تا با حرکت کادر روی عکس مورد نظر ورودی عملیات رو یتمام عکس صورت گیرد.
6-این کادر روی تصویر حرکت می کند و ضریب همبستگی (که در ادامه توضیح داده خواهد شد.) تصویر چشم نمونه که در ابتدا اطلاعات آن ثبت شده بود، با کادر مورد نظر روی عکس محاسبه می گردد.
هر جا که این همبستگی ماکزیمم باشد کادر مورد نظر روی عکس بیشترین تشابه با تصویر چشم نمونه را دارد و در واقع یک کادر حدودی از چشم را به ما می دهد و پس از آن می توان کادر اصلی چشم را به دست آورد.
دستور corr2 (پیدا کردن میزان همبستگی): این دستور همبستگی دوبعدی کافی بین دو ماتریس را محاسبه می کند.
R=Corr2(A , B) A و B دو ماتریس هم سایز هستند.
پس ما با حرکت کادر روی عکس و استفاده از این دستور بیشترین همبستگی را محاسبه کرده و کادر حدودی چشم را به دست می آوریم.
7-انجام dilation و erosion: برای پیدا کردن کادر دقیق چشم نیاز به scan کردن عکس وجود دارد.
پس لازم است نویزهای غیرلازم حذف شده و اطلاعات مفید تقویت شوند، پس عملیات گسترش و سایش را همان گونه که برای کادر لب انجام شد روی کادر حدودی چشم نیز انجام می دهیم.
8-حالا می توانیم با scan کردن مثل کادر صورت، کادر دقیق چشم را به دست آوریم، یعنی مثل قبل از چهار function مربوطه که همان upedge، doenedge، rightedge و leftedge هستند استفاده می کنیم و 4 لبه اطراف چشم را به دست می آوریم و کادر چشم را به دست می آوریم.
*مقایسه با اندازه های چشم در حالات مختلف: پس از یافتن اندازه و ابعاد لب در حالات مختلف، ممکن است ابعاد لب در بعضی حالات نزدیک به هم باشند مثلاً ممکن است در حالت خنده و در حالت تعجب ابعاد لب نزدیک باشند پس برای تمایز آنها می توان ابعاد چشم را به دست آورد که در حالت تعجب قطر چشمها افزایش می یابد ولی در حالت خنده این قطر کمتر می شود.
پس ما ابتدا ابعاد چشم رذا در این حالتها در افراد مختلف محاسبه می کنیم و محدوده ابعاد را در هر حالت تعیین می نماییم، حالا ابعاد چشم در عکس ورودی جدید را به دست آورده و مشخص می کنیم که این ابعاد در کدام محدوده قرار دارد و بدین ترتیب حالت فرد را تشخیص می دهیم.
*یافتن کادر ابرو: برای پیدا کردن حالت اخم و تشخیص آن از روی چهره نیاز به اندازه فاصله بین ابروها داریم.
زیرا در حالت عصبانیت، ابعاد لب و چشم تقریباً ثابت باقی می مانند و فقط ابروها به هم نزدیک می شوند.
پس باید کادر ابرو را به دست آوریم و فاصله آنها را از هم محلسبه کنیم.
برای پیدا کردن کادر ابرو مثل چشم عمل می کنیم.
یعنی ابتدا یک کادر از ابروی نمونه به برنامه می دهیم و اطلاعات آن را ثبت می کنیم، سپس آن کادر را روی تمام صورت حرکت می دهیم و عمل correlation را عمل می دهیم تا شبیه ترین کادر به دست آید.
البته در اینجا نیز لازم است ابتدا عکس کوچک شده و به حالت gray scale درآید و کادر صورت نیز در ابتدا خارج شود.
*یافتن فاصله دو ابرو: پس از به دست آو.ردن کادر ابرو، می توانیم فاصله ابروها را محاسبه کنیم به این ترتیب که از یک سمت به صورت عمودی به سمت دیگر شروع به زشئ می کنیم و هرگاه به جایی رسیدیم که تیرگی ابرو مشاهده نشد اندازه بعد طولی را ثبت کرده و باز جایی که تیرگی ابرو مشاهده شد مقدار دوم را ثبت می کنیم.
تفاضل این دو مقدار به ما فاصله ابروها را می دهد که در حالت اخم نسبت به حالت نرمال ابروها این فاصله کمتر می شود.
پس از انجام تمامی این مراحل و مقایسه حالات لب، چشم و ابروها حالت فرد تشخیص داده می شود.
*توضیحاتی در مورد بیومتریک چهره انسانی: *مقدمه: بیومتریک یک رشته تحقیقاتی فعال است، در سالهای اخیر توجه زیادی به ایمنی عمومی و خصوصی سیستمها و سازمانها شده است و به همین دلیل دانش بیومتریک می تواند کمک زیادی در زمینه ایمنی سازی بنماید.
بیومتریک می تواند به عنوان یک رشته تکنیکی خاص در زمینه کلاس بندی الگویی درنظر گرفته شود.
برای توسعه سیستمهای بیومتریک احتیاج به یادگیری فضای ویژگی ورودی و توسعه نقشه مناسب از ویژگیهای ورودی به فضای خروجی و یا فضای طبقه بندی شده خروجی است.
سیستمهای بیومتریک، روشهای اتوماتیکی از تغییر یا تشخیص هویت فرد بر پایه برخی ویژگیهای فیزیولوژیک مثل اثر انگشت یا تصویر چهره یا برخی از رفتارها مثل صدای سخن گفتن، دستخط و ...
می باشد.
*روشهای بیومتریک: روشهای بیومتریک دو دسته اند: 1-روشهای رفتار-پایه ای: که کارهای تشخیصی با استفاده از الگوهای رفتاری افراد مثل امضاءها، صداها و مواردی که غیرقابل تقلیدند، انجام می شود.
2-روشهای بر پایه فیزیولوژی: که هویت افراد با استفاده از ویژگیهای فیزیولوژی مثل دستخط و نقشه های IRIS (رنگ چشم و تقشه رگها)، اثر انگشت، DNA یا ویژگیهای صورت تشخیص داده می شود.
در بررسی های انجام شده ضعفهای موجود در سیستم نشان می دهد به طور مثال حالات مختلف صورت، داشتن می صورت، آرایش صورت، زمینه عکس، شرایط نوری و دیگر شرایط محیطی ممکن است در انجام کار ایجاد مشکل کند.
پس عکس های صورت باید تحت شرایط خاصی بررسی و پردازش شوند.
استخراج ویژگیهای صورت در بیومتریک: این ویژگیها می تواند شامل پهنای صورت، درازی صورت، فاصله چشمها، اندازه لب، ابعاد پیشانی، اندازه بینی و ...
باشد.
این اندازه ها می تواند به صورت دستی و یا با یادگیری از دیتای موجود صورت گیرد.
برای شرایط محیطی و نوری و تغییرات حالات چهره به طبقه بندی الگویی قویتری نیازمندیم.
نتایج و نکات به دست آمده از انجام پروژه: *تغییرات ابعاد لب، چشم و ابرو: اگر فاصله ابروها از هم را با حرف ز، قطر چشمها را با حرف d، قطر لب از بالا به پائین را با a و عرض لب از چپ به راست را با حرف b نشان دهیم، از مشاهده حروف و حالات نتایج زیر را بدست می آوریم و توسط این نتایج توانستیم شرط گذار رهایی را کامل نماییم،: در حالت اخم: اندازه c کاهش می یابد.
در بقیه حالات و یا در ادای حروف همیشه مقدار c در هر فرد ثابت می ماند.
در حالت شادی و خنده: d کوچکتر از حد نرمال خود می شود، هم چنین a کمی افزایش می یابد و b نیز افزایش محسوسی دارد.
در حالت ناراحتی: فاصله d کمی کاهش می یابد و در این حالت a نسبت به حالت نرمال کمی بیشتر می شود.
در حالت تعجب: a افزایش یافته و d نیز به طور محسوسی افزایش می یابد، پس تمایز حالت تعجب و خنده بیشتر توسط اندازه d محسوس می گردد.
در مورد حروف صدادار: با به دست آوردن ابعاد حروف صدادار تشخیص آنها با دقت نسبی میسر می گردد.
در مورد حروف c و d ثابت هستند.
در حروف «ب» و «م» b کمی افزایش می یابد ولی a کوچکتر از حد نرمال است.
البته در مورد حرف «م» کاهش a بیشتر است و این گونه «ب» و «م» را از هم تشخیص می دهیم.
در حروف «ج» و «ش»: B کوچکتر از حالت نرمال است و در هر دوی این حروف تقریباً یکسان است ولی a بیشتر از حالت عادی است.
اندازه a در «ش» کمی بیشتر از «ج» است ولی در بسیاری از موارد این تفاوت محسوس نیست.
در حروف «ز» و «س» اندازه a و b کمی افزایش می یابد و در این دو مورد این افزایش ها بسیار شبیه هم هستند.
فقط در «س» b کمی بیشتر افزایش می یابد.
در «ف» و «و» لب ها کمتر از هم باز می شوند.
a افزایش می یابد ولی افزایش آن به اندازه «ز» و «س» نیست.
در این پروژه فیلترهای متعددی امتحان شده است تا یک نمونه فیلتر پایین گذر که جواب بهتری می دهد عمل فیلتر کردن عکس را انجام دهد.
هم چنین برای rdge detection چندین الگوریتم مکان یابی لبه مورد آزمایش قرار گرفت و یک الگوریتم که در پیدا کردن کادر بهتر عمل می کرد انتخاب گردید.
در مورد افراد مختلف ابعاد لب برای حالات و حروف مختلف در عکسهایی با ابعاد 1536×2048 پیکسل به این صورت به دست آمده است.
نرمالیزه کردن ابعاد: سپس این اندازه ها یک بار نسبت به ابعاد خود عکس (1536×2048) و یکبار نسبت به ابعاد لب همان فرد در حالت نرمال، نرمالیزه شده و اندازه ها ثبت گردید.
چون برای تشخیص یک حالت یا یک حرف از یک فرد لزومی به داشتن حالت نرمال وی نیست پس ما با اعداد نرمالیزه شده نسبت به ابعاد عکس کار کرده ایم.
با این کار محدودیتی در وارد کردن دیتای جدید نداریم.
برای حروف این محدوده های نرمالیزه شده به دست آمده است.
ابعاد قطر چشم برای افراد مختلف در حالات عاطفی مختلف در یک عکس 1536×2048 پیکسل: توجه: در حالت اخم ابعاد چشم بسیار نزدیک به حالت نرمال است.
در مورد کار با تصاویر رنگی و پیدا کردن کادر لب، وجود هرگونه لکه روی صورت که رنج رنگی آن نزدیک به لب بوده است ایجاد مشکل می کرد، پس ما با قرار دادن فیلتر و نیز انجام عملیات dilation و erosin این نویزها را در حد بسیار مطلوبی رفع نموده و اطلاعات مفید را تقویت کرده ایم.
هم چنین با این کارها نقاط با شعاع همسایگی کم که همان لکه های کوچک و نویز هستند محو می شوند.
*برای پیدا کردن چشم و ابرو نمی توانستیم از رنج رنگی استفاده کنیم، زیرا ما از عکسهایی با Background تیره استفاده نموده ایم و با پیدا کردن کادر صورت باز هم در چهار گوشه کادر تیرگی داریم و این تیرگی ها با تیرگی های چشم و ابرو رنج تقریباً یکسانی دارند، پس ابتدا با استفاده از ضریب همبستگی، کادر حدودی چشم و ابرو را به دست آورده و سپس کادر اصلی را می یابیم.
*یک مشکلی که در پیدا کردن فاصله ابروها مشاهده شد در مورد افرادی بود که ابروهای آنها دارای پیوستگی محسوسی بود، زیرا تیرگی ابروها در فاصله دو ابرو نیز مشهود بود و ما نمی توانستیم کاهش فاصله ابروها را در حالت اخم detect کنیم.
البته اگر از کاهش اشباع ابروها در وسط دو ابرو استفاده می کردیم تا حدودی این مشکل رفع می شد ولی در عوض نمی توانستیم در مورد افراد با ابروهای کم پشت (که اشباع کمی دارند) تشخیص دهیم.
در چند مورد خطاهایی در تشخیص حروف مشاهده می شود، مثلاً حروف «ز» و «س» گاهی جا به جا تشخیص داده می شوند.
یا حرف «ج» و «ش» در کی دو مورد تشابه ابعاد دارند.
هم چنین در حرف «ف» و «و» نیز این مشکل دیده می شود که به دلیل تشابه زیاد حالت لب در ادای این حروف است.
در مورد حروف صدادار نیز ممکن است گاهی تشخیص «اَ» و «اِ» از هم مشکل ساز باشد ولی در مورد حروفی مثل «اُ»، «او»، «ای»، «آ»، «م»، «ب» و ...
با درصد بسیار بالایی تشخیص مطلوب داریم.
چند مورد پیشنهادی در راستای ادامه این پروژه: 1-استفاده از سیگنالهای صوتی علاوه بر سیگنالهای تصویری در تشخیص حروف برای بالا بردن دقت تشخیص در انجام کارهای مربوط به پروژه های رباتیک: در دسته بندی حروف بسیاری از حروف قابل مشاهده نیستند مثلاً در یک دسته بندی از حروف انگلیسی، حروف به این صورت دسته بنید شده اند: و یا در دسته بندی نوع دیگر، حروف این گونه طبقه بندی شده اند: پس از تعدادی از حروف با پردازش سیگنالهای تصویری به تنهایی قابل تشخیص نیستند و می توان از سیگنالهای صوتی برای تشخیص آنها کمک گرفت و پروژه را به صورت Audio-Video انجام داد.
2-استفاده از شبکه عصبی در پروژه: بدین صورت که مثلاً شکل کادر لب را بیابد و یا مثلاً شکل چشم و ابرو را.
هم چنین می توان شکل لب و دهان، چشمها و ابروها را در حالات مختلف ادای حروف یا حالات عاطفی متفاوت به سیستم آموزش داد.
مثلاً در حالت ادای حرف «ب» حالت لب را و یا مثلاً حالت چشم در هنگام خنده را به سیستم یاد بدهیم تا حرف و حالت مورد نظر را تشخیص دهد.
یا نقاط مختلف روی چهره را بر اساس متغیرهای مختلف دسته بندی کنیم تا اجزای مختلف چهره مجزا شوند.
3-می توان در این پروژه از چین خوردگیهای صورت و svan کردن آنها در حالات مختلف استفاده کرد.
مثلاً در حالت تعجب، از چین خوردگیهای روی قسمت پیشانی، در حالت خنده از چین خوردگیهای اطراف چشم و اطراف دهان و ...
ولی با توجه به اینکه دیتای موجود در این پروژه از دانشجویان به دست آمده و محدوده سنی کمتری وجود دارد، این چین خوردگیها محسوس نیست و لازم است برای این کار از افرادی با سنین بالاتری استفاده شود.
4-کاربر این نرم افزار می تواند در انجام پروژه های رباتیک و تشخیص حالات یا حروف چهره توسط سیستم های رباتیک باشد.
5-کاربر دیگر این پروژه می تواند در کمک به ناشنوایان برای تشخیص حروف توسط سیگنالهای تصویری نقش داشته باشد.
فهرست کلمات لاتین: ALU Audio-Video Bacjground Bartlane Biometric Character CMY Contract Corr2 Correlation CT-scan Detect Dilation Downedge Edge Edge detection Filename Function Full color processing Gray level Gray scale Highlight HIS Imread ImresizeIm2bw Imclose Imopen Imfilter Imerode Imdilate Lipreading Low pass Left edge MRI Mariner Monochrom image Matlab Morphology Myresize Parameters Rectangle Resize RGB Rgb 2 gray Right edge Surveyor Scan Strel Size Shape Upedge مراجع و متابع: کتاب Digital Image Pricessing Rafael C.Gonzalez, Richard E.Woodsنوشته: کتاب Biometric Authentication نوشته: S.Y.Jung کتاب: Face Recognition کتاب خودآموز نرم افزار مطلب تألیف: مهندس فکور یکتا و Help نرم افزار مطلب مقالات و سایتهای اینترنتی چکیده: در این پروژه، برنامه ای نرم افزاری طرح می شود که از روی تصویر تمام رخ و نیم رخ، منحنی چهره یعنی مرزبندی آن را نسبت به اطراف، به دست می آورد.
داده های پروژه شامل تصاویر رایانه ای نیم رخ و تمام رخ حدود 500 نفر می باشد که با توجه به ابعاد استاندارد، صورت را قسمت بندی می کنیم و اجزای متفاوت صورت در قسمتهای مختلف با هم مقایسه می شوند که چهره شخصی مورد نظر را با به دست آوردن بیشترین تشابهات، پیدا کند.
تقسیم بندی استاندارد از نظر آناتومیک به این صورت می باشد که اگر صورت را به 3 قسمت تقسیم کنیم خط اول روی ابرو و خط دوم زیر بینی، به این صورت که اول پیشانی، قسمت دوم شامل دو چشم و بینی و گونه ها و قسمت سوم لب و چانه را دربرمی گیرد.
که پس از مقایسه هر قسمت در بین مجموعه عکسها، نزدیکترین عکس مشابه به عکس مورد نظر را شناسایی می کند که این برنامه با نرم افزار مطلب نوشته شده است.
در این نرم افزار با عملیاتی مثل resize کردن و تبدیل به حالت grayscale، الگوریتم لبه یابی، پیدا کردن همبستگی، قسمت بندی عکس و ...
فرد، شناسایی می گردد.
فهرست مطالب الگوریتم برنامه: در ابتددای کار با دوربین دیجیتال نصاویر رایانه ای حدود 500 نفر را جمع آوری کردیم که هر کدام با کیفیت و رزولوشن بالا و شرایط محیطی مثل نور مناسب و پشت زمینه سیاه می باشند.
این databank حاوی اطلاعات لازم موجود در هر پیکسل عکس می باشد.
سپس عکس مورد نظر را که می خواهیم در این مجموعه شناسایی کنیم وارد می کنیم.
با دستور resizeنرم افزار مطلب ابتدا سایز عکس را کم کرده که سرعت برنامه زیاد شود و سپس با روش لبه یابی لبه ها و کادر صورت را استخراج می کنیم و بعد کادر صورت به 6 قسمت مساوی، تقسیم می کنیم که هر قسمت از عکس را با همان قسمت از عکسهای موجود در دیتا بانک مقایسه می کنیم و با دستور Corr2 نرم افزار مطلب، ضریب همبستگی آن را به دست می اوریم و پس از جمع ضرائب همبستگی کل قسمتهای صورت، نزدیکترین عکس موجود به عکس مورد نظر را شناسایی می کند.
بنابراین با داشتن اطلاعات موجود در databank می توانیم هر فردی را که بخواهیم در این مجموعه شناسایی کنیم و یا اگر عکسی که در این مجموعه نباشد، به عنوان ورودی دهیم، مشخص می کند که این عکس در این مجموعه نمی باشد.
اگر فرد در حالات مختلف مثل خنده و ناراحتی و اخم نیز وارد شود، این نرم افزار قادر به شناسایی فرد می باشد.
بعد از پیدا کردن کادر صورت، مرحله بعدی پیدا کردن ویژگیهای صورت می باشد که البته ما از تقسیم بندی صورت به 6 ناحیه شناسایی را انجام دادیم.
مزیت دستور Corr2: کم بودن نرخ خطا عیب دستور Corr2: پایین بودن سرعت عمل مقایسه و تشخیص در این مجموعه با این دستور، به نتیجه رسید.
1-خواندن data: که در واقع فرد مورد نظر است، توسط دستور imread خوانده می شود که به این صورت استفاده می شود.
I=imread (Address \ filename) 2-myresize: در این حالت function که خودمان آن را تعریف کرده ایم، ابتدا عکس توسط دستور imresize در ابعاد مورد نظر می آید و کم می شود تا سرعت کار بالا رود.