تصویر چیست؟
قبل از آن که بخواهیم در مورد پردازش تصویر صحبت کنیم، باید بدانیم که تصویر چیست؟ تصویر یک رکورد از طیف خاصی از سیگنالهای الکترومغاطیسی است که توسط یک سنسور در یک بازه زمانی ذخیره میشود. این طیف میتواند از هرگونه طول موج باشد؛ برای مثال طول موج نور مرئی که دوربینهای عادی ضبط میکنند، طول موج ایکس که در تصویر برداری با اشعه ایکس ضبط میشود و بسیاری از موارد دیگر. سنسور ها به صورت دیجیتال با نرخ نمونه برداریهای متفاوت دادهها را ذخیرهسازی میکنند که هر کدام ازین نمونه برداری ها میتوانند تشکیل یک پیکسل بدهد. تصویر دیجیتال(رقومی) از تعداد بسیار زیادی از مربعهای کوچک، مشهور به پیکسل (pixel) تشکیل شدهاست. هر پیکسل دارای یک مقدار دیجیتال است که بیانگر مقدار روشنایی آن پیکسل است. به این نوع تصاویر، تصاویر رَستِری (Raster Image) هم میگویند. هر تصویر رستری از تعدادی سطر و تعدادی ستون تشکیل شدهاست.
پردازش تصویر چیست؟
همانطور که گفته شد تصویر در واقع یک رکورد از سیگنالهای الکترومغناطیسی است و پردازش تصویر نوع خاصی از پردازش سیگنال است. پردازش تصویر به صورت خلاصه یعنی انجام فرایندهایی روی تصویر (چه عکس چه ویدئو)، برای دریافت خروجی مشخص و معینی از تصویر . این فرایندها میتوانند برای افزایش دقت تصویر باشند (Image enhancement) یا میتوانند برای جداکردن یک بخش مشخص از تصویر (Image segmentation) باشند و… . برنامههایی مانند اینستاگرام، کماسکنر و… از الگوریتمهای مربوط به پردازش تصویر استفاده میکنند. در ادامه گامهای یادگیری فناوری ذکر شده است.
پردازش تصویر به طور عمده به دو بخش تقسیم می شود:
۱- بهبود تصاویر
هدف از بهبود کیفیت تصـویر، تبـدیل تصـویر مـی باشـد؛ بـه طوری که برای یک کاربرد خاص، تصویر حاصل بهتـر از تصـویر اولیه گردد
۲- بینایی ماشین
منظور این است که کامپیوتر ها به کمک دوربین محیط اطراف را ببینند درک کنند و تصمیمگیری کنند.
۲۰ واسط کاربری مهم در یادگیری ماشین و یادگیری عمیق که باید بدانید!
کاربرد های پردازش تصویر
کنترل ترافیک
سنجش سرعت خودروهای در حال حرکت، خواندن پلاک اتومبیلهای در حال حرکت از این دسته هستند.
هواشناسی
پیشبینی آب و هوا یا پیشبینی سرعت طوفانها با دقت بسیار بالا که سایت ایرانی سمیتیو نمونه خوبی برای این مورد است.
صنعت
پردازش تصویر امروزه در صنعت در بخش هایی مثل کنترل کیفیت، کنترل فرایند تولید و دیگر بخش ها نقش مهمی را ایفا میکند. امروزه کمتر کارخانهای را میتوان یافت که از این دانش و فناوری بی بهره باشد؛ مثلا در کارخانجات تولید کیک با استفاده از این فناوری کیکهای پخته از کیکهایی که نیاز به پخت بیشتر دارند تشخیص داده میشوند، یا در محیطهایی که مشاهده و اندازه گیری محصول بدون چشم مسلح امکان پذیر نیست می توان از این فناوری استفاده کرد.
کشاورزی
در مواردی همچون پردازش تصویرهای ماهوارهای برای بررسی وضعیت زمینهای کشاورزی میتوان کارهای بسیار کمک کنندهای در جهت افزایش بهرهوری کرد. در این زمینه شرکتهای ایرانی مثل کشتیار، ستپلت نمونههای خوبی برای بررسی هستند. به علاوه با مطرح شدن کشاورزی هوشمند و استفاده از پهپادها برای انجام وظایف کنترل کیفیتی و کارهای مربوط به کشاورزی پردازش تصویر نقش مهمی در این زمینه ایفا میکند؛ به طور مثال بررسی وضعیت سلامت زمینهای کشاورزی به کمک پهپادها .
شهرسازی
با مقایسه عکسهای مختلف از سالهای مختلف از یک شهر میزان تغییرات و پیشرفت آن را میتوان مشاهده کرد. این کار کمک بسیار زیادی به کنترل ساخت و سازها، تهیه بانک اطلاعاتی بهروزشده از مناطق مختلف و دیگر زمینهها میکند.
علوم نظامی و امنیتی
موشکهای نظامی، سیستمهای دفاعی، سیستمهای کنترل امنیت از کاربردهای این فناوری در زمینه نظامی هستند.
بینایی کامپیوتری(computer vision)
برای استفاده از الگوریتمهای پردازشی باید تصاویر گرفته شده از طریق دوربین به یک پردازنده مانند کامپیوتر منتقل شود و از نرم افزارهای مربوط به پردازش تصویر استفاده کنید. در این صورت وقتی شما پروژهای را توسط این روش انجام دادید، در حقیقت از سیستم بینایی کامپیوتری (computer vision) استفاده کردهاید.
بینایی ماشین(Machine vision)
برخلاف بینایی کامپیوتر که عمدتاً تمرکزشان روی پردازش تصویر است، بینایی ماشین، سامانههای ضبط تصویر را با استفاده از دستگاههای ورودی-خروجی دیجیتال و شبکههای کامپیوتری یکی میکند؛ که باعث کنترل کیفی در لحظه و کنترل تجهیزاتی مانند ربات های خط تولید میشود. بینایی ماشین کمک کننده علومی همچون کامپیوتر، اپتیک، مهندسی مکانیک و خودکارسازی صنعتی است.
از شبکههای عصبی Convolutional چه میدانید؟(به همراه کدنویسی)
انواع پردازش تصویر
مرز مشخصی بین پردازش تصویر و بینایی ماشین نمیتوان تعیین کرد؛ با این حال پردازش تصویر را میتوان به سه دسته کلی تقسیم نمود:
۱- پردازش سطح پایین
شامل پردازش های ابتدایی همچون حذف نویز،فیلتر کردن تصویر، کنتراست و غیره.
۲- پردازش سطح میانی
ویزگی این سطح پردازش این است که ورودی آن معمولا تصویر و خروجی آن صفاتی از اشیا تصویر مانند لبهها کانتورها و تشخیص اشیا است.
۳- پردازش سطح بالا
این پردازش شامل فهمیدن رابطه بین اشیا تشخیص داده شده استنباط و تفسیر صحنه وتشخیصهایی که سیستم بینایی انسان میشود .
برنامه نویسی در حوزه ی پردازش تصویر
دو راه برای برنامه نویسی در حوزه Image Processing در پیش دارید: اول استفاده از پایتون و کتابخانهی اوپن سیوی و دوم استفاده از نرم افزار متلب. پایتون زبان برنامه نویسی OPEN SOURCE (یعنی رایگان) بوده و به همین علت منبع یادگیری پایتون به شدت فراوان است. متلب گزینهی مناسبی برای گروههای تحقیقاتی و پروژههای دانشگاهی است و شما میتوانید از کد متلب خروجی سی یا سیپلاسپلاس بگیرید! بهترین ویژگی متلب، مستندات (Documentation )کامل آن است(در اکثر موارد، هر کد با مثال عملی همراه است). شما به کمک پایتون میتوانید نمونههای اولیه را با سرعت نسبتاً بالایی توسعه بدهید. ولی به علت سرعت اجرای نسبتاً پایین (برای کاربردهای زمانبر) نمیتوان کارهای پیچیده را با آن به اجرا درآورد ! دلایل برتری استفاده از نرم افزار متلب به جای نرم افزار های دیگر در پردازش تصویر عبارت اند از:
در متلب از منابع درجه یک برای آموزش پردازش تصویر استفاده کردهاند.
زبان متلب و پایتون بسیار به هم شباهت دارند، اگر پایتون بلدید، یادگرفتن متلب برای شما کاری ندارد. حتی بین کدهای پردازش تصویر متلب و OpenCV هم شباهت وجود دارد. سرعت اجرای برنامهها در متلب بیشتر از پایتون است. مستندات متلب بسیار کاملتر از پایتون و کتابخانهی OpenCV است.
گام های یادگیری پردازش تصویر
پیشنیازها
Image Processing زیرمجموعهای از پردازش سیگنال (Signal Processing) است و این بدان معناست که شما با سیگنالها سر و کار دارید و این به معنای پیشنیاز ریاضی قوی است. مهمترین مطلبی که شما از ریاضی برای این حوزه نیاز دارید، بحث سری و تبدیل فوریه است (که دانشجویان مهندسی در درس ریاضیات مهندسی با آن آشنا میشوند) و اگر این مطالب را بلد نباشید با انتگرالهای وحشتناک و عجیب و غریبی مواجه خواهید شد! پس از آن شما به مهارت قابل قبولی در جبر خطی (عمدتاً ماتریسها) در حد دبیرستان نیاز دارید. اگر اینها را بلد باشید، تقریباً آمادگی لازم برای شروع یادگیری پردازش تصویر را دارید!
برای فهمیدن تئوری پردازش تصویر به ریاضی نیاز دارید. اصولاً برنامه نویسی برای پردازش تصویر و هوش مصنوعی سخت نیست، بلکه فهمیدن تئوری آن است که وقت و انرژی فراوانی را از شما میگیرد.
مفاهیم پردازش تصویر
همانطور که پیش از این نیز اشاره کردم، شما باید مفاهیم پردازش تصویر را عمیقاً یادبگیرید تا بتوانید از آن در پروژههایتان استفاده کنید. معروفترین و بهترین منبع برای شروع یادگیری پردازش تصویر، کتاب «پردازش تصویر دیجیتالی» نوشتهی رافائل گونزالز و ریچارد وودز است که در ایران به نام رافائل گونزالز شناخته میشود. کتاب وایلی هم به زبان ساده توضیح میدهد ولی به اندازهی رافائل گونزالز جامع و کامل نیست و شما مجبورید در کنار آن از منابع دیگر هم استفاده کنید.