پردازش تصویر در پایتون از 0 تا 100 با 12 درس+ PDF رایگان
کار با تصاویر بخش مهمی از بسیاری از راهحلهای فناوری امروز است. بیشتر توسعهدهندگان موافقند که پردازش تصاویر در پایتون در ابتدا میتواند چالشبرانگیز باشد.
این مقاله یک راهنمای گامبهگام برای تسلط بر پردازش تصویر در پایتون ارائه خواهد داد. شما با اصول اولیه، تکنیکهای ضروری و حتی روشهای پیشرفته برای ساخت برنامههای واقعی پردازش تصویر آشنا خواهید شد.
ما از تنظیم محیط پایتون تا دستکاری، بهبود و تقسیمبندی تصاویر را پوشش خواهیم داد. همچنین نحوه توسعه پروژههایی برای طبقهبندی، تشخیص و حتی ساخت یک موتور جستجوی تصویر را خواهید دید. در پایان، مهارتهای لازم برای انجام هر گونه کار پردازش تصویر در پایتون را خواهید داشت.
مقدمهای بر پردازش تصویر با پایتون
پردازش تصویر به مجموعهای از تکنیکها اطلاق میشود که به رایانهها اجازه میدهد تصاویر دیجیتال را درک و اصلاح کنند. این شامل تجزیه و تحلیل اطلاعات پیکسلی برای انجام عملیاتی مانند شناسایی اشیا، تشخیص لبهها، تنظیم روشنایی/کنتراست، اعمال فیلترها، شناسایی متن و غیره است.
پایتون به دلیل کتابخانههای گسترده، سینتکس ساده و جامعه فعال توسعهدهندگان، زبان محبوبی برای پردازش تصویر است. کتابخانههای کلیدی مانند OpenCV، PIL/Pillow، scikitimage و سایر کتابخانهها امکان کار با تصاویر را در پایتون فراهم میکنند.
درک اصول پردازش تصویر
پردازش تصویر بر تحلیل دادههای پیکسلی از تصاویر دیجیتال برای شناسایی و اصلاح عناصر درون آنها تکیه دارد. مفاهیم کلیدی شامل موارد زیر است:
- دریافت تصویر: گرفتن یا وارد کردن تصاویر از طریق دوربینها، اسکنرها و غیره.
- پیشپردازش: تغییر تصاویر قبل از تحلیل (تغییر اندازه، چرخش، حذف نویز و غیره).
- تشخیص ویژگیها: شناسایی پیکسلها/نواحی مورد علاقه مانند لبهها، گوشهها یا اشیا.
- تحلیل: استخراج اطلاعات معنادار از تصاویر با استفاده از ویژگیهای شناسایی شده.
- دستکاری: تغییر تصاویر بر اساس اطلاعات استخراج شده (فیلتر کردن، تغییر شکل و غیره).
مزایای پایتون در پردازش تصویر
پایتون به دلایل زیر زبان ترجیحی برای پردازش تصویر است:
- کتابخانههای گستردهای مانند OpenCV، PIL/Pillow، scikitimage و غیره که عملکردهای تخصصی ارائه میدهند.
- کد ساده و قابل خواندن به دلیل سینتکس تمیز آن.
- سهولت در یادگیری برای مبتدیان.
- جامعه پویا از توسعهدهندگان که نمونههای کد فراوان و پشتیبانی از رفع اشکال ارائه میدهد.
- قابلیت تعامل با زبانهایی مانند ++C برای عملیاتهای حساس به عملکرد.
- امکان نمونهسازی سریع به دلیل طبیعت تفسیری پایتون.
مروری بر کتابخانههای پردازش تصویر در پایتون
برخی از کتابخانههای کلیدی پردازش تصویر در پایتون شامل موارد زیر است:
- OpenCV: کتابخانه جامع با بیش از ۲۵۰۰ الگوریتم از تشخیص چهره تا تحلیل شکل.
- PIL/Pillow: ارائهدهنده امکانات پایه برای مدیریت و پردازش تصویر.
- scikitimage: پیادهسازی الگوریتمهایی برای تقسیمبندی، فیلتر کردن، تشخیص ویژگی و غیره.
- Mahotas: کتابخانه تخصصی برای عملیاتهای بینایی کامپیوتری.
- SimpleCV: ارائهدهنده یک رابط کاربری ساده به OpenCV برای نمونهسازی سریع.
با این کتابخانههای بالغ، پایتون انتخابی عالی برای توسعه برنامههای پردازش تصویر و بینایی کامپیوتر است.
چگونه پردازش تصویر را در پایتون آغاز کنم؟
برای شروع پردازش تصویر در پایتون، مراحل کلیدی زیر را دنبال کنید:
- وارد کردن کتابخانههای مورد نیاز کتابخانه اصلی که برای پردازش تصویر در پایتون استفاده میشود OpenCV (کتابخانه منبعباز بینایی کامپیوتر) است. کتابخانههای مفید دیگر شامل scikitimage، Pillow، matplotlib و غیره هستند.
import cv2
import numpy as np
from skimage. io import imread
import matplotlib. pyplot as plt
بارگذاری تصویر
برای بارگذاری تصاویر در پایتون، میتوانید از تابع ()imread از کتابخانهی scikitimage یا cv2.() imread از OpenCV استفاده کنید.
img = imread('image. jpg')
انجام تکنیکهای پردازش تصویر
تکنیکهای بسیاری در پردازش تصویر وجود دارد مانند محو کردن، تیز کردن، آستانهگذاری، فیلتر کردن، تشخیص لبهها و غیره که میتوان آنها را اعمال کرد.
برای مثال، برای تبدیل یک تصویر به حالت خاکستری:
gray_img = cv2. cvtColor(img, cv2. COLOR_BGR2GRAY)
ذخیره/نمایش نتیجه
برای نمایش تصاویر میتوانید از matplotlib استفاده کنید. برای ذخیره تصاویر پردازششده، از cv2. imwrite() استفاده کنید.
plt. imshow(gray_img, cmap='gray')
plt. show()
cv2. imwrite('gray_image. jpg', gray_img)
این مراحل، روند اولیه برای بارگذاری، پردازش و نمایش تصاویر در پایتون را پوشش میدهد. برای عملیاتهای بیشتر پردازش تصویر، مستندات OpenCV و scikitimage را بررسی کنید.
آیا پردازش تصویر با پایتون آسان است؟
پایتون با ارائه کتابخانههای گسترده و توابع آماده، پردازش تصویر را بسیار دسترسپذیر کرده است. به عنوان مثال، کتابخانه OpenCV بیش از 500 تابع برای وظایف رایج پردازش تصویر مانند:
- تغییر اندازه و چرخش تصویر
- محو کردن و تیز کردن
- تشخیص لبهها
- تشخیص اشیا
نیازی نیست که این توابع را از ابتدا بنویسید تنها کافی است تابع مورد نظر را فراخوانی کرده و تصویر خود را وارد کنید. این باعث میشود توسعه سریعتر از زبانهای سطح پایین مانند ++C باشد.
در اینجا یک مثال ساده برای تغییر اندازه یک تصویر با OpenCV در 5 خط کد پایتون آورده شده است:
import cv2
img = cv2. imread('image. jpg')
resized = cv2. resize(img, (100, 100))
cv2. imwrite('resized. jpg', resized)
بنابراین، در حالی که شما هنوز به دانش برنامهنویسی نیاز دارید، پایتون و کتابخانههایی مانند OpenCV، scikitimage و Pillow انجام وظایف پردازش تصویر را برای توسعهدهندگان در هر سطحی ساده میکنند.
مزایای کلیدی شامل:
- سینتکس ساده و خوانا
- کتابخانههای گسترده برای وظایف رایج
- توابع سطح بالا به جای کدنویسی از ابتدا
- نمونهسازی و توسعه سریع
این ویژگیها پایتون را به یک انتخاب محبوب برای بینایی کامپیوتر و پردازش تصویر تبدیل میکنند.
۲۰ نکته کدنویسی پایتون و ترفندهایی که نمی دانید (مقدماتی-پیشرفته)
ابزار پایتون برای پردازش تصویر چیست؟
Pillow ،که به عنوان PIL نیز شناخته میشود، پرکاربردترین کتابخانه پایتون برای پردازش تصویر است. نکات کلیدی درباره Pillow:
- کتابخانه متنباز که بر روی PIL (کتابخانه تصویر پایتون) ساخته شده است که دیگر توسعه نمییابد.
- پشتیبانی گسترده از فرمتهای مختلف تصویر مانند JPEG، PNG، GIF، BMP و TIFF.
- مفید برای وظایف پایهای دستکاری تصویر مانند تغییر اندازه، برش، چرخش، محو کردن و غیره.
- دارای قابلیتهای بهبود تصویر مانند تنظیم کنتراست، تیز کردن، تبدیل فضای رنگ و غیره.
- پشتیبانی از ایجاد بندانگشتیها، اعمال فیلترها، کشیدن اشکال و نوشتن متن بر روی تصاویر.
- ادغام خوب با کتابخانههای محبوب تحلیل دادههای پایتون مانند NumPy و SciPy.
به طور خلاصه، Pillow یک ابزار همهکاره برای بارگذاری، دستکاری و ذخیره تصاویر برای کاربردهای مختلف با استفاده از پایتون ارائه میدهد. API ساده آن، بلوغ به عنوان یک کتابخانه و ادغام با NumPy، آن را به یک انتخاب مناسب برای توسعهدهندگانی که به دنبال افزودن قابلیتهای پردازش تصویر به برنامههای پایتون خود هستند تبدیل میکند.
کدام الگوریتم برای پردازش تصویر در پایتون استفاده میشود؟
پایتون دارای چندین الگوریتم و کتابخانه است که برای وظایف پردازش تصویر بهطور گستردهای استفاده میشوند. برخی از محبوبترین گزینهها عبارتند از:
- SciPy: این کتابخانه محاسبات علمی شامل ماژولهایی برای پردازش تصویر مانند مورفولوژی باینری، فیلتر کردن، درونیابی و غیره است. مفید برای وظایفی مانند بهبود تصویر، بازسازی و تقسیمبندی.
- OpenCV: کتابخانه OpenCV بهطور گستردهای برای بینایی کامپیوتر و پردازش تصویر استفاده میشود. این کتابخانه الگوریتمهایی برای وظایفی از قبیل تشخیص چهره تا چسباندن تصاویر ارائه میدهد. مناسب برای تشخیص اشیا، طبقهبندی و ردیابی.
- scikitimage: همچنین به عنوان skimage شناخته میشود، این کتابخانه بهطور خاص بر پردازش تصویر متمرکز است. دارای ابزارهایی برای تقسیمبندی، حذف نویز، استخراج ویژگی، ثبت و موارد دیگر است. استفاده آسان و ادغام با جریانهای کاری یادگیری ماشین.
- Pillow : Pillow یک کتابخانه تصویر محبوب پایتون است که برای دستکاریهای پایهای تصویر مانند تغییر اندازه، برش، فیلتر کردن، تبدیل فضای رنگ و غیره استفاده میشود. مناسب برای آمادهسازی تصاویر برای ورودی/خروجی.
بنابراین بهطور خلاصه، SciPy و scikitimage برای تحلیل علمی تصویر مناسب هستند در حالی که OpenCV بر بینایی کامپیوتر تمرکز دارد. Pillow توابع عمومی برای کار با تصویر را فراهم میکند. انتخاب بین این کتابخانهها به وظیفهی خاص شما بستگی دارد طبقهبندی، شناسایی اشیا، بهبود و غیره. اما همهی این کتابخانهها یکدیگر را تکمیل میکنند.
آمادهسازی محیط پردازش تصویر پایتون
نصب پایتون و PIP برای پردازش تصویر
برای شروع پردازش تصویر در پایتون، نیاز دارید که پایتون و PIP (مدیر بسته پایتون) را بر روی سیستم خود نصب کنید. در اینجا دستورالعملهای مرحله به مرحله برای نصب آورده شده است:
- آخرین نسخه پایتون را از org دانلود کنید. مطمئن شوید که نسخه 3. 6 یا بالاتر را دانلود میکنید.
- از جادوگر نصب پیروی کنید و هر تنظیمی را که لازم است سفارشی کنید. مطمئن شوید که پایتون به PATH سیستم شما اضافه شده است.
- یک پنجره جدید خط فرمان باز کنید و pip version را اجرا کنید تا تایید کنید که PIP با پایتون نصب شده است. اگر نصب نشده بود، آن را از این صفحه نصب کنید.
پس از نصب پایتون و PIP، شما محیط پایه را برای کتابخانههای پردازش تصویر آماده کردهاید.
نصب کتابخانههای ضروری پردازش تصویر پایتون
کتابخانههای اصلی که استفاده خواهیم کرد عبارتند از:
- OpenCV: برای عملیاتهای اصلی پردازش تصویر
- NumPy: ارائهدهنده ساختارهای داده آرایه چند بعدی
- SciPy: برای محاسبات علمی و قابلیتهای محاسبات فنی
- Pillow: افزودن پشتیبانی برای خواندن/نوشتن فایلهای تصویر
برای نصب آنها:
- در خط فرمان اجرا کنید: pip install opencvpython
- اجرا کنید: pip install numpy scipy
- اجرا کنید: pip install pillow
این دستورها نسخههای جدید و مهم این کتابخانهها را دانلود و نصب خواهند کرد.
کتابخانههای اختیاری مفید دیگر مانند scikitimage، Mahotas، SimpleITK را نیز میتوانید از طریق PIP نصب کنید.
آموزش کامل هوش مصنوعی: آموزش هوش مصنوعی از صفر تا صد با 14 درس+ جزوه
وارد کردن کتابخانهها برای پردازش تصویر در پایتون
پس از نصب کتابخانهها، میتوانیم آنها را به اسکریپتهای پایتون خود وارد کنیم.
import cv2
import numpy as np
from PIL import Image
import scipy. ndimage
ما از نام مستعار مانند cv2 برای OpenCV و np برای NumPy استفاده میکنیم تا کدنویسی بعدی را سادهتر کنیم.
اکنون محیط آماده است برای بارگذاری تصاویر، اعمال فیلترها، تبدیلها و اجرای الگوریتمهای تحلیلی!
اصول کار با تصاویر در پایتون
پایتون چندین کتابخانه قدرتمند برای پردازش تصویر ارائه میدهد، از جمله OpenCV، PIL/Pillow، و scikitimage. درک این کتابخانهها و قابلیتهای آنها برای مدیریت و دستکاری تصاویر در پایتون بسیار مهم است.
بارگذاری و مدیریت تصاویر با OpenCV و PIL
OpenCV:
برای بارگذاری یک تصویر با استفاده از OpenCV، از تابع `cv2.() imread` استفاده میکنیم. این تابع تصویر را به صورت یک آرایه NumPy بارگذاری میکند.
import cv2
img = cv2. imread('image. jpg')
PIL/Pillow:
در PIL (Pillow)، از متد `Image.() open` برای بارگذاری یک تصویر به عنوان یک شیء PIL Image استفاده میکنیم.
from PIL import Image
img = Image. open('image. jpg')
ویژگیهای کلیدی:
- shape: برای آرایههای NumPy، این ویژگی ابعاد تصویر و تعداد کانالهای رنگ را نشان میدهد.
- size: برای تصاویر PIL، این ویژگی عرض و ارتفاع تصویر را میدهد.
- dtype: برای آرایههای NumPy، این نوع دادههای پیکسلهای تصویر را نشان میدهد.
- ()getpixel() / item: متدهایی برای دسترسی به مقادیر پیکسل.
تکنیکهای ذخیرهسازی کارآمد تصاویر با OpenCV و PIL
OpenCV:
برای ذخیره یک تصویر پس از پردازش، از `cv2.() imwrite` استفاده کنید.
cv2. imwrite('new_image. jpg', img)
PIL/Pillow:
برای ذخیره تصویر با Pillow، از متد `()save` استفاده کنید.
img. save('new_image. jpg')
بهترین شیوهها:
- از فرمتهای فشرده مانند JPG یا PNG بسته به نوع تصویر استفاده کنید.
- پارامتر کیفیت را برای تعادل بین فشردهسازی و کیفیت تنظیم کنید.
- آرایههای نرمالشده را قبل از ذخیرهسازی برای دقت بهتر ذخیره کنید.
تفاوت هوش مصنوعی رو با این یکی یاد بگیرید: آموزش هوش تجاری از صفر تا صد با 30 درس
نمایش تصاویر با استفاده از Matplotlib
برای نمایش تصاویر، از `()plt. imshow` در Matplotlib استفاده کنید:
import matplotlib. pyplot as plt
plt. imshow(img)
plt. show()
پارامترها:
cmap: رنگسنج برای مقادیر شدت برای مثال، 'gray' برای تصاویر سیاه و سفید.
interpolation: الگوریتمی برای درونیابی پیکسل برای مثال، 'nearest'، 'bilinear'.
تکنیکهای اصلی دستکاری تصویر در پایتون
تغییر اندازه تصویر:
OpenCV :
تصاویر را با استفاده از()cv2.resize تغییر اندازه دهید:
import cv2
img = cv2. imread('image. jpg')
resized = cv2. resize(img, (100, 200))
PIL/Pillow:
تغییر اندازه تصاویر با استفاده از ()Image.resize:
from PIL import Image
img = Image. open('image. jpg')
resized = img. resize((100, 100)) به پیکسلها
resized = img. resize((50, 50)) مقیاس درصدی
برش تصاویر:
NumPy (OpenCV):
تصویر را با استفاده از برش آرایه NumPy برش دهید:
cropped = img[50: 150, 50: 150]
Pillow:
با استفاده از متد `()Image. crop` برش دهید:
box = (50, 50, 150, 150)
cropped = img. crop(box)
دانلود کنید: یادگیری ماشین با پایتون با 12 درس+ کتاب یادگیری ماشین
چرخش و معکوس کردن تصاویر:
OpenCV:
تصاویر را به وسیله چرخش 90 درجه یا زاویه دلخواه چرخش دهید:
rotated90 = cv2. rotate(img, cv2. ROTATE_90_CLOCKWISE)
rotated30 = cv2. warpAffine(img, cv2. getRotationMatrix2D((cx, cy), 30, 1), (width, height))
Pillow:
تصاویر را بچرخانید و معکوس کنید:
rotated90 = img. rotate(90)
flipped = img. transpose(Image. FLIP_LEFT_RIGHT)
فیلتر کردن و بهبود پیشرفته تصویر در پایتون
بلور کردن تصویر:
OpenCV :
اثر بلور را با استفاده از فیلتر گوسی اعمال کنید:
import cv2
image = cv2. imread('image. jpg')
blurred = cv2. GaussianBlur(image, (15, 15), 0)
cv2. imwrite('blurred. jpg', blurred)
بلد باشید: مثال یادگیری ماشین: 13 کاربرد روزمره که باید بدانید
شارپ کردن تصاویر:
OpenCV:
برای شارپ کردن تصاویر از فیلترهای کانولوشن استفاده کنید:
import cv2
import numpy as np
image = cv2. imread('image. jpg')
kernel = np. array([[0, 1, 0], [1, 5, 1], [0, 1, 0]])
sharpened = cv2. filter2D(image, 1, kernel)
تشخیص لبهها:
OpenCV:
الگوریتم Canny برای تشخیص لبهها را اعمال کنید:
import cv2
image = cv2. imread('image. jpg')
edges = cv2. Canny(image, 100, 200)
cv2. imwrite('canny_edges. jpg', edges)
بررسی تکنیکهای بخشبندی تصویر با پایتون
آستانهگذاری:
OpenCV:
تصویر را به تصویر باینری با استفاده از آستانهگذاری تبدیل کنید:
import cv2
img = cv2. imread('image. jpg', 0) بارگذاری به صورت خاکستری
ret, thresh = cv2. threshold(img, 127, 255, cv2. THRESH_BINARY)
thresh_adapt = cv2. adaptiveThreshold(img, 255, cv2. ADAPTIVE_THRESH_MEAN_C, cv2. THRESH_BINARY, 11, 2)
ماشین لرنینگ و هوش مصنوعی و یادگیری عمیق (مقایسه کامل)
الگوریتم Watershed:
OpenCV:
تصویر را با استفاده از الگوریتم watershed بخشبندی کنید:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2. imread('coins. jpg')
gray = cv2. cvtColor(img, cv2. COLOR_BGR2GRAY)
ret, thresh = cv2. threshold(gray, 0, 255, cv2. THRESH_BINARY_INV + cv2. THRESH_OTSU)
kernel = np. ones((3, 3), np. uint8)
opening = cv2. morphologyEx(thresh, cv2. MORPH_OPEN, kernel, iterations=2)
sure_bg = cv2. dilate(opening, kernel, iterations=3)
dist_transform = cv2. distanceTransform(opening, cv2. DIST_L2, 5)
ret, sure_fg = cv2. threshold(dist_transform, 0. 7 dist_transform. max(), 255, 0)
sure_fg = np. uint8(sure_fg)
unknown = cv2. subtract(sure_bg, sure_fg)
ret, markers = cv2. connectedComponents(sure_fg)
markers = markers + 1
markers[unknown == 255] = 0
markers = cv2. watershed(img, markers)
img[markers == 1] = [0, 255, 0]
الگوریتم GrabCut:
OpenCV:
برای استخراج پیشزمینه از الگوریتم GrabCut استفاده کنید:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2. imread('messi. jpg')
mask = np. zeros(img. shape[: 2], np. uint8)
bgdModel = np. zeros((1, 65), np. float64)
fgdModel = np. zeros((1, 65), np. float64)
rect = (50, 50, 450, 290)
cv2. grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2. GC_INIT_WITH_RECT)
mask = np. where((mask == 2) | (mask == 0), 0, 1). astype('uint8')
img = img mask[: , : , np. newaxis]
ویدیوهای آموزش پردازش تصویر در 10 جلسهماشین لرنینگ با پایتون چیست؟ تمرین ماشین لرنینگ پایتون
این بخش برگرفته از پیج آیدینیسم می باشد و در 10 جلسه می توانید کلیات تا سطح متوسط پردازش تصویر پایتون را یاد بگیرید:
جلسه اول |
جلسه دوم |
جلسه سوم |
جلسه چهارم |
جلسه پنجم |
جلسه ششم |
جلسه هفتم |
جلسه هشتم |
جلسه نهم |
جلسه دهم |
توسعه پروژههای پردازش تصویر با پایتون
پروژههای طبقهبندی تصویر:
- طبقهبند تصویر سفارشی:
- شناسایی اشیاء خاص (برای مثال، کنترل کیفیت، شناسایی حیات وحش).
- آموزش یک مدل CNN با تصاویر برچسبگذاری شده.
- طبقهبند بیماریهای گیاهی:
- شناسایی بیماریهای گیاهان از تصاویر برگ.
- جمعآوری، برچسبگذاری و آموزش مدل برای طبقهبندی بیماریها.
- شناسایی نژاد سگ:
- استفاده از یادگیری انتقالی برای شناسایی نژاد سگها از تصاویر.
محلیسازی و شناسایی اشیاء:
- اپلیکیشن شناسایی چهره:
- رسم جعبههای محدود کننده دور چهرههای شناسایی شده با استفاده از کاسکادهای Haar.
- تحلیلکننده دور
بین ترافیک:
- هایلایت کردن وسایل نقلیه در تصاویر ویدئویی ترافیک با استفاده از کاهنده پسزمینه.
- اسکنر محصول خردهفروشی:
- شناسایی محصولات در قفسههای فروشگاه با استفاده از مدلهای شناسایی اشیاء.
ایجاد موتور جستجوی تصویر:
- جستجوی تصویر مد:
- پیدا کردن تصاویر مشابه لباس و لوازم جانبی.
- جستجوی طراحی داخلی:
- تطبیق مبلمان و سبکهای دکوراسیون.
- بررسی پلاژیاریسم:
- مقایسه تصاویر مقاله برای شناسایی آثار کپی شده.
به کارتون میاد: آموزش پردازش سیگنال در متلب 0 تا 100+ PDF رایگان
نتیجهگیری
تسلط بر پایتون برای پردازش تصویر به شما این امکان را میدهد که به طیف وسیعی از وظایف از دستکاریهای ساده تا تحلیلهای پیچیده بپردازید. کتابخانههای پایتون مانند OpenCV، PIL/Pillow و scikitimage ابزارهای قدرتمندی برای کار با تصاویر ارائه میدهند و پایتون را به انتخابی عالی برای پروژههای پردازش تصویر در تحقیق و صنعت تبدیل میکند. به بررسی این کتابخانهها ادامه دهید و از قابلیتهای آنها برای پیشرفت مهارتهای خود در بینایی کامپیوتری و تحلیل تصویر استفاده کنید.
سلام pdf برای دانلود نیست؟
پاسخ