این پروژه در راستای ساخت نرم افزاری برای تشخیص حروف و یا تعیین حالات عاطفی متفاوت در افراد مختلف انجام گرفته است.
در ابتدا از افراد مختلف در حالات مختلف و در ضمن ادای حروف متفاوت عکسبرداری شده و برنامه هایی برای تعیین فواصل و ویژگیهای مختلف چهره در این حالات توسط نرم افزار 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 کردن لبه های مختلف کادر چهره را پیدا کنیم. الگوریتم مورد نظر به این صورت است.