1. خانه
  2. مقالات
  3. مقدمه ای بر پردازش تصویر با پایتون

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

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

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

به گفته IDC حجم دیتا موجود در دنیا تا سال ۲۰۲۵ به ۱۷۵ زتابایت (۱۰ به‌توان ۲۷ بایت!) افزایش پیدا می‌کند و قسمت عظیمی از آن‌ را تصاویر تشکیل می‌دهند. همین امر نشان‌دهنده اهمیت پردازش تصویر و نیاز با ابزار‌های قویی در این حوزه است. البته این حجم بالا از تصاویر نیاز به روش‌ها و ابزار‌ها قدرتمندی دارد.

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

پردازش تصویر و ویدیو
 ۱۶ نفر  ۱۵ساعت

۱,۰۰۰,۰۰۰ تومان
خرید دوره

تصویر چیست؟

قبل از اینکه سراغ پردازش تصویر با پایتون برویم و وارد این دنیا شویم، نیاز است که تعریفی از خود تصویر داشته باشیم:

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

معمولا پیکسل به یکی از چهار مدل زیر، اطلاعات را در مورد عکس در خود ذخیره می‌کند:

  • مقیاس خاکستری Grayscale: میزان پیکسل در این مدل با عددی صحیح بین ۰ تا ۲۵۵ نشان داده می‌شود. ۲۵۵ کاملا سفید و ۰ کاملا سیاه است.
  • باینری: در این مدل پیکسل‌ها فقط دو مقدار دارند؛ ۰ (نماینده سیاه) و ۱ (نماینده سفید). چنین تصاویری معمولاً برای برجسته کردن بخش متمایزی از یک تصویر رنگی استفاده می‌شوند.
  • RGB: در این مدل هر پیکسل از ۳ عدد صحیح بین ۰ تا ۲۵۵ تشکیل شده است.که در واقع هر عدد شدت رنگ قرمز، سبز و آبی را نشان می‌دهد.
  • RGBA: این حالت، مدل پیشرفته RGB است که یک فیلد آلفا به آن اضافه شده و نشان‌دهنده میزان شفافیت تصویر است.

تعداد پیکسل‌های یک عکس را هم می‌توانید از ارتفاع و عرض آن بفهمید، مثلا، اگر ابعاد تصویری، یعنی عرض و ارتفاعش ۲۰۰ × ۳۰۰ باشد، تعداد کل پیکسل‌های موجود در تصویر ۶۰۰۰۰ است.

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

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

چیزی که ما می‎‌بینیم در مقابل چیزی که کامپیوتر می‎‌بیند:

پردازش تصویر

پردازش تصویر چیست؟

خب حالا که با مفهوم تصویر دیجیتال آشنا شدیم، وقت آن است که بفهمیم پردازش تصویر با پایتون چیست:

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

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

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

مراحل پردازش تصویر

پردازش تصویر با پایتون یا هر زبان دیگری به‌صورت کلی در مراحل زیر انجام می‌شود:

  1. ثبت تصویر: داستان با گرفتن عکس توسط دوربین آغاز می‌شود. سپس اگر خروجی دوربین دیجیتال نباشد، با مبدل آنالوگ به دیجیتال، به فرمت قابل پردازش در کامپیوتر تبدیل می‌شود.
  2. تقویت تصویر: در این مرحله، عکس خام دستکاری می‌شود تا برای هدف نهایی آماده شود. تکنیک‌های این مرحله مثل تنظیم کنتراست و روشنایی، به دنبال برجسته کردن جزئیات پنهان و مهم هستند.
  3. ترمیم تصویر: این مرحله به بهبود ظاهری تصویر اختصاص دارد. برخلاف بخش قبلی، عیوب تصویر قابل مدل‌سازی ریاضی به‌صورت عینی برطرف می‌شوند؛ مثلاً حذف نویز یا تاری از عکس.
  4. پردازش تصویر رنگی: هدف این مرحله پردازش تصاویر رنگی (تصاویر ۱۶ بیتی RGB یا RGBA) است و کارهایی مثل اصلاح یا مدل‌سازی رنگ را انجام می‌دهد.
  5. موجک‌ها و پردازش چند-رزولوشنی: موجک‌ها ابزارهایی هستند که به نمایش تصویر در سطوح مختلف جزئیات کمک می‌کنند. تصویر به قطعه‌های کوچک‌تری تقسیم می‌شود تا فشرده‌تر شود و نمایش جزئیات را ممکن سازد.
  6. فشرده‌سازی تصویر: برای جابجایی تصاویر بین دستگاه‌ها یا به‌خاطر محدودیت‌های حافظه، باید آن‌ها را فشرده کرد. این موضوع در نمایش تصاویر در اینترنت نیز مهم است. به‌عنوان مثال، در گوگل یک تصویر کوچک، نسخه بسیار فشرده شده ورژن اصلی است و تنها زمانی که روی آن‌ها کلیک می‌کنید با وضوح اصلی نشان داده می‌شوند. این فرآیند باعث صرفه جویی در پهنای باند روی سرورها می‌شود.
  7. پردازش مورفولوژیکی: برای پردازش‌های بعدی، لازم است اجزای مهم تصویر استخراج شوند. پردازش مورفولوژیکی (که در واقع عملیات ریاضی است) ابزارهایی برای این کار در اختیار ما قرار می‌دهد. به عنوان مثال، عملیات فرسایش و اتساع به‌ترتیب برای واضح‌کردن و محو‌کردن لبه‌های اجسام در یک تصویر استفاده می‌شود.
  8. قطعه‌بندی تصویر: در این مرحله، تصویر به بخش‌های کلیدی تقسیم می‌شود تا ساده‌تر شده و راحت‌تر قابل تحلیل باشد. این کار باعث می‌شود کامپیوتر روی بخش‌های مهم‌تر تمرکز و عملکرد سیستم‌های خودکار را بهتر کند.
  9. نمایش و توصیف: قطعه‌بندی معمولاً با این مرحله دنبال می‌شود. نمایش به این برمی‌گردد که آیا ناحیه‌ی قطعه‌بندی‌شده را باید خط مرزی در نظر گرفت یا یک ناحیه‌ی کامل. توصیف هم به استخراج ویژگی‌هایی مربوط می‌شود که اطلاعات کوچکی ارائه می‌دهند یا در تمایز بین دو نوع شیء کاربرد دارند.
  10. تشخیص و شناسایی اشیاء: بعد از قطعه‌بندی و تکمیل مراحل نمایش و توصیف، سیستم خودکار باید روی شیء برچسب بزند و به کاربر بگوید چه چیزی را تشخیص داده است؛ مثلاً “ماشین” یا “شخص”.
  11. پایگاه دانش: هر چیزی که به حل مشکل خاص ما کمک کند، می‌تواند در این پایگاه دانش جا داده شود.

چرا باید از پایتون برای پردازش تصویر استفاده کنیم؟

هزاران پروژه پردازش تصویر با پایتون در حوزه‌های مختلف وجود دارد؛ از پزشکی گرفته تا امنیت.

اما چرا افراد ترجیح می‌دهند از این زبان برای پردازش تصویر استفاده کنند؟

  • یادگیری آسان: یکی از دلایل مهم پردازش تصویر با پایتون راحتی این زبان است. پایتون را به راحتی می‌توانید یاد بگیرید و در هر حوزه‌ای استفاده کنید. اگر می‌خواهید بیشتر با این زبان آشنا شوید، مقاله معرفی بهترین کتاب پایتون و راهنمای انتخاب برترین منابع آموزشی را مطالعه کنید.
  • کتابخانه‌های قدرتمند پایتون برای پردازش تصویر: پایتون کتابخانه‌های قدرتمندی مانند OpenCV، NumPy، و Matplotlib دارد که به‌طور خاص برای پردازش تصویر طراحی شده‌اند. تعداد زیادی تابع و ابزار در این کتابخانه‌ها وجود دارد که کار را برای افراد راحت‌تر می‌کند.
  • سرعت بالا پایتون: پایتون زبانی سریع است که می‌تواند برای پردازش تصاویر به‌صورت real-time استفاده شود. همین موضوع این زبان را گزینه‌ای مناسب برای رباتیک و بینایی ماشین تبدیل می‌کند.
  • پایتون رایگان و انعطاف‌پذیر است: این زبان انعطاف‌پذیر است و می‌توان از آن برای طیف وسیعی از وظایف پردازش تصویر استفاده کرد. همچنین به دلیل رایگان بودن، گزینه مناسبی جهت انجام تحقیقات دانشگاهی و علمی است.

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

آموزش پردازش تصویر با پایتون

پردازش تصویر با پایتون از طریق کتابخانه‌های قدرتمند این زبان صورت می‌گیرد که دانستن و آشنایی با آن‌ها ضروری است. 

آشنایی با این کتابخانه‌ها به شما کمک می‌کند تا بتوانید هر‌چه راحت‌تر یک تصویر را پردازش کنید و بدانید برای رسیدن به هدف خاصی از کدام یک استفاده کنید. در ادامه شما را با چند کتابخانه مهم آشنا می‌کنیم و به آموزش پردازش تصویر با پایتون با چند کد ابتدایی در هر کتابخانه می‌پردازیم.

OpenCV

