کتابخانه پایتون برای پردازش تصویر

کتابخانه پایتون برای پردازش تصویر چگونه عمل میکند؟ اگر مجموعه مقالات آموزشی برنامهنویسی پایتون، را مطالعه کرده باشید، حتماً از ابزارهای مفید و کاربردی زبان برنامهنویسی پایتون برای پردازش تصویر مطلع هستید. عملیات پردازش تصویر، به اجرای مجموعهای از الگوریتمها گفته میشود که برای ویرایش، تحلیل و بهبود تصاویر دیجیتالی به کار میروند. پردازش تصاویر دیجتالی با استفاده از مجموعه آموزش برنامهنویسی زبانهای متلب و پایتون امکانپذیر است.
با اینکه متلب امکانات خوبی را در اختیار کاربران قرار داده، اما اغلب برنامهنویسان ترجیح میدهند برای توسعه برنامههای کاربردی مرتبط با حوزه پردازش تصویر، از زبان برنامهنویسی پایتون و ابزارهای قدرتمند ان استفاده کنند؛ چرا که پایتون زبانی آسان است و سرعت ساخت پروژهها را افزایش میدهد.
در این قسمت از مجموعه آموزش برنامهنویسی پایتون، قرار است در رابطه با ابزارهای پردازش تصویر زبان پایتون صحبت کنیم. برای آشنایی بیشتر با پردازش تصاویر دیجیتالی با پایتون با مجموعه آموزشی مداد سبز همراه باشید.
کتابخانه پایتون برای پردازش تصویر
زبان برنامهنویسی پایتون و کتابخانههای آن، یکی از ابزارهای مهمی است که برای عملیات پردازش تصویر دیجیتال استفاده میشود. ابزارها و کتابخانههای غنی زبان پایتون، فرآیندهای مختلفی روی تصویر انجام میدهند که از معروفترین آنها میتوان به برش (Cropping)، برعکس کردن تصویر (Flipping)، چرخاندن (Rotating)، قطعهبندی عکس (Image Segmentation)، دستهبندی (Classification)، استخراج ویژگی (Feature Extraction)، بهبود تصویر (Image Restoration)، بازشناسی تصویر (Image Recognition) و… اشاره کرد.
کتابخانه پایتون برای پردازش تصویر و تمامی فرایندها نام برده مناسب است. زبان متلب به دلیل قابلیتهایی که داشت، تا چند سال گذشته بهترین گزینه برای پردازش و دستکاری تصاویر بود، به طوری که تقریباً همه توسعهدهندگان تنها از آن استفاده میکردند و وجود زبان پایتون را بیهوده و ناکارآمد میدانستند.
حدود چند سال است که زبان پایتون به قدری محبوب شده که از آن به عنوان زبان برنامهنویسی علمی Scientific Programming Language یاد میشود. استقبال شدید از زبان پایتون موجب شد تا ابزارهای مختلفی برای پردازش تصویر به صورت رایگان ارائه شود و در دسترس برنامهنویسان قرار بگیرد.
پایتون ۱۵ کتابخانه مخصوص برای پردازش تصاویر دارد، در ادامه ضمن معرفی این کتابخانهها، مبحث Image Processing در پایتون را بررسی خواهیم کرد.
پایتون چیست؟
زبان برنامهنویسی پایتون، یک زبان شیگرا است که از محبوبیت زیادی بین برنامهنویسان برخوردار است. این زبان در دسته زبانهای سطح بالا قرار دارد و از آن برای ساخت صفحات وب و پیادهسازی برنامههای کاربردی استفاده میشود. پایتون به دلیل برخورداری از قابلیتهای Dynamic Types و Dynamic Binding، بهترین زبان برای توسعه اپلیکیشنهای کاربردی به حساب میآید. پردازش تصاویر با کتابخانههای پایتون نیز، بر محبوبیت این زبان افزوده است.
پردازش تصویر چیست؟
پردازش تصویر (Image Processing)، به مجموعهای از فرایندها گفته میشود که طی آنها، یک عکس، به فرم دیجیتالی در آماده و عملیاتهای مختلفی روی آن اعمال میشود. عملیاتهای مربوط به پردازش تصاویر دیجیتالی، معمولاً با هدف استخراج اطلاعات مفید، صورت میگیرند. در این فرایند، با تصاویر دیجیتالی، مانند سیگنالهای دوبعدی برخورد میشود و روی هر کدام، توابعی از پیش ساخته برای پردازش سیگنال اعمال خواهند شد.
عملیات پردازش تصویر دارای ۵ نوع است که عبارتند از
تجسم: پیدا کردناشیا غیر قابل مشاهده در عکس
تشخیص: شناسایی شی مورد نظر و جداسازی آن با بقیه اشیا
واضح ساختن و ترمیم کردن: ایجاد تصویر دیجیتالی جدید از روی عکس اصلی
شناسایی الگو: بررسی الگوهای مختلف دراشیا موجود در تصویر
بازیابی: جستجو و بازیابی عکسها دیجیتالی که از روی عکسهای اصلی ساخته شدهاند.
انواع شاخه های پردازش تصویر
در آموزش پردازش تصویر با پایتون رایگان میتوانید فرایند مطالعه و بررسی الگوریتمهای تصاویر دیجیتال را بیاموزید. در این فرایند، الگوریتمها به عنوان ورودی دریافت شده و یک تصویر دیجیتالی به عنوان خروجی برگردانده میشود.
به طور کلی شاخههای پردازش تصویر به دو دسته کلی تقسیم میشوند که عبارتند از:
بهبود تصاویر: بهبود تصاویر برای بالا بردن کیفیت تصاویر و مطمئن شدن از نمایش درست آنها در پرینتر یا صفحه نمایش، از فیلتر محوکننده و افزایش تضاد استفاده میکند.
بینایی ماشین: برای استفاده از تصاویر در رباتیک و محور تصاویر، روشهایی ارائه شده است که به کمک آن میتوان معنی و محتوای تصاویر را درک کرد.
پردازش تصویر با کتابخانه Numpy در پایتون
از بهترین کتابخانههای برنامهنویسی پایتون، میتوان به Numpy اشاره کرد. پایتون به واسطه این کتابخانه، از قابلیت Array Data Type (نوع داده آرایهای) پشتیبانی میکند، این امر دلیل اصلی محبوبیت این کتابخانه به شمار میرود. هدف از توسعه کتابخانه Numpy پردازش و دستکاری تصاویر با پایتون است. این کتابخانه کاملاً رایگان است و توسعهدهندگان میتوانند از آن استفاده کنند.
پایتون از طریق کتابخانه Numpy، تصاویر را به عنوان یک آرایه استاندارد قابل تعریف میشناسد. یک عکس دارای تعداد زیادی پیکسل است که با نقاط دادهای متناظر هستند. توسعهدهندگان به کمک عملیاتهای پایهای این کتابخانه، میتوانند مقادیر این پیکسلها را تغییر دهند. عملیاتهای پایهای Numpy عبارتند از:
- بخشبندی (Slicing)
- پوششگذاری(Masking)
- شاخصگذاری چندگانه (Fancy Indexing)
- و…
نمونه کد و پردازش تصویر با Numpy
پوششگذاری تصاویر یکی از فرایندهای اصلی کتابخانه Numpy است که به کمک آن، قسمتی از عکس پنهان شده و سایر اشیا قابل مشاهده میماند. برای اینکه بتوانید کاربرد کتابخانه Numpy را بهتر متوجه شوید، سورس کد پردازش تصویر پایتون و تصویر خروجی آن را در زیر ارائه میدهیم.
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:
mask = image < 87
image[mask]=255
plt.imshow(image, cmap=’gray’)

