نرم افزاری برای تشخیص حروف

چكيده علمي
اين پروژه در راستاي ساخت نرم افزاري براي تشخيص حروف و يا تعيين حالات عاطفي متفاوت در افراد مختلف انجام گرفته است.
در ابتدا از افراد مختلف در حالات مختلف و در ضمن اداي حروف متفاوت عكسبرداري شده و برنامه هايي براي تعيين فواصل و ويژگيهاي مختلف چهره در اين حالات توسط نرم افزار Matlab نوشته شده است.

در اين نرم افزار عكس ورودي از منبع گرافيكي خوانده مي شود و پس از انجام عملياتي مثل resize كردن، تبديل به حالت grayscale در برخي موارد، الگوريتم هاي لبه يابي، گذراندن از فيلترهاي خاص، scan كردن، انجام عمليات dilation و erosion، يافتن رنج RGB نقاط مختلف تصوير، پيدا كردن ضرايب همبستگي و تشابهات و … مي توان كادر صورت، كادر لب و دهان، كادر چشم، كادر ابروها، فواصل و ابعاد مورد نظر را به دست آورد و با مقايسة اين اطلاعات با ديتاي موجود حالات و حروف را

تشخيص داد.
اين نرم افزار مي تواند در پروژه هاي روباتيك يا براي درك حروف براي ناشنوايان مورد استفاده قرار گيرد.

فهرست مطالب
عنوان صفحه
مقدمه
فصل ۱: پردازش تصوير رقمي
-نمايش تصوير رقمي
-مراحل اساسي پردازش تصوير
-پردازش
-نمونه برداري و چندي كردن
نمونه برداري و چندي كردن يكنواخت
نمونه برداري و چندي كردن غيريكنواخت
-چند رابطه پايه اي بين پيكسلها

همسايه هاي يك پيكسل
اتصال
-همبستگي
-فيلتر كردن
فيلترهاي آرام كننده
فيلتر كردن مكان پايين گذر
فيلتر كردن پايين گذر

-پردازش تصوير زندگي
مباني رنگ
مدلهاي رنگ
مدل RGB
-بخش بندي تصوير
-آشكارسازي لبه
توصيف پايه اي
پيوند لبه و آشكارسازي مرز
-شكل شناسي
گسترش و سايش
 چند تعريف پايه اي
 گسترش
سايش
فصل ۲: نمودارهاي بلوكي، مراحل و نحوة انجام پروژه
-فلوچارت برنامة لب خواني از روي چهره
-فلوچارت برنامة تشخيص حالات از روي چهره
-مقدمه اي بر پردازش تصوير
عوامل دروني
عوامل خارجي
-گرفتن عكس
-خواندن عكس
-يافتن كادر صورت

Resize كردن عكس
تبديل عكس رنگي به حالت gray scale
الگوريتم لبه يابي
Scan كردن عكس
-فيلتركردن تصوير

-دستور strel
-انجام dilation و erosion
-پيدا كردن كادر لب
-يافتن اندازه هاي مورد نظر لب
-مقايسة اندازه ها با اندازه هاي حالات لب
-ادامة عمليات براي تشخيص حالت
-يافتن كادر حدودي چشم توسط correlation
 چند تعريف پايه اي
 گسترش
 سايش
فصل ۲: نمودارهاي بلوكي، مراحل و نحوة انجام پروژه
-فلوچارت برنامة لب خواني از روي چهره
-فلوچارت برنامة تشخيص حالات از روي چهره
-مقدمه اي بر پردازش تصوير
 عوامل دروني
 عوامل خارجي
-گرفتن عكس
-خواندن عكس
-يافتن كادر صورت
 Resize كردن كادر صورت
 الگوريتم لبه يابي
 Scan كردن عكس
-فيلتر كردن تصوير
-دستور strel
-انجام dilation و erosion
-پيدا كردن كادر لب
-يافتن اندازه هاي مورد نظر لب
-مقايسة اندازه ها با اندازه هاي حالات لب