کتابخانه OpenCV یکی از مهم‌ترین و پرکاربرد‌ترین کتابخانه‌ها برای پردازش تصویر با پایتون است. این کتابخانه توسط شرکت قدرتمند Intel در سال ۲۰۰۰ توسعه پیدا کرد و بیشتر در کارهای بینایی کامپیوتری مثل تشخیص اشیا، تشخیص چهره،  تقسیم بندی تصویر و… استفاده می‌شود. یکی از دلایل محبوبیت این کتابخانه به‌دلیل سرعت پالایش است.

پردازش تصویر OpenCV

برای اینکه بیشتر با این کتابخانه آشنا شویم، در ادامه با کمک آن می‌خواهیم یک تصویر را خاکستری کنیم:

import cv2 as cv

import numpy as np

import matplotlib.pyplot as plt

img = cv.imread(‘goku.jpeg’)

gray_image = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

fig, ax = plt.subplots(1, ۲, figsize=(16, ۸))

fig.tight_layout()

ax[0].imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))

ax[0].set_title(“Original”)

ax[1].imshow(cv.cvtColor(gray_image, cv.COLOR_BGR2RGB))

ax[1].set_title(“Grayscale”)

plt.show()

 

Scikit-Image

این کتابخانه یکی از مهمترین ابزار‌های پردازش تصویر است که برای کار‌های مختلفی از جمله تقسیم بندی، تحولات هندسی، دستکاری فضای رنگی، تحلیل و بررسی، فیلتر‌کردن، مرفولوژی و… مناسب است. این کتابخانه با استفاده از الگوریتم‌های کارآمد و با بهره‌گیری از بخش‌هایی به زبان Cython (زبانی نزدیک به پایتون که عملکرد بالایی در حد زبان C ارائه می‌دهد) برای دستیابی به عملکرد بالا، طیف گسترده‌ای از قابلیت‌ها را برای دستکاری و تحلیل تصاویر در اختیار شما قرار می‌دهد.

Scikit-Image این کتابخانه یکی از مهمترین ابزار‌های پردازش تصویر است

نمونه استفاده از این کتابخانه برای مدل‌های کانتور فعال (Active Contour Models) که بخش‌های مختلف یک تصویر را از هم جدا می‌کند:

 

import numpy as np

import matplotlib.pyplot as plt

from skimage.color import rgb2gray

from skimage import data

from skimage.filters import gaussian

from skimage.segmentation import active_contour

img = data.astronaut()

# Data for circular boundary

s = np.linspace(0, ۲*np.pi, ۴۰۰)

x = ۲۲۰ + ۱۰۰*np.cos(s)

y = ۱۰۰ + ۱۰۰*np.sin(s)

init = np.array([x, y]).T

# formation of the active contour

cntr = active_contour(gaussian(img, ۳),init, alpha=0.015, beta=10, gamma=0.001)

fig, ax = plt.subplots(1, ۲, figsize=(7, ۷))

ax[0].imshow(img, cmap=plt.cm.gray)

ax[0].set_title(“Original Image”)

 

ax[1].imshow(img, cmap=plt.cm.gray)

# circular boundary

ax[1].plot(init[:, ۰], init[:, ۱], ‘–r’, lw=3)

ax[1].plot(cntr[:, ۰], cntr[:, ۱], ‘-b’, lw=3)

ax[1].set_title(“Active Contour Image”)

SciPy

اگرچه SciPy بیشتر برای محاسبات ریاضی و علمی شناخته شده است، اما با استفاده از زیرمجموعه scipy.ndimage، می‌تواند پردازش تصویر چندبعدی را هم انجام دهد. این زیرمجموعه توابعی را برای کار با آرایه‌های چندبعدی NumPy ارائه می‌دهد که تصاویر هم آرایه‌های چند‌بعدی هستند.

پردازش تصویر چیست؟

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

بلور کردن یک تصویر با استفاده از SciPy :

from scipy import misc,ndimage

from matplotlib import pyplot as plt

 

face = misc.face()

blurred_face = ndimage.gaussian_filter(face, sigma=3)

 

fig, ax = plt.subplots(1, ۲, figsize=(16, ۸))

 

ax[0].imshow(face)

ax[0].set_title(“Original Image”)

ax[0].set_xticks([])

ax[0].set_yticks([])

ax[1].imshow(blurred_face)

ax[1].set_title(“Blurred Image”)

ax[1].set_xticks([])

ax[1].set_yticks([])

گفت‌وگوی آنلاین آشنایی با ChatGPT و کاربردهای آن
 ۴۶۲۱ نفر  ۱ساعت

۰ تومان
خرید دوره

Pillow/PIL

کتابخانه‌ی (PIL (Python Imaging Library یک ابزار متن باز و رایگان برای انجام کارهای مختلف روی تصاویر است. با PIL می‌توانید کارهای متنوعی مثل خواندن تصویر، تغییر اندازه، ذخیره‌سازی در فرمت‌های مختلف، چرخش و آینه‌سازی و اعمال فیلترهای ترسیم روی تصویر انجام دهید. 

ورودی

Pillow/PIL کتابخانه‌ی (PIL (Python Imaging Library یک ابزار متن باز و رایگان برای انجام کارهای مختلف روی تصاویر است.

خروجی

Pillow/PIL کتابخانه‌ی (PIL (Python Imaging Library یک ابزار متن باز و رایگان برای انجام کارهای مختلف روی تصاویر است.

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

from PIL import Image, ImageFilter

#Read image

im = Image.open(‘cat_inpainted.png’)

#Display image

im.show()

from PIL import ImageEnhance

enh = ImageEnhance.Contrast(im)

enh.enhance(1.8).show(“30% more contrast”)

 

NumPy

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

کتابخانه NumPy که عملیات زیادی روی آرایه‌ها انجام می‌دهد

برای مثال برای استخراج کانال های قرمز/سبز/آبی از تصویر زیر از این کد استفاده می‌کنیم:

from PIL import Image

import numpy as np

im = np.array(Image.open(‘goku.png’))

im_R = im.copy()

im_R[:, :, (1, ۲)] = ۰

im_G = im.copy()

im_G[:, :, (0, ۲)] = ۰

im_B = im.copy()

im_B[:, :, (0, ۱)] = ۰

im_RGB = np.concatenate((im_R, im_G, im_B), axis=1)

pil_img = Image.fromarray(im_RGB)

pil_img.save(‘goku.jpg’)

 

Mahotas

این کتابخانه یکی دیگر از کتابخانه‌های پردازش تصویر و بینایی کامپیوتری است که به‌طور خاص برای انفورماتیک تصویر زیستی طراحی شده است. Mahotas از آرایه‌های Numpy برای خواندن و نوشتن و از زبان ++C برای پیاده‌سازی استفاده می‌کند.

Mahotas این کتابخانه یکی دیگر از کتابخانه‌های پردازش تصویر و بینایی کامپیوتری است که به‌طور خاص برای انفورماتیک تصویر زیستی طراحی شده است.

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

from pylab import imshow, show

import mahotas

import mahotas.demos

import numpy as np

wally = mahotas.demos.load(‘Wally’)

wfloat = wally.astype(float)

r,g,b = wfloat.transpose((2,0,1))

w = wfloat.mean(2)

pattern = np.ones((24,16), float)

for i in range(2):

    pattern[i::4] = -۱

    v = mahotas.convolve(r-w, pattern)

    mask = (v == v.max())

    mask = mahotas.dilate(mask, np.ones((48,24)))

    np.subtract(wally, .۸*wally * ~mask[:,:,None], out=wally, casting=’unsafe’)

imshow(wally)

show()

SimpleITK

ITK که مخفف Insight Segmentation and Registration Toolkit است، یک پلتفرم منبع باز قدرتمند و پرکاربرد برای تشخیص و هم‌ترازی تصاویر می‌باشد. این ابزار برای دو هدف اصلی به کار می‌رود:

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

 

Pgmagick

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

بلور کردن عکس با استفاده از این کتابخانه:

from pgmagick.api import Image

img = Image(‘leena.jpeg’)

# blur image 

img.blur(10, ۵)

یادگیری عمیق
 ۷۲۷ نفر  ۱۱ساعت

۷۰۰,۰۰۰ تومان
خرید دوره

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

یادگیری پردازش تصویر از راه‌های مختلفی امکان پذیر است؛ از کتاب پردازش تصویر با پایتون گرفته تا سایت‌های آموزشی مختلف. اما بهترین روش چیست؟

بهترین راه یادگیری این علم می‌تواند با توجه به روش‌ یادگیری هر فرد متفاوت باشد، اما برای اکثر افراد دوره پردازش تصویر با پایتون یک انتخاب مناسب است. ولی هر دوره‌ای می‌تواند پاسخگو نیاز‌های ما باشد؟ قطعا جواب «نه» است! دوره‌ای که انتخاب می‌کنید باید مربی داشته باشد که در این حوزه تجربه داشته و مباحث را به‌صورت جامع تدریس کند، پاسخگو سوالات‌تان باشد و مدرک معتبری به شما ارائه دهد.

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

در این دوره پس از آشنایی با مفاهیم اولیه و پایه، فیلترهای مورد نیاز برای کارهای مختلف پردازشی را یاد گرفته و سپس عناوین دیگری مثل ادغام چند تصویر، نمایش تصویر به کمک هرم‌های پردازش و فشرده‌سازی مدیا آشنایی کامل پیدا می‌کنید.

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

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

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

تعداد بازدید: ۱۲۰۷
موضوعات داغ

دوره‌های مرتبط

مقالات مرتبط