پروژه تشخیص چهره با متلب

پروژه تشخیص چهره با متلب

تشخیص و ردیابی اشیاء در بسیاری از برنامه های بینایی کامپیوتر، مانند تشخیص حرکت، ایمنی خودرو و نظارت از اهمیت بالایی برخوردار است. در این مطلب تشخیص چهره با استفاده از سیستم نرم افزار MATLAB ارائه شده است و این برنامه علاوه بر صورت انسان قابلیت تشخیص چشم و بالا تنه یک فرد را نیز دارد.
تشخیص چهره یک کار آسان و ساده برای انسان است، اما برای کامپیوتر خیلی ساده نیست. تشخیص چهره به دلیل تغییرات بزرگ درون گروهی ناشی از تغییرات پیدایش صورت، روشنایی و جلوه، پیچیده ترین و چالش برانگیزترین مشکل در زمینه بینایی کامپیوتری، تلقی شده است. چنین تغییراتی منجر به توزیع صورت می شود تا در هر فضایی که خطی به فضای تصویر اصلی باشد، بسیار غیر خطی و پیچیده شود.
تشخیص چهره به عنوان فرایند شناسایی یک یا چند چهره انسان در تصاویر یا ویدئوها تعریف می شود و نقش مهمی در بسیاری از سیستم های بیومتریک، امنیتی و نظارتی و همچنین سیستم های فهرست بندی تصویر و ویدئو ایفا می کند و در این خصوص پروژه متلب زیادی تعریف و انجام می شود.
این برنامه تشخیص چهره با استفاده از نرم افزار متلب و با فشار دادن دکمه های مربوطه، می تواند برای تشخیص صورت، چشم و بالا تنه انسان مورد استفاده قرار گیرد. صفحه خروجی برنامه در تصویر 1 نشان داده شده است.

صفحه خروجی برنامه
شکل 1. صفحه خروجی برنامه

برنامه نرم افزاری

این برنامه تشخیص چهره در زمان واقعی، با استفاده از نسخه R2012a نرم افزار متلب توسعه یافته است. در این برنامه، یک رابط کاربر گرافیکی (GUI)، به کاربران اجازه می دهد تا وظایف را به صورت تعاملی از طریق کنترل هایی مانند سوئیچ ها و لغزنده ها انجام دهند. شما به راحتی می توانید یک GUI ایجاد کنید و آن را در MATLAB یا به عنوان یک برنامه مستقل اجرا کنید. خروجی برنامه اولیه این پروژه در شکل ۱ نشان داده شده است.

الگوریتم ویولا-جونز

انواع مختلفی از الگوریتم ها در برنامه های تشخیص چهره مورد استفاده قرار می گیرند. در اینجا از الگوریتم ویولا-جونز برای تشخیص چهره با استفاده از نرم افزار MATLAB استفاده شده است. این الگوریتم در چهار مرحله زیر کار می کند:

  1. یک شی آشکارساز با استفاده از الگوریتم ویولا-جونز ایجاد می کند.
  2. تصویر را از ویدئو می گیرد.
  3. ویژگی ها را شناسایی می کند.
  4. ویژگی های شناسایی شده را می نویسد.

توابع MATLAB

برنامه ی (testing.m ) توابع زیادی دارد. توابع را ویرایش نکنید چرا که آن ها توابع پیوند دهنده و کدهای غیر اجرایی هستند. ابتدا باید فرمت پشتیبانی شده توسط دوربین و شناسه دستگاه آن را، با استفاده از فرمانی که در زیر (همچنین در شکل 2) نشان داده شده است را، پیدا کنید:

چک کردن شناسه دستگاه
شکل2. چک کردن شناسه دستگاه

imaqhwinfo('winvideo')

پس از پیدا کردن شناسه دستگاه، می توانید شماره شناسه دستگاه را در کد منبع خود تغییر دهید.
شناسه دستگاه در اینجا 1 است، بنابراین در این کد همانطور که در زیر نشان داده شده است، 1 نوشته شده است:

vid = videoinput(‘winvideo’,1,’YUY2_
640×480’);

فرمت های دیگری هم در نرم افزار متلب داریم. شما می توانید با استفاده از دستورات زیر بررسی کنید که دوربین شما از کدام فرمت پشتیبانی می کند (همچنین در شکل 3 نیز، نشان داده شده است):

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

پیشنهاد میکنم مقاله "معرفی بهترین کتاب های آموزش متلب" مطالعه کنید.

info.DeviceInfo (1)
info.DeviceInfo.SupportedFormats

در شکل 3، شما می توانید ببینید که فرمت 'YUY2_160x120' به طور پیش فرض یکی از فرمت های پشتیبانی شده توسط دوربین است. اما، ( به وضوح ) همانطور که در آخرین خط از این تصویر نشان داده شده است، فرمت های دیگری نیز وجود دارند که، دوربین شما می تواند از آنها پشتیبانی کند. اگر شما یک فرمت و شماره دستگاه متفاوت را انتخاب کنید، شما باید بر اساس آن، تغییراتی در کد منبع خود ایجاد کنید. برای تشخیص یک چهره یا یک ویژگی خاص در چهره افراد، از مراحل زیر در برنامه MATLAB (testing.m ) استفاده کنید:
1. تعریف و راه اندازی پشت سر هم آشکارساز اشیاء خود، با استفاده از سازنده زیر:

