کار با تصویر در پایتون با استفاده از skimage

 

یکی از ساده‌ترین و آسان ترین روش‌ها برای کار با تصویر در Python استفاده از پکیج Skimage است. این پکیج قابلیت‌های زیادی از جمله: خواندن و نوشتن تصویر در فایل، انواع روش‌های رفع نویز، تنظیم روشنایی تصویر، تبدیل‌های مختلف بین فرمت‌های مختلف تصویر و … را دارد. تقریبا تمام تکنیک‌ها و عملگر‌های معروف در پردازش تصویر در این کتابخانه موجود است که برای کسب اطلاعات بیشتر می‌توانید به آدرس https://scikit-image.org مراجعه کنید.

در این مطلب چند کاربرد ساده از این پکیج نشان داده می‌شود و به کارهای پیچیده‌تری همچون رفع نویز پرداخته نمی‌شود و آن مطالب در پست‌های بعد برای کتابخانه OpenCV بیان خواهد شد.

در این مطلب از تصویر یک پرنده ایرانی به اسم هما استفاده می کنیم که در زیر نمایش داده شده است.

برای نصب این پکیج می‌توانید از دستور زیر استفاده کنید:

ابتدا قسمت‌هایی از پکیج skimage را که نیاز داریم و می‌خواهیم استفاده کنیم را مشخص می‌کنیم.

برای خواندن تصویر هما  از دستور imread به شکل زیر استفاده می‌کنیم:

برای به دست‌اوردن اندازه تصویر از خصوصیت shape استفاده  می‌شود:

خروجی این دستور مقدار زیر  است که ۳ نشان دهنده تعداد کانال‌ها در نمایش RGB است.

برای نمایش تصویر از دستور imshow و show به صورت زیر استفاده می‌شود.

خروجی کد بالا در زیر نمایش داده شده است:

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

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

برای نوشتن تصویر در فایل از دستور imsave استفاده می‌شود.

برای رسم یک چند وجهی از دستور polygon استفاده می‌شود که به عنوان ورودی مختصات x و y نقاط چند وجهی را در به صورت ترتیب ساعتگرد می‌گیرد. در زیر یک مستطیل با استفاده از آن رسم شده‌است.

در زیر خروجی کد بالا را مشاهده می‌کنید:

برای رسم دایره از دستور circle استفاده می‌شود که مختصات مرکز دایره و شعاع دایره را می‌گیرد.

در زیر خروجی این کد را می‌بینید:

برای رسم یک منحنی بزیه از دستور bezier_curve استفاده می‌شود. که سه نقطه که منحنی از آن باید عبور کند را می‌گیرد و همینطور میزان تنش را نیز می‌گیرد. هر چه میزان تنش بیشتر باشد تیزی منحنی در نقطه وسط بیشتر است:

خروجی کد بالا

برای رسم بیضی از دستور ellipse استفاده می‌شود که به‌عنوان ورودی مختصات مرکز بیضی و دو شعاع آن را می‌گیرد.

خروجی کد بالا

برای روشن و تیره‌تر کردن تصویر می‌توان از تبدیل گاما استفاده کرد. برای روشن‌تر کردن از مقدار‌های گامای کم‌تر از یک استفاده می‌کنیم و برای تیره کردن از مقدار‌های گامای بیش از یک استفاده می‌شود. در زیر کد این کار آورده شده‌است:

خروجی‌های کد بالا:

 

برای چرخش تصویر از دستور Rotate استفاده می‌شود که زاویه چرخش را به‌عنوان ورودی می‌گیرد.

برای تغییر اندازه تصویر از دستور resize استفاده می‌شود که اندازه جدید تصویر به‌عنوان ورودی را دریافت می‌کند.

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

تصویر در نمایش سطح خاکستری

هیستوگرام برای تصویر بالا:

 

این پکیج تعداد زیادی تابع برای کارهای پردازش تصویر دارد که با مراجعه به آدرس https://scikit-image.org می‌توانید آن‌ها را ببینید.

 

در زیر کد کلی برنامه نوشته شده را مشاهده می‌کنید:

 

نظرتان را برای ما بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *