هوش مصنوعی و یادگیری عمیق در چند سال اخیر تأثیر شگرفی بر حوزههای مختلف فناوری داشته است. یکی از داغترین موضوعاتی که در این صنعت مطرح است، پردازش تصویر و بینایی ماشین است:بینایی ماشین یعنی توانایی رایانهها برای «دیدن» و تفسیر دنیای اطرافشان. پردازش تصویر یا image processing یعنی کارهایی که باید انجام دهید تا رایانه تصاویر و محتوای ویدیویی را بتواند بهتر ببیند و تفسیر کند. ماشینهای خودران، دوربینهای کنترل جرایم رانندگی ، سیستمهای تشخیص چهره و.... همگی برای اینکه به درستی کار کنند به این دو زمینه مهم هوش مصنوعی متکی هستند. حال در این مقاله میخواهیم مفصلا به این مسئله اشاره کنیم که پردازش تصویر چیست و چه کاربردهایی دارد و هر آنچیزی را که درباره پردازش تصویر به آن نیاز دارید در اختیارتان قرار دهیم.
قبل از اینکه به پردازش تصویر بپردازیم، ابتدا باید متوجه شوید که دقیقاً چه چیزی یک تصویر را تشکیل میدهد. در دنیای فناوری اطلاعات و کامپیوتر، یک تصویر با ابعاد آن (ارتفاع و عرض) بر اساس تعداد پیکسلها نشان داده میشود. برای مثال، اگر ابعاد یک تصویر 500 در 400 (عرض x ارتفاع) باشد، تعداد کل پیکسلهای تصویر 200000 است. این پیکسل نقطهای از تصویر است که سایه، تیرگی یا رنگ خاصی را به خود میگیرد. بازه رنگی اغلب شامل یکی از سه گروه زیر است:
پردازش تصویر (image processing) مجموعه روشهایی است که هدفشان دستکاری یا بهبود تصاویر است. پردازش تصویر به صورت پیکسل به پیکسل است: یعنی الگوریتمها با ویژگیهای پیکسلی تصویر سروکار دارند، مجموعهای از توابع به ترتیب بر هر پیکسل از یک تصویر اعمال میشوند و فقط هنگامی که یک تابع عملیاتی به طور کامل انجام شد، برنامه شروع به انجام تابع دوم و... میکند. علاوه بر آن، در پردازش تصویر اغلب از الگوریتمهای یادگیری ماشین استفاده میشود. اما برای درک بهتر چگونگی این کار، اول بهتر است بدانید که اصلا یک ماشین هوشمند چگونه تصاویر را میبیند؟ تصاویر در رایانه در قالب ماتریسهای دو بعدی یا سه بعدی توسط یک کامپیوتر تفسیر میشوند . مقدار درایه در هر ماتریس نشان دهنده دامنه رنگی آن پیکسل است که به عنوان "شدت" پیکسل نیز شناخته میشود. به طور معمول، با تصاویر 8 بیتی سروکار دارید که در آن مقدار دامنه از 0 تا 255 (مقدار کد رنگ قابل قبول هر پیکسل) متغیر است. به جز آن، در پردازش تصویر از روشهای پردازش سیگنال نیز استفاده میشود. در این روشها، همه تصاویر به عنوان سیگنالهای دوبعدی یا همان موقعیت مکانی پیکسل براساس محورهای x و y در نظر گرفته میشود.
بینایی ماشین (machine vision) نیز یکی از زمینههای رو به رشد هوش مصنوعی شناخته میشود. بینایی ماشین یکی از مباحث علوم میان رشته ای است که با علوم مختلفی مانند صنایع، مکانیک، برق و الکترونیک و علوم رایانه، همپوشانی دارد و از مبانی علوم رایانه، تکنیکهای پردازش تصویر، مهندسی اپتیک، مهندسی مکانیک استفاده میکند. هسته بینایی ماشین ؛ پردازش تصویر است یا به بیانی دیگر، بینایی ماشین مبتنی بر پردازش تصویر میباشد و به کامپیوتر قابلیت مشاهده و تجزیه تحلیل محیط پیرامون را میدهد. به طور کلی، یک سیستم مجهز به بینایی ماشین، دارای چندین دوربین فوق پیشرفته و یک سیستم تحلیلگر قدرتمند برای پردازش دادههای تصویری به دست آمده است و از آنها برای تبدیل آنالوگ به دیجیتال و همچنین تحلیل آن استفاده میکند. امروزه سیستمهای بینایی ماشین از طریق اصلاح و بهینه سازی تکنیکهای موجود در بخش پردازش تصویر به سرعت درحال پیشرفت هستند که محققان با پرداختن به آنها میتوانند عملکرد بینایی ماشین را بیشتر از گذشته بهبود ببخشند.
همانطور که گفتیم، پردازش تصویر یک مرحله ضروری و پیش نیاز بینایی ماشین است و در بسیاری از برنامهها مانند تشخیص چهره، تشخیص اشیا و فشرده سازی تصویر کاربرد دارد. پردازش تصویر برای بهبود تصویر موجود یا حذف اطلاعات مهم از آن انجام میشود. علاوه بر آن، پیش پردازش انجام شده میتواند عملکرد یک مدل بینایی ماشین را به طور چشمگیری افزایش دهد. دستکاری تصاویر مانند افزودن یا حذف اشیا به تصاویر، یکی دیگر از کاربردهای پردازش تصویر به ویژه در صنعت سرگرمی است. در ادامه به چند مورد دیگر از کاربردهای پردازش تصویر میپردازیم.
پردازش تصویر به طور گسترده در تحقیقات پزشکی مورد استفاده قرار گرفته است و برنامههای درمانی را به صورت کارآمدتر و دقیقتر امکان پذیر کرده است. به عنوان مثال، میتوان از پردازش تصویر برای تشخیص زودهنگام سرطان سینه استفاده کرد. از آنجایی که پزشکی علمی بسیار جدی است و در سلامت و حفظ جان انسانها موثر است، پردازش تصویر در این حوزه نیازمند سیستمهای گران و با دقت بالا هستند. همچنین سیستم نیازمند الگوریتمهای بهینه در بخش پیاده سازی، تست و ارزیابی میباشد.
در مورد سنسورهای ترافیک، از سیستم پردازش تصویر ویدیویی یا VIPS استفاده میشود. این سیستم شامل یک سیستم تصویربرداری، یک سیستم مخابراتی و یک سیستم پردازش تصویر میشود. هنگام ضبط ویدیو، یک VIPS دارای چندین ناحیه تشخیص است که هر زمان که وسیله نقلیه وارد آن منطقه میشود سیگنال روشن و سپس هر زمان که وسیله نقلیه از منطقه تشخیص خارج میشود سیگنال خاموش میشود. همچنین از این نواحی تشخیص میتوان برای شناسایی میزان ترافیک در یک نقطه خاص استفاده کرد. علاوه بر آن، پردازش تصویر میتواند پلاک خودرو را به صورت خودکار ضبط کند، نوع وسیله نقلیه را تشخیص دهد، سرعت راننده را در بزرگراه کنترل کند و ... .
از پردازش تصویر میتوان برای بازیابی و پرکردن قسمتهای گم شده یا خراب یک تصویر استفاده کرد. این کار با استفاده از سیستمهای پردازش تصویر به طور گسترده همراه با مجموعه دادههای تصاویر موجود برای ایجاد نسخههای جدیدتر عکسهای قدیمی و آسیب دیده امکان پذیر است.
یکی از رایجترین کاربردهای پردازش تصویر که امروزه از آن استفاده میشود، تشخیص چهره است. تشخیص چهره از الگوریتمهای یادگیری عمیق استفاده میکند که در آن ماشین ابتدا با ویژگیهای خاص صورت انسان مانند شکل صورت، فاصله بین چشمها و... آموزش داده میشود. سپس چهره جدید را با تصاویری که در پایگاه داده اش نگهداری میکند، مقایسه و نتیجه را اعلام میکند. تشخیص چهره ابزاری حیاتی است که این روزها در امنیت، بیومتریک و حتی فیلترهای موجود در اغلب تلفنهای همراه، مچبندهای هوشمند و برنامههای رسانه اجتماعی استفاده میشود.
پیاده سازی تکنیکهای پردازش تصویر تاثیر زیادی بر بسیاری از سازمانهای مرتبط با حوزه فناوری داشته است. در اینجا برخی از مفیدترین مزایای پردازش تصویر، صرف نظر از زمینه کارکرد، آورده شده است:
پنج نوع اصلی پردازش تصویر وجود دارد:
اصلیترین جز در پردازش تصویر یک رایانه یا ماشین هوشمند است. این رایانه ممکن است - از سیستم کامپیوتر شخصی گرفته تا یک ابر رایانه - شامل هر چیز هوشمندی باشد. گاهی اوقات نیز در بحث پردازش تصویر از کامپیوترهای ساخته شده خاصی استفاده میشود که برای رسیدن به هدف مورد نظر بهینه شده اند. به طور کلی اجزای مورد استفاده در پردازش تصویر شامل نرم افزار و سخت افزار میشود. نرم افزار پردازش تصویر شامل کدهای از پیش نوشته شده و ماژولهای تخصصی آماده است که عملکرد خاصی را انجام میدهند. سخت افزار پردازش تصویر نیز اغلب از یک واحد منطق حسابی (ALU) تشکیل میشود، که میتواند عملیات حسابی و منطقی همزمان را روی تصاویر به صورت دقیق و کامل انجام دهد. در ادامه با سایر اجزای پردازش تصویر بیشتر آشنا میشوید.
وظیفه اصلی سنسور تصویر جمع آوری نور ورودی، تبدیل آن به سیگنال الکتریکی، اندازه گیری آن سیگنال و سپس دادن خروجی است. ورودی شامل یک آرایه دو بعدی از اجزای حساس به نور است که فوتونها را به الکترون تبدیل میکند. تصاویر توسط تجهیزاتی مانند دوربینهای دیجیتال با استفاده از حسگرهای تصویر مانند CCD و CMOS گرفته میشود. برای جمع آوری تصاویر دیجیتال اغلب به دو جز در حسگرهای تصویر نیاز است: اولی یک ابزار واقعی (حسگر) است که میتواند انرژی ساطع شده از جسمی را که میخواهید از آن عکس بگیرید تشخیص دهد. دومی مبدل دیجیتال است که خروجی دستگاه حسگر فیزیکی را به شکل دیجیتال تبدیل میکند.
در برنامههایی که شامل پردازش تصویر هستند، مهارت حفظ تصاویر و نگهداری آنها ضروری است. سه نوع اصلی ذخیره سازی دیجیتال برای برنامههای پردازش تصویر وجود دارد: (1) ذخیره سازی کوتاه مدت، (2) ذخیره سازی آنلاین برای فراخوانی سریع (3) ذخیره سازی آرشیو شده که با حجم زیاد و به صورت فشرده شده نگهداری شده و در دسترس است.
چاپگرهای لیزری، دوربینهای ضبط فیلم، تجهیزات حساس به حرارت، چاپگرهای جوهرافشان و تجهیزات دیجیتالی مانند دیسکهای نوری و CDROM تنها چند نمونه از ابزارهای مورد استفاده برای ضبط تصاویر هستند.
شبکه برای ارسال دادههای بصری از طریق یک کامپیوتر یکی از اجزای ضروری است. مهمترین عامل در انتقال تصویر پهنای باند است: زیرا برنامههای کاربردی پردازش تصویر به مقادیر زیادی داده نیاز دارند.
گفتیم که پردازش تصویر شامل مراحل مختلف و مجموعه ای از توابع است که روی پیکسلهای تصویر اعمال میشوند. برخی از مراحل اصلی این عملیات عبارتند از:
گرفتن تصویر اولین گام در پردازش تصویر است. این مرحله به عنوان پیش پردازش در پردازش تصویر نیز شناخته میشود. این مرحله شامل دریافت تصویر از یک منبع (معمولا سخت افزار) است.
بهبود تصویر شامل فرآیند پیدا کردن و برجسته کردن برخی از ویژگیهای مورد علاقه در تصویری است که در حالت عادی مبهم میباشد. مانند تغییر روشنایی، کنتراست و ... .
بازیابی تصویر فرآیند بهبود ظاهر یک تصویر خراب، نصفه و پاره است. با این حال، بر خلاف بهبود تصویر، بازیابی تصویر با استفاده از مدلهای ریاضی یا احتمالی خاصی انجام میشود.
شامل تقسیم یک تصویر به اجزا یا اشیاء تشکیل دهنده آن است و اغلب به عنوان مرحله پیش پردازش برای تشخیص اشیا استفاده میشود. یکی از رایجترین روشها استفاده از آستانه گذاری باینری است که در آن هر پیکسل سیاه یا سفید است. مقدار آستانه به گونهای انتخاب میشود که تمام پیکسلهایی که سطح روشنایی آنها کمتر از آستانه است سیاه شوند و همه پیکسلهایی که سطح روشنایی بالاتر از آستانه دارند سفید شوند. این باعث میشود که اشیا در تصویر قطعه بندی شوند، زیرا آنها اکنون با مناطق سیاه و سفید متمایز نشان داده میشوند.
که شامل پردازش تصویر رنگی، پردازش تصویر باینری و... است. این پردازشها شامل تعدادی از تکنیکهای مدلسازی در یک حوزه دیجیتال هستند. این مرحله به دلیل استفاده قابل توجه از تصاویر دیجیتال در اینترنت، اهمیت زیادی پیدا کرده است.
فشرده سازی فرآیندی است که برای کاهش فضای ذخیره سازی مورد نیاز برای ذخیره یک تصویر یا پهنای باند مورد نیاز برای انتقال آن استفاده میشود. این کار به ویژه زمانی انجام میشود که تصویر شما برای استفاده در اینترنت باشد.
فرآیند تغییر تصویر برای تغییر ظاهر آن است. این کار ممکن است به دلایل مختلفی مورد نظر باشد؛ مانند حذف یک شی ناخواسته از یک تصویر یا اضافه کردن یک شی که در تصویر وجود ندارد. طراحان گرافیک اغلب این کار را برای ایجاد پوستر، فیلم و غیره انجام میدهند. نمونهای دیگر، انتقال سبک نقاشان مطرح به تصویر است، تکنیکی که از مدلهای یادگیری عمیق استفاده میکند.
به گرفتن یک تصویر خروجی بعد از اینکه مراحل بالا روی تصویر اعمال شد و استفاده از نتیجه آن گفته میشود.
زبانهای برنامه نویسی بسیاری در حوزه پردازش تصویر استفاده میشوند. برخی از این زبانها عبارتند از:
در حال حاضر محبوبترین زبانهای برنامه نویسی قابل استفاده در بحث هوش مصنوعی و به خصوص پردازش تصویر، پایتون و متلب هستند که ابزارهای زیادی را در اختیار برنامه نویسان قرار میدهند. در پایتون، پردازش تصویر به بستهها و کتابخانههای خارجی متکی است و جعبه ابزار آی سی برای پردازش تصویر در متلب، آن را به گزینه ای بهتر برای بخش بندی، استخراج و تجزیه و تحلیل دادههای تصویر تبدیل میکند. به همین دلیل اگر در زمینه تحقیقاتی مقالات ده سال قبل پردازش تصویر را بررسی کنید، اغلب کدها با متلب نوشته شده اند. با این وجود در سالهای اخیر پایتون با معرفی امکانات بیشتر و پشتیبانی از کتابخانههای کاربردی در شبیهسازی، ارتعاشات، مدلسازی، اتصال مراحل به یک برنامه کاربردی تحت وب یا موبایل و... حتی به انتخاب اول توسعه دهندگان تبدیل شده است. در بخش بعدی این کتابخانهها را معرفی میکنیم.
متخصصان باید تصاویر را قبل از وارد کردن آنها به هر مدل یادگیری ماشینی پیش پردازش کنند. برای پردازش حجم زیادی از دادهها با کارایی و سرعت بدون به خطر انداختن نتایج، باید از ابزارهای پردازش تصویر برای یادگیری ماشین و یادگیری عمیق استفاده کرد. در ادامه، مفیدترین کتابخانههای پردازش تصویر در پایتون که به شدت در فرآیندهای یادگیری ماشین استفاده میشوند، فهرست شده است.
در صدر کتابخانههای کاربردی پردازش تصویر OpenCV است، که یک کتابخانه منبع باز است که در سال 2000 توسط اینتل توسعه و منتشر شد. OpenCV اغلب برای کارهای بینایی کامپیوتری مانند تشخیص چهره، تشخیص اشیا، تقسیم بندی تصویر و موارد دیگر به کار میرود. OpenCV که به زبان C++ نوشته شده است، در پایتون نیز وجود دارد و میتواند در کنار NumPy، SciPy و Matplotlib استفاده شود. یکی از بهترین جنبههای OpenCV این است که کتابخانه بینایی کامپیوتر به لطف مشارکت کنندگان زیادی که در گیتهاب دارد، دائما در حال تکامل است. این کتابخانه پردازش تصویر دسترسی به بیش از 2500 الگوریتم پیشرفته و کلاسیک را فراهم میکند. کاربران میتوانند از OpenCV برای انجام چندین کار خاص مانند حذف قرمزی چشم و دنبال کردن حرکات چشم استفاده کنند. در اینجا برخی از مهمترین ویژگیهای OpenCV آمده است:
یکی دیگر از بهترین کتابخانههای پردازش تصویر موجود Scikit-Image است که تقریبا برای هر کار بینایی ماشینی استفاده میشود. Scikit-Image تا حدودی به زبان Cython (یک زبان برنامه نویسی ابر مجموعه ای از پایتون) نوشته شده است. این ساختار منحصر به فرد به آن کمک میکند تا عملکرد خوبی داشته باشد. Scikit-Image الگوریتمهای مختلفی را برای تقسیم بندی، دستکاری فضای رنگی، تبدیل هندسی، تحلیل، مورفولوژی، تشخیص ویژگی و موارد دیگر ارائه میدهد. برخی از مهمترین نکات برجسته Scikit-Image عبارتند از:
SciPy در ابتدا تنها برای محاسبات ریاضی و علمی طراحی شده بود، اما بعدها به یک کتابخانه برتر برای انجام پردازش تصویر چند بعدی با وارد کردن زیر ماژول scipy.ndimage تبدیل شد. SciPy توابعی را برای کار بر روی آرایههای چندبعدی ارائه میدهد. اگر به دنبال طیف گسترده ای از برنامهها مانند تقسیم بندی تصویر، کانولوشن، خواندن تصاویر، تشخیص چهره، استخراج ویژگی و موارد دیگر هستید، این کتابخانه پردازش تصویر گزینه عالی دیگری است:
یکی دیگر از کتابخانههای برتر پردازش تصویر در پایتون، Mahotas است که در ابتدا برای انفورماتیک تصویر زیستی طراحی شده بود. Mahotas به توسعه دهندگان این امکان را میدهد که از ویژگیهای پیشرفته مانند الگوهای باینری محلی و هارالیک استفاده کنند. این میتواند تصاویر دو بعدی و سه بعدی را از طریق ماژول mahotas.features.haralick خود محاسبه کند و اطلاعات را از تصاویر استخراج میکند تا پردازش تصویر پیشرفته را انجام دهد. برخی از مهمترین ویژگیهای Mahotas آورده شده است:
یکی دیگر از کتابخانههای متن باز برای کارهای پردازش تصویر، Pillow است که یک نسخه پیشرفته از PIL (کتابخانه تصویربرداری پایتون) میباشد. با Pillow میتوانید بسیاری از فرآیندها را در پردازش تصویر مانند عملیات نقطه ای، فیلتر کردن و دستکاری انجام دهید. Pillow به دلیل پشتیبانی از طیف گسترده ای از فرمتهای تصویر، یکی از بهترین کتابخانهها برای مدیریت تصاویر است. استفاده از کتابخانه پردازش تصویر آسان است و آن را به یکی از رایجترین ابزار برای دانشمندان داده که با تصاویر کار میکنند تبدیل کرده است:
SimpleITK کمی متفاوت از سایر کتابخانههای پردازش تصویر در این لیست کار میکند. به جای در نظر گرفتن تصاویر به عنوان آرایه، SimpleITK آنها را به عنوان مجموعه ای از نقاط در یک ناحیه در فضا در نظر میگیرد. به عبارت دیگر، ناحیه اشغال شده توسط تصاویر را به عنوان ماتریس کسینوس مبدأ، اندازه، فاصله و جهت تعریف میکند. این کار SimpleITK را قادر میسازد تا تصاویر را بهطور مؤثر پردازش کند و از ابعاد ۲ بعدی، ۳ بعدی و ۴ بعدی پشتیبانی کند. در ادامه برخی از اصلیترین ویژگیهای SimpleITK آورده شده است:
Matplotlib یکی دیگر از گزینههای عالی کتابخانه پردازش تصویر به ویژه به عنوان یک ماژول منعطف برای کار با تصاویر در پایتون مفید است و شامل دو روش خاص برای خواندن و نمایش تصاویر است. Matplotlib در آرایههای دو بعدی به عنوان یک کتابخانه تجسم داده به صورت نمودار و چارت تخصص دارد. جالب است بدانید که هرچند این کتابخانه پردازش تصویر اغلب برای تجسمهای دو بعدی مانند نمودارهای پراکنده، هیستوگرامها و نمودارهای میلهای استفاده میشود، اما ثابت کرده است که با بیرون کشیدن مؤثر اطلاعات از یک تصویر، برای پردازش تصویر نیز مفید است. توجه به این نکته مهم است که Matplotlib از همه فرمتهای فایل پشتیبانی نمیکند. برخی از مزایای این کتابخانه عبارتند از:
شاید تصور میکردید که NumPy یک کتابخانه منبع باز پایتون است که برای تجزیه و تحلیل عددی استفاده میشود، اما باید بدانید که این کتابخانه میتواند برای کارهای پردازش تصویر مانند برش تصویر، دستکاری پیکسل ها، پوشاندن مقادیر پیکسل و موارد دیگر استفاده شود. NumPy شامل یک ماتریس و آرایههای چند بعدی به عنوان ساختار داده است و میتواند برای کمک به کاهش رنگ، باینری کردن، چسباندن با برش، وارونگی مثبت یا منفی و بسیاری از قابلیتهای دیگر استفاده شود. در اینجا برخی از مهمترین ویژگیهای NumPy آمده است:
کتابخانه Pgmagick یکی دیگر از کتابخانههای برتر پایتون است. این ابزار پردازش تصویر دارای مجموعه ای چشمگیر از امکاناتی است که در ویرایش تصویر و دستکاری تصویر کمک میکند:
آخرین کتابخانه پردازش تصویر در پایتون در لیست ما SimpleCV است که یک چارچوب منبع باز محبوب برای ایجاد برنامههای مبتنی بر بینایی ماشین و پردازش تصویر است. SimpleCV دارای یک رابط برای دوربینها، تبدیل فرمت، دستکاری تصویر، استخراج ویژگی و غیره است. این کتابخانه پردازش تصویر در میان کسانی که به دنبال ایجاد برنامههای سبک بینایی ماشین هستند، محبوب است. SimpleCV به کاربران امکان میدهد بدون نیاز به یادگیری در مورد فرمتهای فایل، عمق بیت، فضاهای رنگی، مدیریت بافر و موارد دیگر به ابزارهای قدرتمندی که در OpenCV وجود دارد، دسترسی داشته باشند. برخی از مهمترین ویژگیهای SimpleCV عبارتند از:
تقاضا برای متخصصان با مهارتهای کلیدی در فناوریهای پردازش تصویر هر سال با سرعت زیادی در حال افزایش است. در این مقاله توضیح دادیم که پردازش تصویر چیست و در چه حوزههایی کاربرد دارد. همانطور که در ابتدای متن اشاره شد، رشد فناوریهای یادگیری عمیق منجر به شتاب سریع و کاربردیترشدن بینایی ماشین در پروژههای متن باز شده است و نیاز به ابزارهای پردازش تصویر را افزایش داده است. اگر میخواهید درباره مزایای یادگیری عمیق بیشتر بدانید، مقاله یادگیری عمیق چیست را مطالعه کنید. اگر درمورد اینکه پردازش تصویر چیست سوال دارید یا در این حوزه تجربهای دارید که میتواند مفید باشد، میتوانید آن را در بخش نظرات با ما و سایر کاربران سون لرن درمیان بگذارید.
با سلام و سپاس از مطالب مفیدتان آیا امکان آموزش image processing با python را دارید؟ من برای پایان نامه خودم نیاز دارم این کار را انجام بدم و میخواستم بدونم این موضوع را آموزش میدید؟
درود برای مبانی هوش مصنوعی با پایتون (شبکه عصبی - یادگیری عمیق و...) میتونید به دوره زیر مراجعه کنید اما درمورد مباحث خیلی تخصصیتر خیر درحال حاضر برای پردازش تصویر چیزی نداریم. https://7learn.com/course/data-science-expert