detector=vision. CascadeObjectDetector

سیستم یک آشکارساز اشیاء ایجاد می کند که اشیاء را با استفاده از الگوریتم ویولا-جونز تشخیص می دهد. آشکار ساز، ویژگی های مدل کنترل نوع شی، برای شناسایی را، طبقه بندی می کند. به طور پیش فرض، آشکارساز برای تشخیص چهره ها پیکربندی می شود.

تشخیص چهره
شکل ۴. تشخیص چهره

پیشنهاد میکنم مقاله "20 ایده برتر برای پروژه متلب" مطالعه کنید.

تشخیص چشم
شکل ۵. تشخیص چشم
تشخیص بالاتنه
شکل ۶. تشخیص بالاتنه

2. فراخوانی با مرحله روش به وسیله تصویر ورودی I, آشکارساز پشت سر هم اشیاء, نقاط PTS و هر ویژگی اختیاری دیگر.
دستوری برای استفاده از روش مرحله، استفاده از دستور مرحله با تصویر ورودی I, انتخاب آشکارساز پشت سر هم اشیاء و دیگر ویژگی های اختیاری برای انجام تشخیص، در زیر آورده شده است.

BBOX = step (detector, I)

این دستور BBOX، یک ماتریس M-by-4 که جعبه های اتصالM را تعریف می کند و حاوی اشیاء تشخیص داده شده است، را برمی گرداند. این روش چند درجه تشخیص شیء را بر روی تصویر ورودی I انجام می دهد. هر ردیف از ماتریس خروجی BBOX شامل یک بردار چهار عنصری (x، y، عرض و ارتفاع) است که در پیکسل ها، گوشه سمت چپ بالا و اندازه یک جعبه اتصال مشخص می شوند. تصویر ورودی I باید تصویری دارای مقیاس خاکستری و یا واقعا رنگی (RGB) باشد.
۳- گام سوم این است:

insertObjectAnnotation(I,’rectangle’,
Position,Label)

این دستور مستطیل ها و برچسب های مربوطه را در محل نشان داده شده توسط ماتریس موقعیت درج می کند. ورودی موقعیت، باید یک ماتریس M-by-4 باشد، جایی که هر ردیف (M) یک مستطیل را به عنوان یک بردار چهار عنصری (x، y، عرض و ارتفاع) مشخص می کند. عناصر x و y نشان دهنده گوشه بالا سمت چپ مستطیل، و عرض و ارتفاع اندازه مستطیل را مشخص می کنند.

تشخیص چهره با استفاده از تست سیستم MATLAB

برای تست این برنامه مراحل زیر را دنبال کنید:

  1. نسخه MATLAB R2012a یا نسخه بالاتر را در سیستم خود نصب کنید. آن را از میانبر دسکتاپ راه اندازی کنید. شما یک پنجره فرمان خالی را خواهید دید.
  2. پوشه منبع را دانلود کنید.
  3. شناسه دستگاه را همان طور که در شکل 2 نشان داده شده است بررسی کنید و شماره شناسه دستگاه را در کد منبع بنویسید.
  4. برنامه را اجرا کنید. همانطور که در شکل1 نشان داده شده است، یک GUI برای شما ظاهر خواهد شد.
  5. با کلیک بر روی دکمه شروع، به تنظیمات اولیه دوربین بروید.
  6. بعد، روی دکمه Face کلیک کنید و دوربین صورت شما را تشخیص خواهد داد. صورت شما در سمت راست صفحه شناسایی و نمایش داده خواهد شد (شکل 4). به همین ترتیب، شما می توانید چشم و بالاتنه خود را با کلیک کردن بر روی دکمه های مربوطه، تشخیص دهید. تصاویر خروجی برای چشم های تشخیص داده شده و بالاتنه به ترتیب در شکل 5 و شکل 6 نشان داده شده است. به خاطر داشته باشید که ابتدا بر روی دکمه Stop کلیک کنید، تا فرآیند قبلی متوقف شود و دو ویژگی دیگر شناسایی شوند.
  7. برای توقف، روی دکمه توقف کلیک کنید.

برای دانلود منبع کد برای تشخیص چهره با استفاده از نرم افزار MATLAB، اینجا کلیک کنید.

فائزه حق شناس
فائزه حق شناس
من یک مهندس مکانیک هستم. از وقتی یادم میاد عاشق نوشتن بودم و در حال حاضر با تمام وجود مشغول تولید محتوا هستم.

پروژه ای برای انجام داری؟

تخصص انجام پروژه داری؟

دیدگاه خود را بیان کنید

1000 کاراکتر باقیمانده است