CUDA Programming Applications

کاربردهای برنامه نویسی کودا

CUDA Programming Applications

کاربردهای برنامه نویسی کودا

مفهوم Face Detection و Face Recognition

Face Detection

این ویژگی به دوربین کمک می کند تا چهره افراد را در تصویر به صورت خودکار شناسایی و روی آن زوم کند،این قابلیت موجب تنظیم فلاش و میزان نور ورودی است که از تار شدن و درخشندگی بیش از حد چهره افراد هنگام تصویر برداری جلوگیری می کند.





Face Recognition

ویژگی است که در آن عکس فرد مورد نظر را به سیستم می دهیم و با استفاده از الگوریتمی خاص سیستم ، عکس فرد مورد نظر را در فیلم و یا مجموعه ای از تصاویر شناسایی می کند،بطور کلی Face Recognition  را بدین صورت تعریف می نماییم:توانایی شناسایی تصویر توسط ماشین در بین مجموعه ای از عکسهای ذخیره شده و یا گونه ای از الگوی شناسایی تصویر چهره شخص که در پایگاه داده ذخیره شده است برای هنگامی که سعی در ورود به سیستم دارد  


                                                                                                    



پس نتیجه کلی که از این بحث می گیریم این است که برای انجام هرچه بهتر عمل بینایی ماشین در تشخیص چهره ابتدا باید Face Detection را اعمال نماییم تا کیفیت ظاهری تصویر و نورپردازی آن خوب باشد سپس الگوریتم Face Reconition

 

مفهوم LBP

در تئوری الگوی دودویی محلی ابتدا همسایه هشت گانه هر پیکسل از تصویر را مشخص نموده و سپس تفاضل هر یک از آن همسایه ها را تا پیکسل را بدست می آوریم اگر عدد مثبت بود بجای آن یک وگرنه صفر می گذاریم و سپس عدد باینری بدست آمده (نحوه ابتدا و انتهای عدد در شکل 1 آمده  است)را به دهدهی تبدیل نموده و در برداری ذخیره می کنیم. 

عدد باینری بدست آمده 10001111 است که معادل 143 می باشد سپس برای هریک از عکسهای موجود در پوشه این کار را انجام می دهیم و نتایج را در بردارهای مختلف ذخیره می کنیم تصویر LBP در شکل 2 آمده است

در مرحله بعد هیستوگرام1 هر بردار را در برداری که از صفر تا 255 است ذخیره می نماییم.


1)       هیستوگرام:نمودار فراوانی هر رنگ در تصویر



در مرحله بعد فاصله هر یک از این بردارهای هیستوگرام را تا بردار هیستوگرام شکل مورد نظر را محاسبه می نماییم.


فرمول فاصله:
کوچکترین فاصله به معنای شباهت بیشتر با عکس مورد نظر است،که نتیجه کار در شکل 3 قابل مشاهده است.

همانطور که مشاهده می نمایید فاصله برای im1 برابر با 465شد و برای im2 برابر با 317 شد که به معنای تشابه im2 با عکس مورد نظر است.

نحوه تنظیمات کتابخانه opencv در visual studio

برای استفاده از توابع کتابخانه opencv در محیط visual studio پس از دانلود آخرین ورژن opencv از سایت opencv.org (با فیلتر شکن) و نصب آن یک پوشه به همین نام در درایو C ایجاد می شودتوجه داشته باشید پس از نصب بایستی مسیر پوشه bin  را طبق شکل زیر در ویندوز اضافه نمایید.





سپس بعد از ایجاد پروژه جدید سی پلاس پلاس مراحل زیر را به ترتیب انجام می دهیم
1-Include




2-Add liberary






در نهایت به این دو اسم lib. اضافه کرده و دکمه ok  را میزنیم و هم اکنون پروژه آماده استفاده از توابع کتابخانه opencv می باشد

پردازش تصویر در کودا

در این قسمت در نظر دارم نمونه تست پردازش تصویر که در کودا انجام دادم را برای شما عزیزان به اشتراک بگذارم.

در ابتدا با استفاده از توابع کتابخانه opencv تصویر را می خوانیم

سپس در کرنل کودا شمارنده ای از جنس thread تعریف نموده و دستور اصلی برنامه که می خواهیم هر پیکسل تصویر را در0.6 ضرب کند می نویسیم

سپس در قسمت main برنامه تصویر را خوانده و دو آرایه تعریف نموده و تصویر را به آرایه انتقال می دهیم سپس همانند جمع و ضرب آرایه ها که در قسمتهای قبلی گفته شد آن آرایه را به حافظه جی پی یو انتقال می دهیم و سپس تابع هسته اصلی کودا را فراخوانی می کنیم و دوباره آرایه را به حافظه سی پی یو منتقل می نماییم و سپس با دستور Mat Out = Mat(im.rows, im.cols, CV_8UC1, array1);آرایه را به Mat  تبدیل می نماییم تا بتوانیم با دستور imshow کتابخانه opencv نمایش دهیم.



,  و نتیجه کار:


که همانطور که مشاهده نمودید تصویر تیره تر شد.