-ادامة عمليات براي تشخيص حالت
-يافتن كادر حدودي چشم توسط correlation
-دستور Corr2
-مقايسه با اندازه هاي چشم در حالات مختلف
-يافتن كادر ابرو
-يافتن فاصلة دو ابرو
-توضيحاتي در مورد بيومتريك چهرة انسان
مقدمه
روشهاي بيومتريك
استخراج ويژگيهاي صورت در بيومتريك
فصل سوم: نتايج و نكات به دست آمده از انجام پروژه
-تغييرات ابعاد لب، چشم و ابرو
-ابعاد لب براي افراد مختلف
-نرماليزه كردن ابعاد
-ابعاد قطر چشم در حالات مختلف
-رنج RGB به دست آمده از رنگ لب
-رنج RGB به دست آمده از رنگ پوست
-چند مورد پيشنهادي در راستاي ادامة پروژه
۴-فهرست كلمات لاتين
۵-مراجع و منابع

 

فلوچارت برنامة لب خواني از روي چهره

فلوچارت برنامة تشخيص حالات از روي چهره

مقدمه يا بر پردازش تصوير صورت:
صورت يك منبع قوي از اطلاعات رفتاري انسانهايت. بيان چهره نشان دهندة حالات رفتارهاي اجتماعي رگوله شده سيگنالهاي مربوط به صحبت كردن، حالات عاطفي و … است كه مي تواند عملكرد مغز و آسيب شناسي را آشكار سازد.
اغلب سيستمهاي توصيف كنندة صوت از مدلهاي پيچيدة دو يا سه بعدي صوت را براي درك حالات مثل پيشاني، ابرو، چشمها، بيني، دهان، گونه و چانه استف

اده مي كنند.
اغلب شش حالت براي درك حالات چهره وجود دارد كه عبارتند از خوشحالي، ترس، عصبانيت، تنفر، ناراحتي و تعجب.
اگر به بررسي صورت به صورت ديناميك بپردازيم تغييرات صوت مي تواند به دو دليل باشد:
۱-عوامل دروني و ۲-عوامل بيروني

• عوامل دروني
كارهاي ممكن براي بررسي منبع
كلاس بندي، شناسايي كامل
استنباط از عواطف و نيتهاي دروني
لب – خواني
تصميم گيري مرد يا زن بودن
تخمين سن هويت
حالت چهره اي
صحبت
جنسيت
سن

• عوامل خارجي
تأثيرات منبع
سايه روشن، رنگ، ساية خود فرد، Highlight

اثرات مناظر، تجزيه، كانون، نويز تصوير، نمونه‌برداري از توزيع تابش، روشن شدن غيرمستقيم، سايه انداختن مشاهدة هندسة صوت
روشنايي
پردازش تصوير
موارد ديگر

