هر تصویر داستانی خاص برای خود دارد که پردازش و گرفتن اطلاعات مفید آن میتواند حتی جان افراد را نجات دهد! با پردازش درست تصویری پزشکی یا تشخیص چهره یک تروریست، میتوان جان میلیونها نفر را در سراسر جهان نجات داد!
به گفته IDC حجم دیتا موجود در دنیا تا سال ۲۰۲۵ به ۱۷۵ زتابایت (۱۰ بهتوان ۲۷ بایت!) افزایش پیدا میکند و قسمت عظیمی از آن را تصاویر تشکیل میدهند. همین امر نشاندهنده اهمیت پردازش تصویر و نیاز با ابزارهای قویی در این حوزه است. البته این حجم بالا از تصاویر نیاز به روشها و ابزارها قدرتمندی دارد.
پردازش تصویر با پایتون یکی از بهترین راههایی است که میتوان از آن برای سروکله زدن با تعداد زیادی از این عکسها استفاده کرد. در این مقاله با مفهوم پردازش تصویر آشنا میشویم و سپس بهترین کتابخانههایش را معرفی میکنیم.
قبل از اینکه سراغ پردازش تصویر با پایتون برویم و وارد این دنیا شویم، نیاز است که تعریفی از خود تصویر داشته باشیم:
یک تصویر از تعدادی پیکسل تشکیل شده که هر کدام از آنها حاوی اطلاعاتی مثل سایه، میزان تیرگی و روشنی و رنگ خاصی در مورد آن عکس است.
معمولا پیکسل به یکی از چهار مدل زیر، اطلاعات را در مورد عکس در خود ذخیره میکند:
تعداد پیکسلهای یک عکس را هم میتوانید از ارتفاع و عرض آن بفهمید، مثلا، اگر ابعاد تصویری، یعنی عرض و ارتفاعش ۲۰۰ × ۳۰۰ باشد، تعداد کل پیکسلهای موجود در تصویر ۶۰۰۰۰ است.
کامپیوترها تصاویر دیجیتال را به عنوان آرایههای دو یا سه بعدی از اعداد درک میکنند. یک تصویر دیجیتال را میتوان مثل صفحه شطرنج تصور کرد. هر مربع در صفحه شطرنج یک پیکسل است.
پس در واقع تصویر دیجیتال، آرایهای پیکسلها (که به یکی از چهار مدل بالا مقداردهی شده) است که در ستون و ردیفهای مختلف، مرتب شدهاند.
چیزی که ما میبینیم در مقابل چیزی که کامپیوتر میبیند:
خب حالا که با مفهوم تصویر دیجیتال آشنا شدیم، وقت آن است که بفهمیم پردازش تصویر با پایتون چیست:
پردازش تصویر، به مجموعه ای از روشها و تکنیکها گفته میشود که برای دستکاری و تحلیل تصاویر دیجیتال انجام میشود.
همانطور که از اسمش پیداست، پردازش تصویر به معنای انجام عملیات روی تصویر است و از تکنیکهای مختلفی تا رسیدن به هدف نهایی (مثل وقتی که بخواهیم تصویر را به فرمت دیجیتال تبدیل کنیم، روی آن فیلترهای مختلفی اعمال کنیم، ویژگیهای خاصی را از آن استخراج کنیم و یا حتی تصاویر جدیدی را با استفاده از آن بسازیم) استفاده میکند.
در پردازش تصویر، با عکس بهصورت سیگنال دو بعدی رفتار شده و عملیات و متندهای سیگنال روی آن اعمال میشود.
پردازش تصویر با پایتون یا هر زبان دیگری بهصورت کلی در مراحل زیر انجام میشود:
هزاران پروژه پردازش تصویر با پایتون در حوزههای مختلف وجود دارد؛ از پزشکی گرفته تا امنیت.
اما چرا افراد ترجیح میدهند از این زبان برای پردازش تصویر استفاده کنند؟
بعد از اینکه فهمیدیم چرا پایتون برای پردازش تصویر گزینه خوبی است، قصد داریم در ادامه آموزش پردازش تصویر با پایتون رایگان را باهم دنبال کنیم.
پردازش تصویر با پایتون از طریق کتابخانههای قدرتمند این زبان صورت میگیرد که دانستن و آشنایی با آنها ضروری است.
آشنایی با این کتابخانهها به شما کمک میکند تا بتوانید هرچه راحتتر یک تصویر را پردازش کنید و بدانید برای رسیدن به هدف خاصی از کدام یک استفاده کنید. در ادامه شما را با چند کتابخانه مهم آشنا میکنیم و به آموزش پردازش تصویر با پایتون با چند کد ابتدایی در هر کتابخانه میپردازیم.
کتابخانه OpenCV یکی از مهمترین و پرکاربردترین کتابخانهها برای پردازش تصویر با پایتون است. این کتابخانه توسط شرکت قدرتمند Intel در سال ۲۰۰۰ توسعه پیدا کرد و بیشتر در کارهای بینایی کامپیوتری مثل تشخیص اشیا، تشخیص چهره، تقسیم بندی تصویر و… استفاده میشود. یکی از دلایل محبوبیت این کتابخانه بهدلیل سرعت پالایش است.
برای اینکه بیشتر با این کتابخانه آشنا شویم، در ادامه با کمک آن میخواهیم یک تصویر را خاکستری کنیم:
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()
این کتابخانه یکی از مهمترین ابزارهای پردازش تصویر است که برای کارهای مختلفی از جمله تقسیم بندی، تحولات هندسی، دستکاری فضای رنگی، تحلیل و بررسی، فیلترکردن، مرفولوژی و… مناسب است. این کتابخانه با استفاده از الگوریتمهای کارآمد و با بهرهگیری از بخشهایی به زبان Cython (زبانی نزدیک به پایتون که عملکرد بالایی در حد زبان C ارائه میدهد) برای دستیابی به عملکرد بالا، طیف گستردهای از قابلیتها را برای دستکاری و تحلیل تصاویر در اختیار شما قرار میدهد.
نمونه استفاده از این کتابخانه برای مدلهای کانتور فعال (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.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([])
کتابخانهی (PIL (Python Imaging Library یک ابزار متن باز و رایگان برای انجام کارهای مختلف روی تصاویر است. با PIL میتوانید کارهای متنوعی مثل خواندن تصویر، تغییر اندازه، ذخیرهسازی در فرمتهای مختلف، چرخش و آینهسازی و اعمال فیلترهای ترسیم روی تصویر انجام دهید.
ورودی
خروجی
روش بالا بردن کیفیت تصویر با استفاده از این کتابخانه:
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 که عملیات زیادی روی آرایهها انجام میدهد به راحتی میتواند کارهایی مانند برش تصویر، ماسک کردن و دستکاری مقادیر پیکسل را ممکن سازد.
برای مثال برای استخراج کانال های قرمز/سبز/آبی از تصویر زیر از این کد استفاده میکنیم:
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 از آرایههای Numpy برای خواندن و نوشتن و از زبان ++C برای پیادهسازی استفاده میکند.
با کمک کد زیر میتوان کسی را بین جمعیت پیدا کرد:
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()
ITK که مخفف Insight Segmentation and Registration Toolkit است، یک پلتفرم منبع باز قدرتمند و پرکاربرد برای تشخیص و همترازی تصاویر میباشد. این ابزار برای دو هدف اصلی به کار میرود:
این ابزار یکی دیگر از ابزارهای قدرتمند پایتون است که برای اهدافی مثل تغییر اندازه، چرخش، شارپ کردن، تصاویر گرادیان و نوشتن متن روی عکس استفاده میشود.
بلور کردن عکس با استفاده از این کتابخانه:
from pgmagick.api import Image
img = Image(‘leena.jpeg’)
# blur image
img.blur(10, ۵)
یادگیری پردازش تصویر از راههای مختلفی امکان پذیر است؛ از کتاب پردازش تصویر با پایتون گرفته تا سایتهای آموزشی مختلف. اما بهترین روش چیست؟
بهترین راه یادگیری این علم میتواند با توجه به روش یادگیری هر فرد متفاوت باشد، اما برای اکثر افراد دوره پردازش تصویر با پایتون یک انتخاب مناسب است. ولی هر دورهای میتواند پاسخگو نیازهای ما باشد؟ قطعا جواب «نه» است! دورهای که انتخاب میکنید باید مربی داشته باشد که در این حوزه تجربه داشته و مباحث را بهصورت جامع تدریس کند، پاسخگو سوالاتتان باشد و مدرک معتبری به شما ارائه دهد.
اگر دنبال چنین دورهای میگردید، پیشنهاد ما به شما دوره پردازش تصویر و ویدیو آکادمی همراه است. با این آموزش، شما میتوانید به راحتی، دادههای بصری را به شکلی خلاقانه ویرایش کنید.
در این دوره پس از آشنایی با مفاهیم اولیه و پایه، فیلترهای مورد نیاز برای کارهای مختلف پردازشی را یاد گرفته و سپس عناوین دیگری مثل ادغام چند تصویر، نمایش تصویر به کمک هرمهای پردازش و فشردهسازی مدیا آشنایی کامل پیدا میکنید.
در سالهای اخیر، هوش مصنوعی پیشرفتهای زیادی داشته است، اما جدیدترین پروژه ایلان ماسک به نام هوش مصنوعی گروک یا همان Grok AI وعدهای برای تغییر چشمانداز این حوزه است. هوش مصنوعی گروک grok یک دستیار هوش مصنوعی است که توسط xAI (شرکت ایلان ماسک) توسعه یافته و بهطور عمیق با پلتفرم X (که قبلاً […]
در دنیای امروز، ظهور دستیارهای همهکارهی جدید مبتنی بر هوش مصنوعی مثل دیپسیک ( DeepSeek ) یا چتجیپیتی ( ChatGPT ) به یکی از داغترین موضوعات روز تبدیل شده. طوری که شاید به نظر برسد پیشرفت و دگرگونیهای انقلابی این فناوری به دنیای فیلمهای علمیتخیلی تعلق دارد، اما واقعیت این است که هوش مصنوعی در حال حاضر […]
اگر تا به حال در حوزه تولید محتوای گرافیکی و تصویری کار کرده باشید، حتماً بارها برایتان پیش آمده که وقت زیادی را صرف طراحی یا ویرایش عکسها کنید اما نتیجه نهایی آن چیزی نبوده که انتظار داشتید. این روزها که سرعت تولید و طراحی در دنیای دیجیتال حرف اول را میزند، تولید محتوا با […]
دنیای شگفتانگیز امروز، عصر هوش مصنوعی است و تکنولوژیهایی که تا دیروز در فیلمهای علمی تخیلی دیده میشدند، امروز به بخش جداییناپذیری از زندگی روزمرهمان تبدیل شدهاند. از دستیارهای صوتی که حتی صدای ما را میشناسند و خواستههایمان را پیشبینی میکنند تا خودروهایی که بدون نیاز به راننده، به راحتی خود را به مقصد میرسانند. […]
مفهوم دیپ لرنینگ یا همان «یادگیری عمیق» برای خیلی از سوالات ما، اعم از اینکه چگونه ماشینها میتوانند بدون نیاز به انسان یاد بگیرند و کارهایی را انجام دهند، جوابی قانع کننده دارد. یادگیری عمیق نوعی هوش مصنوعی است که از رایانه برای یادگیری از دادهها استفاده میکند. در واقع با الگوریتمهای دیپ لرنینگ ماشین میتواند یاد […]
در نوامبر ۲۰۲۲، آزمایشگاه هوش مصنوعی OpenAI مستقر در سانفرانسیسکو، رباتی را به نام Chat GPT به جهانیان معرفی کرد؛ یک چتبات هوش مصنوعی که بهسرعت تبدیل به ترند این روزها شد و علاقه مردم در سراسر جهان را به خود جلب کرد. Chat GPT به برنامهای تبدیل شد که سرعت رشد آن زبانزد خاص و عام […]
آکادمی همراه اول با هدف تربیت، توسعه و توانمندسازی نیروی انسانی در اکوسیستم دیجیتال در تابستان ۹۹ آغاز به کار کرده است. آکادمی به پشتوانهی تجربهی آموزش و توسعهی نیروی انسانی همراهاول میکوشد نیازهای آموزشی عمومی، تخصصی و شکاف میان تحصیلات آکادمیک و فضای کار بابرگزاری مسیرهای شغلی از جمله هوش مصنوعی، تحلیل گر داده ، کارشناس محصول و … پوشش دهد.