چکیده علمی
این پروژه در راستای ساخت نرم افزاری برای تشخیص حروف و یا تعیین حالات عاطفی متفاوت در افراد مختلف انجام گرفته است.
در ابتدا از افراد مختلف در حالات مختلف و در ضمن ادای حروف متفاوت عکسبرداری شده و برنامه هایی برای تعیین فواصل و ویژگیهای مختلف چهره در این حالات توسط نرم افزار Matlab نوشته شده است.
در این نرم افزار عکس ورودی از منبع گرافیکی خوانده می شود و پس از انجام عملیاتی مثل resize کردن، تبدیل به حالت grayscale در برخی موارد، الگوریتم های لبه یابی، گذراندن از فیلترهای خاص، scan کردن، انجام عملیات dilation و erosion، یافتن رنج RGB نقاط مختلف تصویر، پیدا کردن ضرایب همبستگی و تشابهات و ... می توان کادر صورت، کادر لب و دهان، کادر چشم، کادر ابروها، فواصل و ابعاد مورد نظر را به دست آورد و با مقایسة این اطلاعات با دیتای موجود حالات و حروف را تشخیص داد.
این نرم افزار می تواند در پروژه های روباتیک یا برای درک حروف برای ناشنوایان مورد استفاده قرار گیرد.
فهرست مطالب
عنوان صفحه
مقدمه
فصل 1: پردازش تصویر رقمی
-نمایش تصویر رقمی
-مراحل اساسی پردازش تصویر
-پردازش
-نمونه برداری و چندی کردن
نمونه برداری و چندی کردن یکنواخت
نمونه برداری و چندی کردن غیریکنواخت
-چند رابطه پایه ای بین پیکسلها
همسایه های یک پیکسل
اتصال
-همبستگی
-فیلتر کردن
فیلترهای آرام کننده
فیلتر کردن مکان پایین گذر
فیلتر کردن پایین گذر
-پردازش تصویر زندگی
مبانی رنگ
مدلهای رنگ
مدل RGB
-بخش بندی تصویر
-آشکارسازی لبه
توصیف پایه ای
پیوند لبه و آشکارسازی مرز
-شکل شناسی
گسترش و سایش
چند تعریف پایه ای
گسترش
سایش
فصل 2: نمودارهای بلوکی، مراحل و نحوة انجام پروژه
-فلوچارت برنامة لب خوانی از روی چهره
-فلوچارت برنامة تشخیص حالات از روی چهره
-مقدمه ای بر پردازش تصویر
عوامل درونی
عوامل خارجی
-گرفتن عکس
-خواندن عکس
-یافتن کادر صورت
Resize کردن عکس
تبدیل عکس رنگی به حالت gray scale
الگوریتم لبه یابی
Scan کردن عکس
-فیلترکردن تصویر
-دستور strel
-انجام dilation و erosion
-پیدا کردن کادر لب
-یافتن اندازه های مورد نظر لب
-مقایسة اندازه ها با اندازه های حالات لب
-ادامة عملیات برای تشخیص حالت
-یافتن کادر حدودی چشم توسط correlation
چند تعریف پایه ای
گسترش
سایش
فصل 2: نمودارهای بلوکی، مراحل و نحوة انجام پروژه
-فلوچارت برنامة لب خوانی از روی چهره
-فلوچارت برنامة تشخیص حالات از روی چهره
-مقدمه ای بر پردازش تصویر
عوامل درونی
عوامل خارجی
-گرفتن عکس
-خواندن عکس
-یافتن کادر صورت
Resize کردن کادر صورت
تبدیل عکس رنگی به حالت grayscale
الگوریتم لبه یابی
Scan کردن عکس
-فیلتر کردن تصویر
-دستور strel
-انجام dilation و erosion
-پیدا کردن کادر لب
-یافتن اندازه های مورد نظر لب
-مقایسة اندازه ها با اندازه های حالات لب
-ادامة عملیات برای تشخیص حالت
-یافتن کادر حدودی چشم توسط correlation
-دستور Corr2
-مقایسه با اندازه های چشم در حالات مختلف
-یافتن کادر ابرو
-یافتن فاصلة دو ابرو
-توضیحاتی در مورد بیومتریک چهرة انسان
مقدمه
روشهای بیومتریک
استخراج ویژگیهای صورت در بیومتریک
فصل سوم: نتایج و نکات به دست آمده از انجام پروژه
-تغییرات ابعاد لب، چشم و ابرو
-ابعاد لب برای افراد مختلف
-نرمالیزه کردن ابعاد
-ابعاد قطر چشم در حالات مختلف
-رنج RGB به دست آمده از رنگ لب
-رنج RGB به دست آمده از رنگ پوست
-چند مورد پیشنهادی در راستای ادامة پروژه
4-فهرست کلمات لاتین
5-مراجع و منابع
فلوچارت برنامة لب خوانی از روی چهره
فلوچارت برنامة تشخیص حالات از روی چهره
مقدمه یا بر پردازش تصویر صورت:
صورت یک منبع قوی از اطلاعات رفتاری انسانهایت. بیان چهره نشان دهندة حالات رفتارهای اجتماعی رگوله شده سیگنالهای مربوط به صحبت کردن، حالات عاطفی و ... است که می تواند عملکرد مغز و آسیب شناسی را آشکار سازد.
اغلب سیستمهای توصیف کنندة صوت از مدلهای پیچیدة دو یا سه بعدی صوت را برای درک حالات مثل پیشانی، ابرو، چشمها، بینی، دهان، گونه و چانه استفاده می کنند.
اغلب شش حالت برای درک حالات چهره وجود دارد که عبارتند از خوشحالی، ترس، عصبانیت، تنفر، ناراحتی و تعجب.
اگر به بررسی صورت به صورت دینامیک بپردازیم تغییرات صوت می تواند به دو دلیل باشد:
1-عوامل درونی و 2-عوامل بیرونی
• عوامل درونی
کارهای ممکن برای بررسی منبع
کلاس بندی، شناسایی کامل
استنباط از عواطف و نیتهای درونی
لب – خوانی
تصمیم گیری مرد یا زن بودن
تخمین سن هویت
حالت چهره ای
صحبت
جنسیت
سن
• عوامل خارجی
تأثیرات منبع
سایه روشن، رنگ، سایة خود فرد، Highlight
اثرات مناظر، تجزیه، کانون، نویز تصویر، نمونهبرداری از توزیع تابش، روشن شدن غیرمستقیم، سایه انداختن مشاهدة هندسة صوت
روشنایی
پردازش تصویر
موارد دیگر
حالات عضلانی صورت نقش مهمی در رفتار بشر مثل سخنرانی، توصیف چهره و ... اشارات دارند. پنفیلد به این نکته دست یافته است که مدارات عصبی که وابسته به دست ها و صورت (بخصوص دهان) هستند نقش مهم در فعل و انفعالات ماشین دارند.
کلاً مراحل درک تصویر 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:
برای این کار از دستور زیر استفاده می کنیم.
I=rgb 2 gray (filename)
با انجام این کار اطلاعات از رنج 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 استفاده می کنیم.
این دستور به این صورت استفاده می شود.
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 91 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلودمقاله نرم افزاری برای تشخیص حروف