حالات عضلاني صورت نقش مهمي در رفتار بشر مثل سخنراني، توصيف چه ها و صورت (بخصوص دهان) هستند نقش مهم در فعل و انفعالات ماشين دارند.
كلاً مراحل درك تصوير ۶ مرحله است:
۱-گرفتن عكس ۲-پردازش اوليه ۳-توصيف ويژگيها ۴-مرحله دريافت ۵-بيس اطلاعات ۶-تشخيص
*گرفتن عكس: در اين پروژه براي هر حالت يا در مورد اداي هر حرف از ۵ الي ۹ نفر توسط دوربين ديجيتال عكسبرداري شده كه اين عكسها با كيفيت بالا در ابعاد ۱۵۳۶×۲۰۴۸ هستند.
براي بالا بردن دقت لازم است كه حروف به طور كامل توسط افراد ادا شوند و هم چنين لازم است حالات به خوبي اجرا شوند، پس ممكن است از هر فرد براي هر حالت يا هر خرف عكسهاي متعدد گرفته شود. عكسها با زمينة تيره درنظر گرفته شده اند.
اين عكسها اطلاعات آماري از ابعاد و هندسة صورت را در همة اين حالات نتيجه مي دهد.
خواندن عكس:
خواندن عكس توسط دستور Imread صورت مي گيرد.
\filename)آدرسA=(Imread(
اين دستور تصوير را از فايلهاي گرافيكي مي خواند و به صورت ديتا قابل استفاده مي سازد.
هر پيكسل عكس حاوي اطلاعات لازم است.

يافتن كادر صورت:
براي resize كردن يك عكس يك function به نام myresize تعريف نموده ايم. در اين function اين گونه عمل مي كنيم:
ابتدا size عكس را به حدود كاهش داده اين چون تصاوير بسيار بزرگ بوده و سرع

ت انجام برنامه كم است پس از اين دستور استفاده مي كنيم:
(ضريب كوچك كردن عكس و A=Imresize(filename
2-تبديل عكس رنگي به حالت grayscale:
براي اين كار از دستور زير استفاده مي كنيم.
I=rgb 2 gray (filename)
با انجام اين كار اطلاعات از رنج ۲۵۶ رنگ به رنج ۵ تا ۱ تبديل مي شوند. بدين ترتيب انجام بسياري از عمليات روي تصوير مقدور مي گردد.

۳-الگوريتم لبه يابي:
براي پيدا كردن كادر صورت نياز به پيدا كردن لبه هاي چهره داريم و يك الگ.ريتم نياز است تا با توجه به تغييرات رنگ كادر نسبت به چهره ما تيرگي ها و روشني ها و سايه ها و … لبه هاي موجود در عكس را پيدا كنيم تا بتوانيم با 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 (تصوير قبل از فيلتر شدن) يكسان است.۰

دستور strel:
اين دستور يك المنت ساختاري مورفولوژيك بوجود مي آورد.
SE= strel (shape , parameters)
Shape: شل مورد نظر
Parameters: ابعاد شكل مورد نظر
به اين صورت كه ما با دادن يك شكل، كادر مورد نظر خود را تعريف مي كنيم و ابعاد آن را تعيين مي نماييم. با حركت دادن آن كادر روي تصوير اصلي عمليات مورد نظر روي آن كادر انجام مي گيرد. اين گونه كه ما بعضي از نقاط را در واقع ۱ كرده و برخي ديگر را ۰ مي كنيم. پس عملياتت فقط روي نقاط ۱ صورت مي گيرد.
مثلاً ما براي انجام dilation و erosion روي صورت به اين صورت از اين دستور استفاده كرده ايم:
SE=strel (“rectangle” , [۱۵ ۲۰])
با اين كار روي يك مستطيل اين عمليات را انجام مي دهيم و يا حركت آن روي همة عكس در تمام تصوير روي نقاط مورد نظر گسترش و سايش را انجام مي دهيم. يا مثلاً در مورد پيدا كردن كادر چشم و يا ابرو يك كادر تعريف كرده و با حركت آن كادر روي تمام صورت و پيدا كردن همبستگي بيشتر چشم و ابرو را مي يابيم.
* انجام 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 رنگ لب را در عكسهاي متفاوت به دست مي آوريم و با ميا

نگين گيري كيا تعيين حدود بالا و پايين رنگ لب را در حالات متفاوت به دست مي آوريم.
يعني نقاطي كه مشخصة رنگي آنها در حدود مورد نظر تعيين شده در رنج لب قرار مي گيرند جدا مي كنيم، سپس اين نقاط را با ۱ مقدار دهي مي كنيم و بقيه نقاط موجود در عكس را ۰ مي كنيم. پس از آن با همان function كه بريا پيدا كردن كادر صورت تعريف كرده ايم (myresize)، كادر لب را پيدا مي كنيم. در بعضي از حالات پس از اين كار در اطراف لب نويز مشاهده مي شود، پس بار ديگر عمليات dilation و erosion را با قدرت كمتري نسبت به قبل انجام مي دهيم و دوباره با همان function كادر لب را پديا مي كنيم تا به طور واضح ابعاد لب را داشته باشيم. و سپس همان كادر به دست آمده را روي عكس اصلي به دست مي آوريم و

* يافتن اندازه هاي مورد نظر لب:
حال كه كادر لب را بدست آورده اتيم ابعاد مورد نظر را روي كادر به دست آمده درمي آوريم تا بتوانيم با حالات به دست آمده در اداي حروف متفاوت يا حالات عاطفي مقايسه كنيم.
لازم است كه اندازه هاي به دست آمده نسبت به ابعاد عكس نرماليزه شود. زيرا ممكن است ابعاد متفاوت باشد. عكسهاي گرفته شده در ابعاد ۱۵۳۶×۲۰۴۸ مي باشند. پس ما ابتدا ابعاد لب را نسبت به ابعاد عكس به دست مي آوريم. نكتة مهم اين است كه نمي توان ابعاد را بر ابعاد لب در حالت نرمال تقسيم كرد، زيرا براي تشخيص اينكه مردي چه فرمي را ادا مي كند يا چه حالتي دارد لزومي ندارد كه ما به عكس حالت نرمال او دسترسي داشته باشيم و برنامه اين قابليت را داردت كه در محدودة وسيعي براي افراد متفاوت نشخيص داشته باشد. البته نرماليزه كردن نسبت به حالت نرمال لب مي تواند دقت كار را كمي افزايش دعد ولي در عوض ما، در تشخيص تعداد افراد دچار محدود مي شويم.
*مقايسه اندازه ها با اندازه هاي حالات لب در هنگام اداي حروف يا حالات مختلف:
ما ابتدا ابعاد لب را در حالات مختلف ادا، حروف يا حالات مختلف احساسي اندازه گيري كرده ايم. براي اين كار اين اندازه ها را در افراد متفاوت به دست مي آوريم و سپس نسبت به ابعاد عكس نرماليزه كرده ايم. با اين كار محدودة اندازه ها در مورد هر حرف يا هر حالت تعيين يم شود. حال ابعاد لب فردي كه عكس او به عنوان ديتاي جديد وارد شده با اين محدوده ها مقايسه مي شود و مشخص مي شود كه اين ابعاد به كدام حرف نزديك تر است. پس حرف مورد نظر مشخص مي شود و نام حرف بالاي عكس نشان داده مي شود.

*ادامه عمليات كه براي تشخيص حالت از روي چهره لازم مي باشند:
در مورد اداي حروف فقط مكان يابي لبها لازم مي باشد و تغييرات در اجزاي ديگر صورت محسوس نمي باشد ولي در مورد حالات عاطفي كه روي چهره نمايان مي شود علاوه بر تغييرات روي لب، روي عناصر ديگر نيز علاماتي مشاهده مي شود. پس لازم است مثلاً اندازه هاي چشم يا ابروها را داشته باشيم.

*يافتن كادر حدودي چشم با اندازه گيري ميزان همبستگي با چشم نمونه:
پس از مقايسه حالت لب نمونة ورودي با نمونه هيا ديگر و تشخيص حالات لب مثل خنده، تعجب، ناراحتي، عصبانيت و … تغييرات ديگر چهره را تعيين مي كنيم.

براي يافتن كادر چشم اين گونه عمل مي كنيم:
۱-ابتدا يك كادر چشم به صورت نمونه به برنامه مي دهيم و توسط دستور Imeread كه قبلاً توضيح داده شد، اين عكس خوانده مي شود و اطلاعات آن ثبت مي گردد.
۲-حال عكس جديد به عنوان ورودي خوانده مي شود.
۳-عكس ورودي مثل حالات قبل توسط function كه تعيرف شده است يعن

. و كادر صورت درمي آيد.
۵-توسط دستور strel كادري با مقادير مورد نظر تعريف مي كنيم تا با حركت كادر روي عكس مورد نظر ورودي عمليات رو يتمام عكس صورت گيرد.
۶-اين كادر روي تصوير حركت مي كند و ضريب همبستگي (كه در ادامه توضيح داده خواهد شد.) تصوير چشم نمونه كه در ابتدا اطلاعات آن ثبت شده بود، با كادر مورد نظر روي عكس محاسبه مي گردد. هر جا كه اين همبستگي ماكزيمم باشد كادر مورد نظر روي عكس بيشترين تشابه با تصوير چشم نمونه را دارد و در واقع يك كادر حدودي از چشم را به ما مي دهد و پس از آن مي توان كادر اصلي چشم را به دست آورد.

 

دستور corr2 (پيدا كردن ميزان همبستگي):
اين دستور همبستگي دوبعدي كافي بين دو ماتريس را محاسبه مي كند.
R=Corr2(A , B)
A و B دو ماتريس هم سايز هستند.
پس ما با حركت كادر روي عكس و استفاده از اين دستور بيشترين همبستگي را محاسبه كرده و كادر حدودي چشم را به دست مي آوريم.
۷-انجام dilation و erosion: براي پيدا كردن كادر دقيق چشم نياز به scan كردن عكس وجود دارد. پس لازم است نويزهاي غيرلازم حذف شده و اطلاعات مفيد تقويت شوند، پس عمليات گسترش و سايش را همان گونه كه براي كادر لب انجام شد روي كادر حدودي چشم نيز انجام مي دهيم.

۸-حالا مي توانيم با scan كردن مثل كادر صورت، كادر دقيق چشم را به دست آوريم، يعني مثل قبل از چهار function مربوطه كه همان upedge، doenedge، rightedge و leftedge هستند استفاده مي كنيم و ۴ لبة اطراف چشم را به دست مي آوريم و كادر چشم را به دست مي آور

يم.
*مقايسه با اندازه هاي چشم در حالات مختلف:
پس از يافتن اندازه و ابعاد لب در حالات مختلف، ممكن است ابعاد لب در بعضي حالات نزديك به هم باشند مثلاً ممكن است در حالت خنده و در حالت تعجب ابعاد لب نزديك باشند پس براي تمايز آنها مي توان ابعاد چشم را به دست آورد كه در حالت تعجب قطر چشمها افزايش مي يابد ولي در حالت خنده اين قطر كمتر مي شود.
پس ما ابتدا ابعاد چشم رذا در اين حالتها در افراد مختلف محاسبه مي كنيم و محدودة ابعاد را در هر حالت تعيين مي نماييم، حالا ابعاد چشم در عك

 

س ورودي جديد را به دست آورده و مشخص مي كنيم كه اين ابعاد در كدام محدوده قرار دارد و بدين ترتيب حالت فرد را تشخيص مي دهيم.

*يافتن كادر ابرو:
براي پيدا كردن حالت اخم و تشخيص آن از روي چهره نياز به اندازة فاصله بين ابروها داريم. زيرا در حالت عصبانيت، ابعاد لب و چشم تقريباً ثابت باقي مي مانند و فقط ابروها به هم نزديك مي شوند. پس بايد كادر ابرو را به دست آوريم و فاصلة آنها را از هم محلسبه كنيم.
براي پيدا كردن كادر ابرو مثل چشم عمل مي كنيم. يعني ابتدا يك كادر از ابروي نمونه به برنامه مي دهيم و اطلاعات آن را ثبت مي كنيم، سپس آن كادر را روي تمام صورت حركت مي دهيم و عمل correlation را عمل مي دهيم تا شبيه ترين كادر به دست آيد. البته در اينجا نيز لازم است ابتدا عكس كوچك شده و به حالت gray scale درآيد و كادر صورت نيز در ابتدا خارج شود.

*يافتن فاصلة دو ابرو:
پس از به دست آو.ردن كادر ابرو، مي توانيم فاصلة ابروها را محاسبه كنيم به اين ترتيب كه از يك سمت به صورت عمودي به سمت ديگر شروع به زشئ مي كنيم و هرگاه به جايي رسيديم كه تيرگي ابرو مشاهده نشد اندازة بعد طولي را ثبت كرده و باز جايي كه تيرگي ابرو مشاهده شد مقدار دوم را ثبت مي كنيم. تفاضل اين دو مقدار به ما فاصلة ابروها را مي دهد كه در حالت اخم نسبت به حالت نرمال ابروها اين فاصله كمتر مي شود.
پس از انجام تمامي اين مراحل و مقايسة حالات لب، چشم و ابروها حالت فرد تشخيص داده مي شود.

*توضيحاتي در مورد بيومتريك چهرة انساني:
*مقدمه:
بيومتريك يك رشته تحقيقاتي فعال است، در سالهاي اخير توجه زيادي به ايمني عمومي و خصوصي سيستمها و سازمانها شده است و به همين دليل

دانش بيومتريك مي تواند كمك زيادي در زمينة ايمني سازي بنمايد.
بيومتريك مي تواند به عنوان يك رشتة تكنيكي خاص در زمينه كلاس بندي الگويي درنظر گرفته شود. براي توسعة سيستمهاي بيومتريك احتياج به يادگيري فضاي وضاي خروجي و يا فضاي طبقه بندي شدة خروجي است.
سيستمهاي بيومتريك، روشهاي اتوماتيكي از تغيير يا تشخيص هويت فرد بر پاية برخي ويژگيهاي فيزيولوژيك مثل اثر انگشت يا تصوير چهره يا برخي از رفتارها مثل صداي سخن گفتن، دستخط و … مي باشد.
*روشهاي بيومتريك:
روشهاي بيومتريك دو دسته اند:
۱-روشهاي رفتار-پايه اي: كه كارهاي تشخيصي با استفاده از الگوهاي رفتاري افراد مثل امضاءها، صداها و مواردي كه غيرقابل تقليدند، انجام مي شود.
۲-روشهاي بر پاية فيزيولوژي: كه هويت افراد با استفاده از ويژگيهاي فيزيولوژي مثل دستخط و نقشه هاي 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 چندين الگوريتم مكان يابي لبه مورد آزمايش قرار گرفت و يك الگوريتم كه در پيدا كردن كادر بهتر عمل مي كرد انتخاب گرديد.
در مورد افراد مختلف ابعاد لب براي حالات و حروف مختلف در عكسهايي با ابعاد ۱۵۳۶×۲۰۴۸ پيكسل به اين صورت به دست آمده است.
در مورد افراد مختلف ابعاد لب براي حالات و حروف مختلف در عكسهايي با ابعاد ۱۵۳۶×۲۰۴۸ پيكسل به اين صورت به دست آمده است.
نرماليزه كردن ابعاد:
سپس اين اندازه ها يك بار نسبت به ابعاد خود عكس (۱۵۳۶×۲۰۴۸) و يكبار نسبت به ابعاد لب همان فرد در حالت نرمال، نرماليزه شده و اندازه ها ثبت گرديد. چون براي تشخيص يك حالت يا يك حرف از يك فرد لزومي به داشتن حالت نرمال وي نيست پس ما با اعداد نرماليزه شده نسبت به ابعاد عكس كار كرده ايم. با اين كار محدوديتي در وارد كردن ديتاي جديد نداريم. براي حروف اين محدوده هاي نرماليزه شده به دست آمده است.
ابعاد قطر چشم براي افراد مختلف در حالات عاطفي مختلف در يك عكس
۱۵۳۶×۲۰۴۸ پيكسل:
توجه:
در حالت اخم ابعاد چشم بسيار نزديك به حالت نرمال است.
در مورد كار با تصاوير رنگي و پيدا كردن كادر لب، وجود هرگونه لكه روي صورت كه رنج رنگي آن نزديك به لب بوده است ايجاد مشكل مي كرد، پس ما با قرار دادن فيلتر و نيز انجام عمليات dilation و erosin اين نويزها را در حد بسيار مطلوبي رفع نموده و اطلاعات مفيد را تقويت كرده ايم. هم چنين

با اين كارها نقاط با شعاع همسايگي كم كه همان لكه هاي كوچك و نويز هستند محو مي شوند.
*براي پيدا كردن چشم و ابرو نمي توانستيم از رنج رنگي استفاده كنيم، زيرا ما از عكسهايي با

Background تيره استفاده نموده ايم و با پيدا كردن كادر صورت باز هم در چهار گوشة كادر تيرگي داريم و اين تيرگي ها با تيرگي هاي چشم و ابرو رنج تقريباً يكساني دارند، پس ابتدا با استفاد

ه از ضريب همبستگي، كادر حدودي چشم و ابرو را به دست آورده و سپس كادر اصلي را مي يابيم.
*يك مشكلي كه در پيدا كردن فاصلة ابروها مشاهده شد در مورد افرادي بود كه ابروهاي آنها داراي پيوستگي محسوسي بود، زيرا تيرگي ابروها در فاصلة دو ابرو نيز مشهود بود و ما نمي توانستيم كاهش فاصلة ابروها را در حالت اخم detect كنيم. البته اگر از كاهش اشباع ابروها در وسط دو ابرو استفاده مي كرديم تا حدودي اين مشكل رفع مي شد ولي در عوض نمي توانستيم در مورد افراد با ابروهاي كم پشت (كه اشباع كمي دارند) تشخيص دهيم.

در چند مورد خطاهايي در تشخيص حروف مشاهده

مي شود، مثلاً حروف «ز» و «س» گاهي جا به جا تشخيص داده مي شوند. يا حرف «ج» و «ش» در كي دو مورد تشابه ابعاد دارند. هم چنين در حرف «ف» و «و» نيز اين مشكل ديده مي شود كه به دليل تشابه زياد حالت لب در اداي اين حروف است. در مورد حروف صدادار نيز ممك

ن است گاهي تشخيص «اَ» و «اِ» از هم مشكل ساز باشد ولي در مورد حروفي مثل «اُ»، «او»، «اي»، «آ»، «م»، «ب» و … با درصد بسيار بالايي تشخيص مطلوب داريم.
چند مورد پيشنهادي در راستاي ادامة اين پروژه:
۱-استفاده از سيگنالهاي صوتي علاوه بر سيگنالهاي تصويري در تش

يص حروف براي بالا بردن دقت تشخيص در انجام كارهاي مربوط به پروژه هاي رباتيك:
در دسته بندي حروف بسياري از حروف قابل مشاهده نيستند مثلاً در يك دسته بندي از حروف انگليسي، حروف به اين صورت دسته بنيد شده اند:
طرز گفتار دسته بندي حروف هم آهنگ
بدون صدا T,k,p,f,th,s,sh
با بيني تلفظ مي شوند. m,n
با صدا d,g,b,v,dh,z,zh

و يا در دسته بندي نوع ديگر، حروف اين گونه طبقه بندي شده اند:
مكان اجزاي صورت دسته بندي حروف
با دندان Th , dh
با لب و دندان F,v
دهان و آرواره ها Sh,zh,z,s
دو لب P,b,m
كامي – دولبي w
غيرقابل مشاهده T,d,n,j,g,j,r,l
پس از تعدادي از حروف با پردازش سيگنالهاي تصويري به تنهايي قابل تشخيص نيستند و مي توان از سيگنالهاي صوتي براي تشخيص آنها كمك گرفت و پروژه را به صورت Audio-Video انجام داد.
۲-استفاده از شبكة عصبي در پروژه: بدين صورت كه مثلاً شكل كادر لب را بيابد و يا مثلاً شكل چشم و ابرو را. هم چنين مي توان شكل لب و دهان، چشمها و ابروها را در حالات مختلف اداي حروف يا حالات عاطفي متفاوت به سيستم آموزش داد. مثلاً در حالت اداي حرف «ب» حالت لب را و يا مثلاً حالت چشم در هنگام خنده را به سيستم ياد بدهيم تا حرف و حالت مورد نظر را تشخيص دهد. يا نقاط مختلف روي چهره را بر اساس متغيرهاي مختلف دسته بندي كنيم تا اجزاي مختلف چهره مجزا شوند.
۳-مي توان در اين پروژه از چين خوردگيهاي صورت و svan كردن آنها در حالات مختلف استفاده كرد. مثلاً در حالت تعجب، از چين خوردگيهاي روي قسمت پيشاني، در حالت خنده از چين خوردگيهاي اطراف چشم و اطراف دهان و … ولي با توجه به اينكه

ديتاي موجود در اين پروژه از دانشجويان به دست آمده و محدودة سني كمتري وجود دارد، اين چين خوردگيها محسوس نيست و لازم است براي اين كار از افرادي با سنين بالاتري استفاده شود.
۴-كاربر اين نرم افزار مي تواند در انجام پروژه هاي رباتيك و تشخيص حالات يا حروف چهره توسط سيستم هاي رباتيك باشد.

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 نرم افزار مطلب

مقالات و سايتهاي اينترنتي

چكيده:
در اين پروژه، برنامه اي نرم افزاري طرح مي شود كه از روي تصوير تمام رخ و نيم رخ، منحني چهره يعني مرزبندي آن را نسبت به اطراف، به دست مي آو

رد.
داده هاي پروژه شامل تصاوير رايانه اي نيم رخ و تمام رخ حدود ۵۰۰ نفر مي باشد كه با توج

ه به ابعاد استاندارد، صورت را قسمت بندي مي كنيم و اجزاي متفاوت صورت در قسمتهاي مخ پيدا كند.
تقسيم بندي استاندارد از نظر آناتوميك به اين صورت مي باشد كه اگر صورت را به ۳ قسمت ت

سيم كنيم خط اول روي ابرو و خط دوم زير بيني، به اين صورت كه اول پيشاني، قسمت دوم شامل دو چشم و بيني و گونه ها و قسمت سوم لب و چانه را دربرمي گيرد.س مورد نظر را شناسايي مي كند كه اين برنامه با نرم افزار مطلب نوشته شده است.
كه پس از مقايسة هر قسمت در بين مجموعه عكسها، نزديكترين عكس مشابه به عك
در اين نرم افزار با عملياتي مثل resize كردن و تبديل به حالت grayscale، الگوريتم لبه يابي، پيدا كردن همبستگي، قسمت بندي عكس و … فرد، شناسايي مي گردد.

فهرست مطالب

مقدمه
فصل ۱: پردازش تصوير رقمي
-نمايش اساسي پردازش تصوير
-پردازش
-نمونه برداري و چندي كردن:
نمونه برداري و چندي كردن يكنواخت
نمونه برداري و چندي كردن غير يكنواخت
-همبستگي
-بخش بندي تصوير
-آشكارسازي لبه:
-توصيف پايه اي
-پيوند و آشكارسازي مرز

-شكل شناسي
فصل ۲: نمودارهاي بلوكي و نحوة انجام پروژه:
۱-فلوچارت برنامه:
-مقدمه اي از نحوة انجام كار
-خواندن ديتا
-my resize
-پيدا كردن مرزهاي صورت:
downedge-
Leftedge-
-rightedge

 

-upedge
Myparting-
Corralatin-
-function
2-بيومتريك:
-مقدمه
روشهاي بيومتريك
الگوي اندازة صورت
-سنديت بيومتريك در تشخيص چهره
-تكنيكهاي استخراج صورت در بيومتريك
-طرحهاي سيستم بيومتريك
-كاربرد بيومتريك
فصل ۳
نتيجه گيري و جمع بندي كل و پيشنهاد
۴-مراجع و منابع

الگوريتم برنامه:

در ابتدداي كار با دوربين ديجيتال نصاوير رايانه اي حدود ۵۰۰ نفر را جمع آوري كرديم كه هر كدام با كيفيت و رزولوشن بالا و شرايط محيطي مثل نور مناسب و پشت زمينه سياه مي باشند. اين databank حاوي اطلاعات لازم موجود در هر پيكسل عكس مي باشد. سپس عكس مورد نظر را كه مي خواهيم در اين مجموعه شناسايي كنيم وارد مي كنيم.

با دستور resizeنرم افزار مطلب ابتدا سايز عكس را كم كرده كه سرعت برنامه زياد شود و سپس با روش لبه يابي لبه ها و كادر صورت را استخراج مي كنيم و بعد كادر صورت به ۶ قسمت مساوي، تقسيم مي كنيم كه هر قسمت از عكس را با همان قسمت از عكسهاي موجود در ديتا بانك مقايسه مي كنيم و با دستور Corr2 نرم افزار مطلب، ضريب همبستگي آن را به دست مي اوريم و پس از جمع ضرائب همبستگي كل قسمتهاي صورت، نزديكترين عكس موجود به عكس مورد نظر را شناسايي مي كند. بنابراين با داشتن اطلاعات موجود در databank مي توانيم هر فردي را كه بخواهيم در اين مجموعه شناسايي كنيم و يا اگر عكسي كه در اين مجموعه نباشد، به عنوان ورودي دهيم، مشخص مي كند كه اين عكس در اين مجموعه نمي باشد.
اگر فرد در حالات مختلف مثل خنده و ناراحتي و اخم نيز وارد شود، اين نرم افزار قادر به شناسايي فرد مي باشد.
بعد از پيدا كردن كادر صورت، مرحلة بعدي پيدا كردن ويژگيهاي صورت مي باشد كه البته ما از تقسيم بندي صورت به ۶ ناحيه شناسايي را انجام داديم.

مزيت دستور Corr2: كم بودن نرخ خطا
عيب دستور Corr2: پايين بودن سرعت
عمل مقايسه و تشخيص در اين مجموعه با اين دستور، به نتيجه رسيد.
۱-خواندن data:
كه در واقع فرد مورد نظر است، توسط دستور imread خوانده مي شود كه به اين صورت استفاده مي شود.

I=imread (Address \ filename)
2-myresize:
در اين حالت function كه خودمان آن را تعريف كرده ايم، ابتدا عكس توسط دستور imresize در ابعاد مورد نظر مي آيد و كم مي شود تا سرعت كار بالا رود.
(ضريب كوچك كردن سايز و filename) A=Imersize
سپس لازم است عكس را به صورت grayscale درمي آوريم كه اين كار توسط دستور rgb2gray انجام مي گيرد. I=rgb2gray(filename)
سپس لازم است عكس را به صورت grayscale درآوريم كه اين كار توسط دستور rgb2gray انجام مي گيرد.
I=rgb2gray(filename)
3-لبه يابي:
پس از آن از يك سري دستور، براي مكان يابي لبه ها استفاده مي كنيم كه بتوانيم پس از آن با اسكن گردن عكس و پيدا كردن اين لبه ها، كادر صورت را درآوريم.
۴-پيدا كردن مرزهاي صورت
-downedge:
با اين function لبة پائيني عكس را درمي آوريم يعني از پائين عكس را scan كرده و با تغيير range در حالت grayscale، (تبديل Background تيره به روشني صورت) با رسيدن به لبه هاي مشخص شده خط پايين چهره مشخص مي گردد.
مانند downedge عمل مي كنيم با اين تفاوت كه از گوشه چپ بالا، ع

كس را: leftedge از بالا به پائين scan مي كنيم.

مانند leftedge مي باشد ولي از گوشة سمت راست بالا right edge – scan كردن را شروع مي كنيم.
مانند down edge است و از گوشة بالا سمت چپ به صورت epedge – افقي عكس را scan مي كنيم.
حال پس از به دست آوردن چهار لبة چهره، كادر صورت را درمي آوريم و از اين پس با اين قسمت از عكس كار مي كنيم.