یادگیری عمیق یا Deep Learning در چند سال اخیر تأثیر شگرفی بر زمینه های مختلف فناوری داشته است. بینایی کامپیوتر (Computer Vision)، یکی از داغترین موضوعات در این صنعت پرطرفدار است. بینایی کامپیوتر عبارت است از توانایی رایانهها برای درک تصاویر و ویدیوها بدون دخالت انسان. ماشینهای خود ران و تشخیص چهره، همگی بر بینایی کامپیوتر متکی هستند. هسته اصلی بینایی کامپیوتر را پردازش تصویر تشکیل می دهد؛ به همین دلیل درس پردازش تصویر جایگاه ویژهای در بین دروس مهندسی دارد.
تعریف تصویر ؟
قبل از اینکه به مبحث پردازش تصویر بپردازیم، ابتدا باید بفهمیم که دقیقاً چه چیزی یک تصویر را تشکیل میدهد. یک تصویر با ابعاد آن (ارتفاع و عرض) و بر اساس تعداد پیکسلها نشان داده میشود. به عنوان مثال، اگر ابعاد یک تصویر ۵۰۰ در ۴۰۰ (عرض x ارتفاع) باشد، تعداد کل پیکسلهای تصویر ۲۰۰۰۰۰ است. اگر بخواهیم دقیق تر بگوییم یک تصویر را می توان به عنوان یک تابع دو بعدی F(x,y) نشان داد که در آن x و y مختصات فضایی هستند. دامنه F در یک مقدار خاص x,y به عنوان شدت تصویر در آن نقطه شناخته میشود. اگر x، y و مقدار دامنه محدود باشد، آن را تصویر دیجیتال مینامیم.
پیکسلها عناصر یک تصویر هستند که اطلاعاتی در مورد شدت و رنگ را همراه خود دارند. یک تصویر همچنین میتواند به صورت سه بعدی نمایش داده شود که در آن x، y و z به مختصات فضایی تبدیل میشوند. پیکسلها در این حالت در قالب یک ماتریس مرتب شدهاند که به عنوان یک تصویر RGB شناخته میشود.
به زبان ساده، پیکسل نقطهای از تصویر است که سایه، تیرگی یا رنگ خاصی به خود میگیرد و معمولاً در یکی از موارد زیر نشان داده میشود:
- مقیاس خاکستری: پیکسل یک عدد صحیح با مقدار بین ۰ تا ۲۵۵ است (۰ کاملا سیاه و ۲۵۵ کاملا سفید است).
- RGB: یک پیکسل از ۳ عدد صحیح بین ۰ تا ۲۵۵ ساخته شده است (اعداد صحیح نشان دهنده شدت رنگ قرمز، سبز و آبی هستند).
- RGBA: پسوند A به RGB اضافه شده است که نشان دهنده کدورت تصویر است.
پردازش تصویر چیست؟
تصاویر، جهان را نشان می دهند. هر تصویر داستان خاص خود را دارد و می تواند حاوی اطلاعات بسیار مهمی باشد که از بسیاری جهات مفید است. این اطلاعات را می توان با کمک تکنیکی به نام پردازش تصویر به دست آورد. پردازش تصویر یا Image Processing در واقع فرآیند تبدیل یک تصویر به شکل دیجیتال و انجام کارهای خاصی برای به دست آوردن اطلاعات مفید از آن است.
برای پردازش تصویر به رشته عملیاتی که در هر پیکسل از یک تصویر انجام میشود، نیاز است. پردازشگر تصویر اولین عملیات را بر روی تصویر به صورت پیکسل به پیکسل انجام می دهد. وقتی این کار به طور کامل انجام شد، شروع به انجام عملیات دوم و غیره می کند. سیستم پردازش تصویر معمولاً همه تصاویر را به عنوان سیگنالهای دوبعدی در نظر میگیرد.
پردازش تصویر بخش اصلی بینایی کامپیوتر است که در بسیاری از زمینه ها مانند روباتیک، ماشینهای خود ران و تشخیص اشیا نقش مهمی دارد. پردازش تصویر به ما امکان می دهد هزاران تصویر را در یک زمان تغییر دهیم و دستکاری کنیم و اطلاعاتی را از آنها استخراج کنیم. پایتون یکی از زبان های برنامه نویسی پرکاربرد برای پردازش تصویر است. کتابخانه ها و ابزارهای شگفت انگیز آن مانند Open CV، Scikit-Image، Scipy، Pillow، Matplotlib، SimpleITK، Numpy، Mohatas در پردازش تصویر بسیار حائز اهمیت و محبوب هستند.
اهداف اصلی ان:
- تجسم (Visualization): یافتن اشیایی که در تصویر قابل مشاهده نیستند
- تشخیص (Recognition): تشخیص یا شناسایی اشیاء در تصویر
- شفافیت و بازیابی (Sharpening and restoration): یک تصویر با کیفیت از تصویر اصلی ارائه می دهد
- تشخیص الگو (Pattern recognition): الگوهای مختلف در تصویر را شناسایی و اندازه گیری می کند.
- بازیابی (Retrieval): مرور و جستجوی تصاویر از پایگاه داده بزرگی از تصاویر دیجیتالی که مشابه تصویر اصلی هستند
مراحل اساسی پردازش تصویر
مراحلی که برای پردازش تصویر طی میشوند به شرح زیرند:
ابتدا دریافت تصویر (Image Acquisition)
دریافت تصویر اولین گام در پردازش تصویر است. این مرحله به عنوان پیش پردازش در درس پردازش تصویر نیز شناخته می شود. این گام شامل بازیابی تصویر از یک منبع، (معمولا یک منبع سخت افزاری) است.
افزایش کیفیت عکس (Image Enhancement)
بهبود تصویر، فرآیند بهبود و برجسته کردن برخی از ویژگی های مورد علاقه در تصویری است که بی کیفیت و مبهم است. این مرحله شامل تغییر روشنایی، کنتراست و غیره است.
بازیابی تصویر (Image Restoration)
بازیابی تصویر فرآیند بهبود ظاهر یک تصویر است. با این حال، بر خلاف افزایش کیفیت عکس، بازیابی تصویر با استفاده از مدلهای ریاضی یا احتمالی خاصی انجام میشود.
پردازش تصویر رنگی (Color Image Processing)
پردازش تصویر رنگی شامل تعدادی از تکنیک های مدل سازی رنگ در یک حوزه دیجیتال است. این مرحله به دلیل استفاده قابل توجه از تصاویر دیجیتال در اینترنت، اهمیت پیدا کرده است.
موجک ها و پردازش چند وضوحی (Wavelets and Multiresolution Processing)
از موجک ها برای نمایش تصاویر در درجات مختلف وضوح استفاده می شود. تصاویر به موجک ها یا مناطق کوچکتر برای فشرده سازی داده ها و نمایش هرمی تقسیم می شوند.
فشرده سازی (Compression)
فشرده سازی فرآیندی است که برای کاهش فضای ذخیره سازی مورد نیاز برای ذخیره یک تصویر یا پهنای باند مورد نیاز برای انتقال آن استفاده می شود. این کار به ویژه زمانی انجام می شود که تصویر برای استفاده در اینترنت باشد.
پردازش مورفولوژیکی (Morphological Processing)
پردازش مورفولوژیکی یا ریخت شناسی مجموعه ای از عملیات پردازش برای دگرگونی و تبدیل تدریجی یک تصویر به تصویر دیگر بر اساس شکل آن است.
تقسیم بندی (Segmentation)
تقسیم بندی یا بخش بندی یکی از دشوارترین مراحل پردازش تصویر است. این بخش شامل تقسیم یک تصویر به اجزا یا اشیاء تشکیل دهنده آن است.
نمایش و توصیف (Representation and Description)
بسیار مهم است که تصاویر ما به گونه ای نمایش و تشریح داده شوند که فرآیند شناسایی و تشخیص موفق اشیا را تسهیل کنند. پس از اینکه یک تصویر در مرحله تقسیم بندی به مناطق تقسیم شد، هر منطقه به شکلی مناسب برای پردازش کامپیوتری بیشتر آماده می شود. نمایش با ویژگی های تصویر و ویژگی های منطقه ای سروکار دارد و توصیف به استخراج اطلاعات کمّی می پردازد که به تمایز یک کلاس از اشیا از دسته دیگر کمک می کند.
تقسیم بندی (Segmentation)
تقسیم بندی یا بخش بندی یکی از دشوارترین مراحل پردازش تصویر است. این بخش شامل تقسیم یک تصویر به اجزا یا اشیاء تشکیل دهنده آن است.
نمایش و توصیف (Representation and Description)
بسیار مهم است که تصاویر ما به گونه ای نمایش و تشریح داده شوند که فرآیند شناسایی و تشخیص موفق اشیا را تسهیل کنند. پس از اینکه یک تصویر در مرحله تقسیم بندی به مناطق تقسیم شد، هر منطقه به شکلی مناسب برای پردازش کامپیوتری بیشتر آماده می شود. نمایش با ویژگی های تصویر و ویژگی های منطقه ای سروکار دارد و توصیف به استخراج اطلاعات کمّی می پردازد که به تمایز یک کلاس از اشیا از دسته دیگر کمک می کند
شناسایی (Recognition)
این مرحله بر اساس توصیف یک شی، برچسبی را به آن اختصاص می دهد.
کاربردهای پردازش تصویر
درس پردازش تصویر کاربردهای مفید و متعددی دارد که برخی از مهمترین آنها به شرح زیرند:
بازیابی تصویر پزشکی
پردازش تصویر به طور گسترده ای در تحقیقات پزشکی مورد استفاده قرار گرفته است و مراحل درمان را بسیار کارآمدتر و دقیق تر کرده است. به عنوان مثال، می توان از آن برای تشخیص زودهنگام سرطان سینه با استفاده از یک الگوریتم پیچیده تشخیص گره در اسکن پستان استفاده کرد. از آنجایی که استفاده پزشکی مستلزم پردازشگرهای تصویر بسیار حرفه ای است، این برنامهها قبل از استفاده نیاز به پیادهسازی و ارزیابی قابل توجهی دارند.
یکی از بهترین ابزارهای برای انجام فرآیند پردازش تصویر، نرم افزار متلب است. برای یادگیری نحوه کار با متلب برای پردازش تصویر، به لینک زیر که شامل فیلمهای آموزشی جامعی در این خصوص است، مراجعه کنید:
سنجش ترافیک
در سنسورهای ترافیک، از سیستم پردازش تصویر ویدیویی یا VIPS(video image processing system) استفاده می شود. این سیستم شامل یک سیستم تصویربرداری، یک سیستم مخابراتی و یک سیستم پردازش تصویر است. هنگام ضبط ویدیو، یک VIPS دارای چندین منطقه تشخیص است که هر زمان که وسیله نقلیه وارد منطقه می شود سیگنال «روشن» و سپس هر زمان که وسیله نقلیه از منطقه تشخیص خارج می شود، سیگنال «خاموش» می دهد.
این مناطق تشخیص را می توان برای خطوط متعدد تنظیم کرد و می توان از آنها برای تشخیص ترافیک در یک مکان خاص استفاده کرد. علاوه بر این، می تواند به طور خودکار پلاک خودرو را ضبط کند، نوع وسیله نقلیه را تشخیص دهد، سرعت راننده را در بزرگراه کنترل کند و موارد دیگر.
بازسازی تصویر
از پردازش تصویر می توان برای بازیابی و پر کردن قسمت های گم شده یا خراب یک تصویر استفاده کرد. سیستم های پردازش تصویر به طور گسترده با مجموعه داده های عکس موجود برای ایجاد نسخه های جدیدتر و بهتر از عکس های قدیمی و آسیب دیده استفاده میکند.
شناسایی چهره
یکی از رایج ترین کاربردهای پردازش تصویر که امروزه از آن استفاده می کنیم، تشخیص چهره است. شناسایی چهره از الگوریتم های یادگیری عمیق یا deep learning پیروی می کند که در آن ماشین ابتدا با ویژگی های خاص صورت انسان مانند شکل صورت، فاصله بین چشم ها و غیره آموزش داده می شود. زمانی که ماشین این ویژگی ها را یاد گرفت، تمام اشیاء در یک تصویر که شبیه چهره انسان است را پیدا می کند. تشخیص چهره ابزاری حیاتی است که در امنیت، احراز هویت بیومتریک و حتی فیلترهای موجود در اکثر برنامه های رسانه های اجتماعی این روزها استفاده می شود.
مزایای درس پردازش تصویر
پیاده سازی تکنیک های پردازش تصویر تأثیر زیادی بر بسیاری از فناوری ها داشته است. در اینجا برخی از مفیدترین مزایای پردازش تصویر، آورده شده است:
- تصویر دیجیتال را می توان در هر فرمت دلخواه (تصویر بهبود یافته، اشعه ایکس، عکس نگاتیو و غیره) در دسترس قرار داد.
- پردازش تصویر به بهبود تصاویر کمک می کند.
- اطلاعات را می توان برای تفسیر ماشینی پردازش و از تصاویر استخراج کرد.
- پیکسل های تصویر را می توان با هر کنتراست دلخواه دستکاری کرد.
- تصاویر را می توان به راحتی ذخیره و بازیابی کرد.
- پردازش تصویر امکان انتقال الکترونیکی آسان تصاویر را به ارائه دهندگان شخص ثالث فراهم می کند.
نرم افزارهای مورد استفاده در پردازش تصویر
اکثر ما برای انتخاب ابزار مناسب برای انجام کار خود گیج می شویم. ابزارها به شما کمک می کنند تا کار خود را تمرین کنید، اما از شما یک صنعتگر خوب نمی سازند. یک صنعتگر خوب ابزارهای مختلفی را در جیب خود دارد و با احتیاط از ابزاری که برای کار مناسب است استفاده می کند. همچنین ما اغلب شاهد جنگ بر سر زبان های برنامه نویسی هستیم؛ اما حقیقت این است که یک برنامه نویس حرفه ای باید زبان متناسب با وظیفه خود را انتخاب کند.
در بینایی کامپیوتر نیز با انتخاب های مشابهی روبرو هستیم. یک مهندس بینایی کامپیوتر یا برنامه نویس باید کدام ابزار و زبان برنامه نویسی را یاد بگیرد؟ C++، OpenCV، Python یا MATLAB؟ خبر خوب این است که در مورد پردازش تصویر چند گزینه محدود برای انتخاب داریم! یک دهه قبل هیچ کتابخانه خوبی برای بینایی کامپیوتری وجود نداشت. اگر میخواستید بینایی کامپیوتر را یاد بگیرید، فقط باید یک کتاب برمی داشتید و شروع به کدنویسی کتابخانه کوچک خود از الگوریتمهای بینایی کامپیوتری می کردید. خوشبختانه در حال حاضر اوضاع خیلی بهتر شده است.
نرمافزارهای مختلفی برای انجام پردازش تصویر مورد استفاده قرار میگیرند که معروف ترین آن ها MATLAB و Python است. بهترین نرمافزار و زبان برنامهنویسی برای انجام عملیات پردازش تصویر را متلب ارائه میدهد که علاوه بر کدنویسی، ابزار و فیلترهای مختلفی را نیز دارد اما پایتون آسان تر است و رابط کاربری بهتری دارد.
اگر در برنامه نویسی مبتدی هستید، بهتر است از مسیر آسان تر استفاده کنید و ابزاری را انتخاب کنید که با آن آشنا هستید. اگر برنامه نویس پایتون هستید، از OpenCV با پایتون استفاده کنید. اگر C++ می دانید، از C++ با OpenCV استفاده کنید. همین امر برای متلب نیز صادق است. ممکن است به دنبال استفاده از این دانش تازه به دست آمده در دنیای واقعی باشید. ممکن است به یک پروژه جانبی جدید فکر کنید یا به دنبال شغل جدیدی در این زمینه باشید. (گاهی اوقات به معنای واقعی کلمه) ارزش دارد که بدانید چگونه انتخاب کنید.
جمع بندی
رشد فناوری یادگیری عمیق، منجر به استفاده بیشتر از دید کامپیوتری در پروژه ها شده است و در نتیجه نیاز به ابزارهای پردازش تصویر را افزایش داده است. تقاضا برای متخصصان با مهارت های کلیدی در فن آوری های یادگیری عمیق هر سال با سرعت زیادی در حال افزایش است. اگر میخواهید درباره مزایای پردازش تصویر و یادگیری عمیق بیشتر بدانید، فرادرس راهی عالی برای قرار دادن شما در مسیر درست است. شما با استفاده از آموزش های آنلاین فرادرس بر تمامی مفاهیم درس پردازش تصویر تسلط خواهید داشت و الگوریتم های یادگیری عمیق را پیاده سازی می کنید.