معرفی 3 ماژول پایتون برای پردازش تصاویر – قسمت ششم
موسسه پایا پروژه به عنوان متصدی انجام پروژه های پردازش تصویر با پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
در این مقاله آموزشی قصد داریم تا به معرفی مثال های جامع و کاربردی در زمینه پردازش تصاویر با پایتون بپردازیم. مطالب آموزشی در زمینه پردازش پیکسل ها با استفاده از زبان برنامه نویسی پایتون می باشد.
۱ـ کار با پیکسل
همانطور که اشاره شد، در عمل، تصاویر دنیای واقعی معمولاً از تعداد زیادی پیکسل تشکیل میشوند و هر یک از این پیکسلها یکی از میلیونها رنگ بالقوه خواهد بود. در حالی که به زودی با چنین پیچیدگی هایی روبرو خواهیم شد، بیایید کاوش خود را با 15 پیکسل در یک ماتریس 5 در 3 با 2 رنگ شروع کنیم و تا آن پیچیدگی پیش برویم، اما ابتدا واردات لازم را در پایتون، انجام دهیم.
“””
* Python libraries for learning and performing image processing.*
“””
import numpy as np
import skimage.io
import skimage.viewer
import matplotlib.pyplot as plt
import ipympl
۱ـ۱ وارد کردن عبارات در پایتون
در پایتون، دستور import برای بارگذاری عملکرد اضافی در یک برنامه استفاده می شود. این زمانی ضروری است که میخواهیم کد ما کاری تخصصیتر انجام دهد، که به راحتی نمیتوان با مجموعه محدود ابزارهای اساسی و ساختارهای داده موجود در محیط پیشفرض پایتون به آن دست یافت.
عملکردهای اضافی را می توان به عنوان یک تابع یا شی منفرد، یک ماژول که چندین مورد از آنها را تعریف می کند، یا یک کتابخانه حاوی ماژول های زیادی بارگیری کرد. شما با چندین شکل مختلف بیانیه واردات مواجه خواهید شد.

اکنون که کتابخانههایمان بارگیری شده است، فرمان Jupyter را اجرا میکنیم که اطمینان حاصل میکند که تصاویر ما در سند Jupyter با اطلاعات پیکسلی نمایش داده میشوند که به ما کمک میکند دستورات را بهطور مؤثرتر اجرا کنیم.
matplotlib widget%
۲ـ آرایه های تصاویر
با توجه به این موضوع، بیایید داده های تصویر خود را با استفاده از تابع imread از کتابخانه skimage.io از دیسک بارگیری کرده و با استفاده از تابع imshow از کتابخانه matplotlib نمایش دهیم.
image = skimage.io.imread(fname=”data/eight.tif”)
plt.imshow(image)

ممکن است فکر کنید، “این به طور مبهم شبیه یک هشت است، و من دو رنگ را می بینم، اما چگونه می تواند تنها 15 پیکسل باشد”. نمایش هشت موردی که میبینید از پیکسلهای صفحهنمایش بسیار بیشتری استفاده میکند تا هشت پیکسل ما را بزرگ نشان دهد، اما این بدان معنا نیست که اطلاعاتی برای همه پیکسلهای صفحه نمایش در فایل وجود دارد. همه آن پیکسل های اضافی نتیجه این است که بیننده ما پیکسل های اضافی را از طریق درون یابی ایجاد می کند. در صورتی که بیننده متفاوت طراحی می شد، می توانست آن را به عنوان یک تصویر کوچک تنها با استفاده از 15 پیکسل صفحه نمایش نشان دهد.
در حالی که بسیاری از فرمتهای فایل تصویری حاوی ابردادههای توصیفی هستند که میتوانند ضروری باشند، بخش اعظم یک فایل تصویری فقط آرایههایی از اطلاعات عددی است که وقتی طبق یک مجموعه قوانین خاص تفسیر شوند، به عنوان یک تصویر برای ما قابل تشخیص هستند. تصویر ما (که اندازه آن ۸ در ۸ است) نیز از این قاعده مستثنی نیست و skimage.io آن داده های تصویر را در آرایه ای از آرایه ها ذخیره می کند که یک ماتریس 5×3 از 15 پیکسل ایجاد می کند. ما می توانیم با فراخوانی ویژگی shape متغیر تصویر خود را نشان دهیم و با چاپ متغیر، تصویر خود را روی صفحه ماتریس ببینیم.
print(image.shape)print(image)

۲ـ۱ اهمیت آرایه ها در پردازش تصاویر
اگر ابزارهایی داشته باشیم که به ما امکان تغییرات این آرایه های اعداد را می دهد، می توانیم تصویر را تغییر دهیم. کتابخانه numpy می تواند به ویژه در اینجا مفید باشد، بنابراین بیایید آن را با استفاده از برش آرایه numpy امتحان کنیم. توجه داشته باشید که رفتار پیشفرض تابع imshow اعداد سطر و ستون را اضافه میکند که برای ما مفید خواهد بود، زیرا سعی میکنیم به فرد یا گروههایی از پیکسلها رسیدگی کنیم. ابتدا بیایید یک نسخه دیگر از تصاویر خود را بارگذاری کنیم، و سپس آن را مانند یک، صفر کنیم.
zero = skimage.io.imread(fname=”data/eight.tif”)
zero[2,1]= 1.0
“””
The follwing line of code creates a new figure for imshow to use in
displaying our output. Without it, plt.imshow() would overwrite our previous
image in the cell above
“””
()fig, ax = plt.subplots
plt.imshow(zero)
print(zero)


۳ـ جمع بندی
در این مطالب به معرفی ماژول ها و متدهای مختلف برای طراحی و ارائه تغییراتی در آرایه ها پرداختیم و متوجه شدیم که برای تغییرات تصاویر، باید آرایه های آنها را دریافت و تغییر دهیم. در قسمت های بعدی به معرفی مثال های جامع و کامل تری درباره این موضوعات می پردازیم و اهمیت آرایه ها در پردازش تصاویر را درک می کنیم.
