Scikit-image یک کتابخانه پردازش تصویر منبع باز برای پایتون است که بر اساس کتابخانه های محاسباتی علمی NumPy و SciPy است.
الگوریتمهای متنوعی از مباحث قسمت بندی تصاویر، تبدیلات هندسی، کار در فضای رنگ، آنالیز تصاویر، فیلترینگ، ریخت شناسی (Morphology)، تشخیص ویژگیها و … همراه این کتابخانه در دسترس میباشد.
نصب کتابخانه Scikit-image
این کتابخانه در اینجا فهرست شده است. برای نصب کتابخانه پردازش تصویر Scikit-image، فقط از کد زیر استفاده کنید:
pip install scikit-image
برای استفاده از کتابخانه فوق در کد خود کافیست آن را وارد کرده و بسته به نیاز خود از ماژول های مختلف آن استفاده کنید.
این بسته را می توان با استفاده از skimage در پایتون وارد کرد.
همچنین، بسیاری از توابع و الگوریتمهای پیادهسازی شده را میتوان در «زیر واحدهای» (Submodules) این بسته برنامهنویسی پیدا کرد و مورد استفاده قرار داد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط ابزار SciKit-Image قابل انجام است، نمایش داده خواهد شد.
مثال پردازش تصویر با Scikit-image
نمونه های مختلفی از کار با کتابخانه در زیر ذکر شده است که هم برای آموزش و هم برای استفاده و کار با تصاویر در پایتون می تواند بسیار مفید باشد:
https://scikit-image.org/docs/dev/auto_examples/
اعمال فیلتر میانگین بر روی تصویر
بعنوان مثال در کد زیر میخواهیم که فیلتر میانگین یا Mean Filter را بر روی تصویری اعمال کنیم :
import matplotlib.pyplot as plt
from skimage import data
from skimage.morphology import disk
from skimage.filters import rank
image = data.coins()
selem = disk(20)
percentile_result = rank.mean_percentile(image, selem=selem, p0=.1, p1=.9)
bilateral_result = rank.mean_bilateral(image, selem=selem, s0=500, s1=500)
normal_result = rank.mean(image, selem=selem)
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 10),
sharex=True, sharey=True)
ax = axes.ravel()
titles = [‘Original’, ‘Percentile mean’, ‘Bilateral mean’, ‘Local mean’]
imgs = [image, percentile_result, bilateral_result, normal_result]
for n in range(0, len(imgs)):
ax[n].imshow(imgs[n], cmap=plt.cm.gray)
ax[n].set_title(titles[n])
ax[n].axis(‘off’)
plt.tight_layout()
plt.show()
کد بالا ابتدا تصویر Coin را بارگذاری می کند و سپس سه نوع فیلتر میانگین را روی آن اعمال می کند و در نهایت هر 4 تصویر را نمایش می دهد.
خروجی کد بالا به صورت زیر است:
فیلتر کردن عکس
«فیلتر گذاری روی تصاویر» (Image Filtering): با استفاده از این ابزار، میتوان فیلترهای «بالاگذر» (High Pas) و «پایین گذر» (Low Pass) را جهت انجام پردازشهایی نظیر «تشخیص لبه» (Edge Detection) روی تصاویر اعمال کرد.
import matplotlib.pyplot as plt
%matplotlib inline
from skimage import data,filters
image = data.coins() # … or any other NumPy array!
edges = filters.sobel(image)
plt.imshow(edges, cmap=’gray’)
خروجی کد بالا به صورت زیر است:
تشخیص چهره در عکس
کد زیر نیز به راحتی و در زمان کوتاهی قادر به تشخیص چهره افراد در تصویر می باشد:
from skimage import data
from skimage.feature import Cascade
import matplotlib.pyplot as plt
from matplotlib import patches
# Load the trained file from the module root.
trained_file = data.lbp_frontal_face_cascade_filename()
# Initialize the detector cascade.
detector = Cascade(trained_file)
img = data.astronaut()
detected = detector.detect_multi_scale(img=img,
scale_factor=1.2,
step_ratio=1,
min_size=(60, 60),
max_size=(123, 123))
plt.imshow(img)
img_desc = plt.gca()
plt.set_cmap(‘gray’)
for patch in detected:
img_desc.add_patch(
patches.Rectangle(
(patch[‘c’], patch[‘r’]),
patch[‘width’],
patch[‘height’],
fill=False,
color=’r’,
linewidth=2
)
)
plt.show()
برای دانلود کد فوق و توضیحات بیشتر میتوانید به سایت زیر مراجعه کنید.
خروجی کد فوق به صورت زیر می باشد:
تطبیق الگو در پایتون با SciKit-Image
«تطبیق الگو» (Template Matching): در برنامههای پردازش تصویر، الگوریتمهای تطبیق الگو برای تشخیص ظاهر یک تصویر الگو در یک یا مجموعهای از تصاویر دیگر استفاده میشوند.
import numpy as np
import matplotlib.pyplot as plt
from skimage import data
from skimage.feature import match_template
image = data.coins()
coin = image[170:220, 75:130]
result = match_template(image, coin)
ij = np.unravel_index(np.argmax(result), result.shape)
x, y = ij[::-1]
fig = plt.figure(figsize=(8, 3))
ax1 = plt.subplot(1, 3, 1)
ax2 = plt.subplot(1, 3, 2)
ax3 = plt.subplot(1, 3, 3, sharex=ax2, sharey=ax2)
ax1.imshow(coin, cmap=plt.cm.gray)
ax1.set_axis_off()
ax1.set_title(‘template’)
ax2.imshow(image, cmap=plt.cm.gray)
ax2.set_axis_off()
ax2.set_title(‘image’)
# highlight matched region
hcoin, wcoin = coin.shape
rect = plt.Rectangle((x, y), wcoin, hcoin, edgecolor=’r’, facecolor=’none’)
ax2.add_patch(rect)
ax3.imshow(result)
ax3.set_axis_off()
ax3.set_title(‘`match_template`\nresult’)
# highlight matched region
ax3.autoscale(False)
ax3.plot(x, y, ‘o’, markeredgecolor=’r’, markerfacecolor=’none’, markersize=10)
plt.show()
نتیجه حاصل از کد فوق را در تصویر زیر میتوانید ببینید:
دوره آموزشی زبان برنامه نویسی پایتون »کلیک کنید» یک برنامه جامع است که بر توسعه سریع نرمافزارهای کاربردی، برنامهنویسی شیگرا و کاربری ماژول و…. با استفاده از ابزار Python تمرکز دارد.
سپاسگذاریم از وقتی که برای خواندن این مقاله گذاشتید
برای خرید لایسنس پاور بی ای Power BI کلیک کنید
.
برای مشاهده ویدیوهای آموزشی داده کاوی و هوش تجاری ما را در شبکه های اجتماعی دنبال کنید
Youtube Chanel :VISTA Data Mining
Aparat Chanel: VISTA Data Mining
Instagram Chanel: VISTA Data Mining
Telegram Chanel: VISTA Data Mining
Linkedin Chanel: VISTA Company