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

نویسنده: رضا حمیدی

آخرین ویرایش : 1 سال قبل

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

کتابخانه پایتون برای پردازش تصویر چگونه عمل می‌کند؟ اگر مجموعه مقالات آموزشی برنامه‌نویسی پایتون، را مطالعه کرده باشید، حتماً از ابزار‌های مفید و کاربردی زبان برنامه‌نویسی پایتون برای پردازش تصویر مطلع هستید. عملیات پردازش تصویر، به اجرای مجموعه‌ای از الگوریتم‌ها گفته می‌شود که برای ویرایش، تحلیل و بهبود تصاویر دیجیتالی به کار ‌می‌روند. پردازش تصاویر دیجتالی با استفاده از مجموعه آموزش برنامه‌نویسی زبان‌های متلب و پایتون امکان‌پذیر است.

با اینکه متلب امکانات خوبی را در اختیار کاربران قرار داده، اما اغلب برنامه‌نویسان ترجیح می‌دهند برای توسعه برنامه‌های کاربردی مرتبط با حوزه پردازش تصویر، از زبان برنامه‌نویسی پایتون و ابزار‌های قدرتمند ان استفاده کنند؛ چرا که پایتون زبانی آسان است و سرعت ساخت پروژه‌ها را افزایش می‌دهد.

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

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

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

زبان برنامه‌نویسی پایتون و کتابخانه‌های آن، یکی از ابزار‌های مهمی است که برای عملیات پردازش تصویر دیجیتال استفاده می‌شود. ابزار‌ها و کتابخانه‌های غنی زبان پایتون، فرآیند‌های مختلفی روی تصویر انجام می‌دهند که از معروف‌ترین آن‌ها می‌توان به برش (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 است که به کمک آن، قسمتی از عکس پنهان شده و سایر اشیا قابل مشاهده می‌ماند. برای اینکه بتوانید کاربرد کتابخانه 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 در پایتون

یکی دیگر از کتابخانه­های کاربردی پایتون، 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()

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

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

ابزار SciKit-Image، یک کتابخانه پایتون برای پردازش تصویر است که به صورت منبع باز در دسترس توسعه‌دهندگان قرار می­گیرد. این ابزار ساختار آرایه­ای دارد  و کار خود را به کمک کتابخانه Numpy انجام می‌دهد. کتابخانه SciKit-Image در پایتون از قابلیت­های جذابی برخوردار است؛ به همین دلیل از آن به عنوان بهترین و مهم­ترین کتابخانه پایتون در پردازش تصویر یاد می­شود.

 این ابزار رایگان است و همه برنامه نویسان پایتون می­توانند از آن استفاده کنند. کتابخانه SciKit-Image در پایتون شامل الگوریتم و ابزارهای پردازشی مفیدی است که می­توان از آن­ها در امور تحقیقاتی، آموزشی و علمی استفاده کرد.

استفاده از کتابخانه SciKit-Image در پایتون، مانند برنامه‌‌نویسی پایتون، بسیار آسان است؛ از این رو حتی توسعه دهندگان تازه کار هم می­توانند از آن، برای پردازش تصویر با پایتون استفاده کنند و به نتایج مطلوبی برسند. ابزار SciKit-Image در پایتون از طریق کدنویسی استاندارد توسط بهترین برنامه­نویسان پایتون ایجاد شده است. در حال حاضر کدهای این کتابخانه، توسط گروهی از توسعه­دهنگان فعال و حرفه­ای پایتون، به طور مرتب پشتیبانی و بروزرسانی می­شود.

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

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

کتابخانه pill در پایتون چیست و چه کاربردی دارد؟ کتابخانه PIL که نام خود را از مخفف عبارت Python Imaging Library گرفته، مهم­ترین کتابخانه پایتون برای پردازش تصویر به حساب می­آید. پایتون به کمک این کتابخانه است که می­تواند برخی از عملیات­های مرتبط با پردازش تصویر را پشتیبانی کند. از مهم­ترین قابلیت‌هایی که این کتابخانه به پایتون اضافه کرده است می­توان به موارد زیر اشاره کرد:

  1. باز کردن تصاویر
  2. ویرایش تصویر
  3. ذخیره عکس در فرمت­های دلخواه

از سال 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 در پایتون

از بهترین کتابخانه‌های پایتون برای پردازش تصویر، می‌توان به کتابخانه قدرتمند pgmagick اشاره کرد. این کتابخانه در اصل یک Wrapper بوده که برای استفاده از GraphicsMagick توسعه یافته است. کتابخانه GraphicsMagick نیز از امکانات فوق‌العاده‌ای برخوردار است و به عنوان یک سیستم پردازش تصویر، مورد استفاده قرار می‌گیرد. این کتابخانه بین توسعه‌دهندگان پایتون، به عنوان چاقوی سوئیسی پردازش تصویر معروف است.

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

پردازش تصویر با ابزار Pycairo

ابزار قدرتمند Pycairo، از مجموعه‌ای از Bindings تشکیل شده که برای فراخوانی کتابخانه گرافیکی Cairo توسعه داده شده‌اند. کتابخانه گرافیکی Cairo یکی از کتابخانه‌های محبوب پایتون است که برای رسم گرافیک های‌برداری استفاده می‌شود. گرافیک‌های‌برداری طی فرایند‌های مختلفی از جمله تغییر اندازه و تبدیل، وضوح خود را از دست نمی‌دهد؛ از این رو از اهمیت بالایی برخوردار است.

خلاصه

در مقاله پردازش تصویر با پایتون مداد سبز، انواع کتابخانه‌های پایتون را معرفی کردیم. در حال حاضر حدود ۱۵ کتابخانه پایتون برای پردازش تصویر وجود دارد که توسعه‌دهندگان می‌توانند به صورت رایگان از آن استفاده کنند. ‌امیدواریم با مطالعه این مقاله به اهمیت زبان برنامه‌نویسی پایتون و کتابخانه ­های آن پی برده باشید.

فهرست مطالب

مقاله های مرتبط

دیدگاهتان را بنویسید

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

سه + 10 =