CUDA Programming Applications

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

CUDA Programming Applications

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

روشهای کلاسیک لبه یابی

فرآیند تشخیص لبه یکی از مهمترین تکنیکهای کارآمد و مفید در پردازش تصویر به ویژه در جداسازی و شناسایی چارچوب اصلی تصویر می باشد، شیوه های متفاوتی در آشکارسازی لبه در یک تصویر وجود دارد که اغلب با مشکلاتی نظیر از میان رفتن داده های تصویر اصلی و عدم توانایی در لبه یابی در زوایای مختلف مواجه هستند. هدف از تشخیص لبه، مکان یابی مرزهای شی در تصویر است که پایه و اساس تجزیه و تحلیل تصویر و بینایی ماشین محسوب می شود، با توجه به اهمیت تشخیص لبه ها، تاکنون الگوریتم های زیادی جهت استخراج لبه ها پیشنهاد شده است، معمولا هر یک از این روش ها تنها بخشی از لبه ها را آشکار ساخته و به این ترتیب برخی از لبه  های واقعی توسط الگوریتم تشخیص داده نمی شوند. همچنین این امکان نیز وجود دارد که برخی نقاط به اشتباه به عنوان لبه دسته بندی شوند.
تعریف لبه:
نقاطی از تصویر که دارای تغییر شدت روشنایی ناگهانی هستند لبه نام دارند، نقاط لبه معمولا مرزها را شامل می شوند.
روشهای لبه یابی:
1- Sobel:
با کانوالو کردن دو ماتریس Gx و Gy که در زیر آمده است در تصویر اصلی لبه های عمودی و افقی تصویر آشکار می گردد سپس با استفاده از رابطه اندازه تمامی لبه ها نمایان می شود.

رابطه اندازه
که نتیجه در شکل زیر قابل مشاهده است.


2-Prewitt:

با کانوالو کردن دو ماتریس GxوGy در تصویر اصلی لبه های عمودی و افقی آشکار شده ،سپس با استفاده از رابطه اندازه که قبلا به ان اشاره نمودیم تمامی لبه ها قابل نمایش است

که نتیجه در شکل زیر قابل نمایش است.
3-Laplacian:
 با کانوالو ماسک زیر در تصویر تمامی لبه های افقی و عمودی نمایان می شود.
که نتیجه در شکل زیر قابل مشاهده است.


4-Roberts:
با کانوالو کردن دو ماتریس GxوGy در تصویر اصلی لبه های عمودی و افقی آشکارمی شوند.

که نتیجه در شکل زیر قابل مشاهده است

تاریخچه opencv

opencv مخفف عبارت open source computer vision یک کتابخانه از توابع برنامه نویسی با هدف بینایی ماشین بلادرنگ توسط شرکت اینتل در سال 1999 برای ردیابی اشعه و نمایش سه بعدی دیوار ابداع و ارئه گردید.سپس توسط آزمایشگاه تحقیقاتی Willow garage  پشتیبانی شد. محیط کدنویسی  opencv پلتفرم ++C می باشد و همچنان جامعیت خود را باتوجه به این که توسط زبان C که قدیمی تر است توسعه داده شده است حفظ نموده است و همچنین چارچوبهای یادگیری عمیق را پشتیبانی می نماید، این کتابخانه علاوه بر پلتفرم ++C در پلتفرمهای پایتون، جاوا، متلب و اکتاو و ... قابل دسترس است. تسریع سخت افزاری این کتابخانه برپایه پردازنده گرافیکی است که توسط پلتفرمهای CUDA که مختص شرکت NVIDIA در سال 2010 ارائه شد و OPENCL که در سال 2012 توسط شرکت Apple توسعه داده شد قابل دسترس است.opencv توسط سیستم عاملهای Windows,Mac,Linux,FreeBSD,NetBSD,openBSD پشتیبانی می شود. در فایلی که توسط آقای باقری اصل ارائه گردیده جزییات بهتری قابل مشاهده می باشد.

لینک دانلود مستقیم از سایت opencv.org که با فیلتر شکن قابل دانلود است.


تاریخچه ایده Histogram Oriented Gradient(HOG)

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

HOG توسط Robert K. McConnell  در سال 1986 میلادی معرفی و در سال 1994 توسط Mitsubishi Electric Research Laboratories مورد استفاده قرار گرفت. بهرحال استفاده از این روش درسال 2005 گسترده تر شد، محققان موسسه IRINA کار تکمیلی خود را در این زمینه در کنفرانس بینایی ماشین و الگوی تشخیص CVPR نشان دادند ، در این کار آنها بر روی تصویر عابر پیاده در تصاویر ثابت تمرکز کردند اگرچه آنها از آن به بعد کارشان را بر روی تصاویر ویدیویی متحرک و همچنین برای حیوانات و وسایل نقلیه در تصاویر ثابت نیز بسط دادند.

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

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

فیلتر گابور

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

ورودی و خروجی فیلتر