پردازش تصویر با کتابخانه SciPy در پایتون
یکی دیگر از کتابخانههای کاربردی پایتون، Scipy نام دارد. کاربرد این کتابخانه تقریبا شبیه Numpy است و برای برنامهنویسی علمی و پردازش تصویر استفاده میشود. توسعه دهندگان میتوانند به کمک الگوریتمها و توابع مفید این کتابخانه، عملیاتهای پردازش و دستکاری تصاویر دیجیتالی را انجام دهند.
کتابخانه Scipy با ارائه برخی از توابع عملیاتی ضروری برای پردازش آرایههای چند بعدی، اهمیت زیادی در پردازش تصویر با پایتون پیدا کرده است. از توابعی که این کتابخانه برای پردازش تصاویر فراهم کرده است میتوان به موارد زیر اشاره کرد:
- فیلترگذاری خطی و غیرخطی (Linear and Non-Linear Filtering)
- مورفولوژی باینری (Binary Morphology)
- درونیابی تصویر (Image Interpolation)
- اندازهگیری اشیاء (Object Measurement)
نمونه کد و پردازش تصویر با Scipy
یکی از کاربرد های کتابخانه Scipy تارکردن تصاویر (Image Blurring) است. این فرایند ساده توسط فیلتر گاوسی در پایتون اتفاق می افتد. برای درک بهتر به خروجی قطعه کد زیر دقت کنید.
from scipy.ndimage import gaussian_filter
from scipy import misc
import matplotlib.pyplot as plt
a = np.arange(50, step=2).reshape((5,5))
gaussian_filter(a, sigma=1)
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result =gaussian_filter(ascent, sigma=5)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
پردازش تصاویر با کتابخانه SciKit-Image در پایتون
ابزار SciKit-Image، یک کتابخانه پایتون برای پردازش تصویر است که به صورت منبع باز در دسترس توسعهدهندگان قرار میگیرد. این ابزار ساختار آرایهای دارد و کار خود را به کمک کتابخانه Numpy انجام میدهد. کتابخانه SciKit-Image در پایتون از قابلیتهای جذابی برخوردار است؛ به همین دلیل از آن به عنوان بهترین و مهمترین کتابخانه پایتون در پردازش تصویر یاد میشود.
این ابزار رایگان است و همه برنامه نویسان پایتون میتوانند از آن استفاده کنند. کتابخانه SciKit-Image در پایتون شامل الگوریتم و ابزارهای پردازشی مفیدی است که میتوان از آنها در امور تحقیقاتی، آموزشی و علمی استفاده کرد.
استفاده از کتابخانه SciKit-Image در پایتون، مانند برنامهنویسی پایتون، بسیار آسان است؛ از این رو حتی توسعه دهندگان تازه کار هم میتوانند از آن، برای پردازش تصویر با پایتون استفاده کنند و به نتایج مطلوبی برسند. ابزار SciKit-Image در پایتون از طریق کدنویسی استاندارد توسط بهترین برنامهنویسان پایتون ایجاد شده است. در حال حاضر کدهای این کتابخانه، توسط گروهی از توسعهدهنگان فعال و حرفهای پایتون، به طور مرتب پشتیبانی و بروزرسانی میشود.
پردازش تصویر با کتابخانه های PIL و Pillow در پایتون
کتابخانه pill در پایتون چیست و چه کاربردی دارد؟ کتابخانه PIL که نام خود را از مخفف عبارت Python Imaging Library گرفته، مهمترین کتابخانه پایتون برای پردازش تصویر به حساب میآید. پایتون به کمک این کتابخانه است که میتواند برخی از عملیاتهای مرتبط با پردازش تصویر را پشتیبانی کند. از مهمترین قابلیتهایی که این کتابخانه به پایتون اضافه کرده است میتوان به موارد زیر اشاره کرد:
- باز کردن تصاویر
- ویرایش تصویر
- ذخیره عکس در فرمتهای دلخواه
از سال 2009 تا کنون، توسعه و بروزرسانی کتابخانه PIL متوقف شده است؛ به همین دلیل، توسعهدهندگان به سراغ کتابخانه pillow برای پردازش عکس رفتند. کتابخانه pillow در پایتون سالها است که توسط برنامهنویسان پایتون پشتیبانی میشود و بهعنوان نسخه توسعه یافته کتابخانه pil به حساب میآید. این کتابخانه نسبت به سایر کتابخانه پایتون برای پردازش تصویر مزیتهایی دارد که عبارتند از:
- نصب آسان
- قابل اجرا در انواع سیستم عاملها از جمله ویندوز، لینوکس و…
- پشتیبانی از python3
- و…
پردازش تصویر با کتابخانه OpenCV-Python در پایتون
نام OpenCV از مخفف عبارت Open Source Computer Vision Library گرفته شده است. کتابخانه OpenCV یا کتابخانه منبع باز بینایی کامپیوتری، یک کتابخانه پایتون برای پردازش تصویر است که در شاخه بینایی کامپیوتر کاربرد دارد. این کتابخانه یک واسط برنامهنویسی کاربری (API) است که از آن برای ساخت برنامههایی استفاده میشود که نیازمند محاسبات ریاضی و معادلات سنگین میباشند.
کتابخانه open cv برای پردازش تصویر، با استفاده از زبان برنامهنویسی ++c و C پیادهسازی شده است؛ به همین دلیل سرعت بسیار خوبی دارد. علاوه بر این، کدنویسی و اجرای پروژههای مرتبط با پردازش تصویر با این کتابخانه بسیار آسان است. زبان برنامهنویسی پایتون و کتابخانه OpenCV به دلیل ویژگیهایی که دارد بهترین گزینه برای پردازش تصویر و ساخت برنامههای بینایی کامپیوتری به حساب میآید. برای اینکه بتوانید در حوزه پردازش تصویر فعالیت کنید، توصیه میکنیم آموزش کتابخانه opencv در پایتون را فراموش نکنید.
برای یادگیری آموزش ++C از این صفحه اقدام کنید.
کتابخانه Mahotas برای پردازش تصویر با پایتون
بهترین کتابخانه پایتون برای پردازش تصویر کدام است؟ پایتون برای پردازش تصویر، کتابخانههای زیادی ارائه کرده که از مهمترین آنها میتوان به کتابخانه Mahotas اشاره کرد. توسعهدهندگان به کمک این کتابخانه میتوانند پروژههای مربوط به پردازش تصویر و پیادهسازی برنامههای حوزه بینایی کامپیوتری را انجام دهند. در کتابخانه Mahotas تعدادی تابع بینایی کامپیوتر مدرن گنجانده شده که از کاربردیترین آنها میتوان به موارد زیر اشاره کرد:
- فیلترگذاری (Filtering)
- عملیات مورفولوژیکی (Morphological Operations)
- محاسبه ویژگی (Feature Computation)
- تشخیص نقاط مهم (Interest Point Detection)
- توصیفکنندههای محلی (Local Descriptors)
واسط برنامه نویسی یا همان API این کتابخانه، توسط زبان پایتون و الگوریتمهای آن با زبان برنامهنویسی C++ پیادهسازی شده است؛ به همین دلیل سرعت بسیار خوبی دارد و بهترین گزینه برای ساخت برنامههای پردازش تصویر و برنامههای بینایی کامپیوتر خواهد بود. در ضمن وابستگی (Dependencies) برنامهنویسی این زبان بسیار کم است و این مورد، یک امتیاز مثبت برای توسعهدهندگان به شمار میرود.
پردازش تصویر با کتابخانه SimpleITK در پایتون
کتابخانه SimpleITK با ارائه بهترین ابزارهای نرمافزارهای پردازش تصویر، مورد استقبال توسعهدهندگان و برنامهنویسان قرار گرفته است. این کتابخانه به دلیل پشتیبانی از مؤلفههای نرمافزاری گزینه مناسبی برای تحلیل تصاویر دیجیتالی، فیلترگذاری، قطعهبندی تصاویر و… خواهد بود. کتابخانه SimpleITK با زبان C++ نوشته شده و برای زبانهای مختلف از جمله زبان برنامهنویسی پایتون نیز قابل استفاده است.
پردازش تصویر با کتابخانه pgmagick در پایتون
از بهترین کتابخانههای پایتون برای پردازش تصویر، میتوان به کتابخانه قدرتمند pgmagick اشاره کرد. این کتابخانه در اصل یک Wrapper بوده که برای استفاده از GraphicsMagick توسعه یافته است. کتابخانه GraphicsMagick نیز از امکانات فوقالعادهای برخوردار است و به عنوان یک سیستم پردازش تصویر، مورد استفاده قرار میگیرد. این کتابخانه بین توسعهدهندگان پایتون، به عنوان چاقوی سوئیسی پردازش تصویر معروف است.
کتابخانه pgmagick شامل مجموعهای از ابزارهای قوی و کتابخانههای برنامهنویسی است که برای پردازش تصویر استفاده میشوند. از امکانات کتابخانه pgmagick میتوان به خواندن، نوشتن، دستکاری تصاویر دیجیتالی با فرمتهای مختلف و…. اشاره کرد.
پردازش تصویر با ابزار Pycairo
ابزار قدرتمند Pycairo، از مجموعهای از Bindings تشکیل شده که برای فراخوانی کتابخانه گرافیکی Cairo توسعه داده شدهاند. کتابخانه گرافیکی Cairo یکی از کتابخانههای محبوب پایتون است که برای رسم گرافیک هایبرداری استفاده میشود. گرافیکهایبرداری طی فرایندهای مختلفی از جمله تغییر اندازه و تبدیل، وضوح خود را از دست نمیدهد؛ از این رو از اهمیت بالایی برخوردار است.
خلاصه
در مقاله پردازش تصویر با پایتون مداد سبز، انواع کتابخانههای پایتون را معرفی کردیم. در حال حاضر حدود ۱۵ کتابخانه پایتون برای پردازش تصویر وجود دارد که توسعهدهندگان میتوانند به صورت رایگان از آن استفاده کنند. امیدواریم با مطالعه این مقاله به اهمیت زبان برنامهنویسی پایتون و کتابخانه های آن پی برده باشید.
دیدگاهتان را بنویسید