X
تبلیغات
زولا

CUDA Programming Applications

از فوریه تا گابور

در پردازش سیگنال با تبدیل از حوزه زمان به دیگر حوزه ها قصد داریم تا ویژگی هایی که در حوزه زمان به خوبی نمایان نیستند را آشکار نماییم.

عملگر ضرب:

عملگر ضرب در واقع برای شناسایی میزان شباهت دو تابع می تواند به کار رود و عملگر کواریانس در حقیقت از این ویژگی برای همبستگی (شباهت) دو تابع استفاده می کند.

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


مقدار f بیان کننده یک فرکانس خاص است.

 
ادامه مطلب

تبدیل فوریه

تبدیل فوریه یکی از تبدیلات پرکاربرد در حوزه پردازش تصویر و بینایی ماشین به شمار می رود که برای تجزیه تصویر به مولفه های سینوسی و کسینوسی کاربرد دارد، خروجی این تبدیل تصویری معادل تصویر در حوزه مکان، در حوزه فرکانس نمایش می دهد، بدین ترتیب که در حوزه فوریه هر نقطه نشان دهنده یک فرکانس خاصی از تصویر در حوزه مکان است. از انجایی که ما با تصاویر دیجیتال سروکار داریم با تبدیل فوریه گسسته کار را ادامه می دهیم.(Discrete Fourier transform)

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


مفهوم اولیه تبدیل فوریه:


شماتیک کلی فرآیند فیلتر کردن تصویر در حوزه فرکانس  در شکل زیر آمده است:



تصویر حاصل از فیلتر در حوزه فرکانس از رابطه زیر بدست می آید:

G( x  , y ) = H( u , v ) * F( u , v )

که در رابطه فوق G نتیجه تبدیل فوریه بر روی تصویر ورودی است،H فیلتر اعمال شده برروی تصویر در حوزه فرکانس و F تبدیل فوریه تصویر ورودی است، در نتیجه با محاسبه معکوس G تصویر خروجی بدست می آید.


درحالت کلی فیلترهای مورد استفاده در حوزه فرکانس به دو دسته تقسیم می شوند:

1- فیلترهای پایین گذر

2-فیلترهای بالاگذر

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

دستوری که در opencv برای تبدیل فوریه برروی تصاویر وجود دارد fft می باشدکه نتیجه آن در تصاویر زیر قابل رویت می باشد.



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

فرآیند تشخیص لبه یکی از مهمترین تکنیکهای کارآمد و مفید در پردازش تصویر به ویژه در جداسازی و شناسایی چارچوب اصلی تصویر می باشد، شیوه های متفاوتی در آشکارسازی لبه در یک تصویر وجود دارد که اغلب با مشکلاتی نظیر از میان رفتن داده های تصویر اصلی و عدم توانایی در لبه یابی در زوایای مختلف مواجه هستند. هدف از تشخیص لبه، مکان یابی مرزهای شی در تصویر است که پایه و اساس تجزیه و تحلیل تصویر و بینایی ماشین محسوب می شود، با توجه به اهمیت تشخیص لبه ها، تاکنون الگوریتم های زیادی جهت استخراج لبه ها پیشنهاد شده است، معمولا هر یک از این روش ها تنها بخشی از لبه ها را آشکار ساخته و به این ترتیب برخی از لبه  های واقعی توسط الگوریتم تشخیص داده نمی شوند. همچنین این امکان نیز وجود دارد که برخی نقاط به اشتباه به عنوان لبه دسته بندی شوند.
تعریف لبه:
نقاطی از تصویر که دارای تغییر شدت روشنایی ناگهانی هستند لبه نام دارند، نقاط لبه معمولا مرزها را شامل می شوند.
روشهای لبه یابی:
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 که با فیلتر شکن قابل دانلود است.


1 2 3 4 >>