هر تصویر داستانی خاص برای خود دارد که پردازش و گرفتن اطلاعات مفید آن میتواند حتی جان افراد را نجات دهد! با پردازش درست تصویری پزشکی یا تشخیص چهره یک تروریست، میتوان جان میلیونها نفر را در سراسر جهان نجات داد!
به گفته 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, ۵)
یادگیری پردازش تصویر از راههای مختلفی امکان پذیر است؛ از کتاب پردازش تصویر با پایتون گرفته تا سایتهای آموزشی مختلف. اما بهترین روش چیست؟
بهترین راه یادگیری این علم میتواند با توجه به روش یادگیری هر فرد متفاوت باشد، اما برای اکثر افراد دوره پردازش تصویر با پایتون یک انتخاب مناسب است. ولی هر دورهای میتواند پاسخگو نیازهای ما باشد؟ قطعا جواب «نه» است! دورهای که انتخاب میکنید باید مربی داشته باشد که در این حوزه تجربه داشته و مباحث را بهصورت جامع تدریس کند، پاسخگو سوالاتتان باشد و مدرک معتبری به شما ارائه دهد.
اگر دنبال چنین دورهای میگردید، پیشنهاد ما به شما دوره پردازش تصویر و ویدیو آکادمی همراه است. با این آموزش، شما میتوانید به راحتی، دادههای بصری را به شکلی خلاقانه ویرایش کنید.
در این دوره پس از آشنایی با مفاهیم اولیه و پایه، فیلترهای مورد نیاز برای کارهای مختلف پردازشی را یاد گرفته و سپس عناوین دیگری مثل ادغام چند تصویر، نمایش تصویر به کمک هرمهای پردازش و فشردهسازی مدیا آشنایی کامل پیدا میکنید.

پرامپت نویسی مهارتی ضروری برای بقا در عصر هوش مصنوعی و ماشین لرنینگ به حساب میآید. باید بپذیریم که بسیاری از مشاغل با توسعه هوش مصنوعی تحت تاثیر قرار گرفتهاند و بدون آموزش پرامپت نویسی نمیتوانید انتظار خروجی مناسبی از مدلهای هوش مصنوعی داشته باشید. پرامپتنویسی، در واقع هنر گفتگو و آموزش به هوش مصنوعی است و تهدید بالقوه […]

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

تصور کنید قرار است مقالهای حرفهای بنویسید. تا قبل از ظهور هوش مصنوعی، یک تولیدکننده محتوا برای نوشتن مقاله باید زمان زیادی را صرف پیدا کردن منبع معتبر، ترجمه، بازنویسی و ویرایش میکرد. برای مقالات آکادمیک هم ماهها تحقیق در کتابخانه و یادداشتبرداری در انتظار دانشجو بود. امروزه این کار تنها با چند کلیک و […]

در زمانی به سر میبریم که هوش مصنوعی اغلب کارهای انسانی را بهمراتب سادهتر کرده است. برای مثال هوش مصنوعی درست کردن پاورپوینت با بهرهگیری از یادگیری ماشین، بسیاری از کارهای زمانبر مثل تولید محتوا، پیشنهاد طراحی و ادغام رسانه را خودکار کرده است . به همین دلیل چه یک دانشجو باشید، چه مارکتر و […]

هوش مصنوعی Designs.ai ابزاری است که قواعد بازی در دنیای طراحی دیجیتال را تغییر داده است. با این پلتفرم، دیگر نیازی به مهارتهای پیچیده یا تیمهای بزرگ ندارید؛ کافیست ایده خود را وارد کنید تا این هوش مصنوعی، لوگو، موکاپ، ویدیو، گرافیک و حتی صدا را برای شما بسازد. این اکوسیستم یکپارچه، فرآیند خلاقیت را سریع، […]

هوش مصنوعی Runway یکی از قدرتمندترین ابزارهای خلاقانه در دنیای امروز است که مرزهای تولید محتوا را دگرگون کرده است. تا همین چند سال پیش، ساخت یک ویدیوی حرفهای نیازمند یک تیم کامل، روزها فیلمبرداری با تجهیزات گرانقیمت و ساعتها ویرایش در نرمافزارهای پیچیده بود؛ فرآیندی زمانبر و پرهزینه که اغلب مانع تحقق ایدهها میشد. اما اکنون، […]