پردازش تصویر چند بعدی با استفاده از Scipy در پایتون

موسسه پایا پروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.

SciPy یک کتابخانه پایتون است که برای محاسبات علمی و فنی در پروژه پایتون استفاده می شود. این بر روی NumPy ساخته شده است، کتابخانه ای برای محاسبات عددی کارآمد، و بسیاری از توابع را برای کار با آرایه ها، بهینه سازی عددی، پردازش سیگنال و سایر وظایف رایج در محاسبات علمی ارائه می دهد.

پردازش تصویر رشته ای از علوم کامپیوتر است که به دستکاری، تحلیل و تفسیر تصاویر می پردازد. در پردازش تصویر، تصویر چند بعدی تصویری است که بیش از دو بعد دارد. این می‌تواند شامل تصاویری با چندین کانال رنگی (مثلاً کانال‌های قرمز، سبز و آبی در یک تصویر رنگی)، تصاویر با چندین نقطه زمانی (مثلاً یک ویدیو) و تصاویر با ابعاد فضایی چندگانه (مانند یک اسکن تصویربرداری پزشکی سه‌بعدی) باشد.

SciPy در پروژه پایتون چندین عملکرد را برای پردازش تصاویر چند بعدی ارائه می دهد، از جمله عملکردهایی برای خواندن و نوشتن تصاویر، فیلتر کردن تصویر، تاب برداشتن تصویر و تقسیم بندی تصویر scipy.ndimage یک ماژول در کتابخانه SciPy است که عملکردهایی را برای پردازش تصویر چند بعدی ارائه می دهد. این بر روی NumPy ساخته شده است، کتابخانه ای برای محاسبات عددی کارآمد، و بسیاری از توابع را برای کار با آرایه ها، از جمله توابع برای پردازش تصویر، ارائه می دهد.

از آنجایی که تعداد زیادی عملیات ممکن است، در انجام پروژه پایتون برخی از عملیات های اساسی را پوشش می دهد که این ها هر کدام یک مقاله مفصل جداگانه می طلبد.

فیلتر کردن تصویر : ما می توانیم از ماژول scipy.ndimage.filters برای اعمال انواع مختلف فیلترهای تصویر مانند فیلترهای میانی، فیلترهای گاوسی و فیلترهای سوبل استفاده کنیم.

درون یابی تصویر : ما می توانیم از ماژول scipy.ndimage.interpolation برای تاب برداشتن تصاویر با استفاده از روش های درون یابی مختلف، مانند نزدیکترین همسایه، خطی و مکعبی استفاده کنیم.

تقسیم‌بندی تصویر : می‌توانیم از ماژول scipy.ndimage.measurements برای انجام وظایف بخش‌بندی تصویر، مانند یافتن اجزای متصل و برچسب‌گذاری اشیاء در یک تصویر، استفاده کنیم.

دستکاری تصویر : ما می توانیم از ماژول scipy.ndimage.morphology برای انجام کارهای دستکاری تصویر مانند فرسایش، اتساع، و باز و بسته شدن استفاده کنیم.

 

فیلتر کردن تصویر با SciPy در انجام پروژه پایتون

در پردازش تصویر، فیلترها عملیات ریاضی هستند که روی یک تصویر اعمال می شوند تا ظاهر آن را تغییر دهند یا ویژگی های خاصی را استخراج کنند.

فیلترها را می توان برای کارهایی مانند صاف کردن، تیز کردن، افزایش لبه ها، حذف نویز و غیره استفاده کرد. بسیاری از انواع فیلترها را می توان در پردازش تصویر استفاده کرد، از جمله فیلترهای خطی، فیلترهای غیر خطی و فیلترهای مورفولوژیکی.

فیلترهای خطی ترکیبی خطی از پیکسل های تصویر ورودی را برای تولید تصویر خروجی اعمال می کنند، در حالی که فیلترهای غیر خطی یک تابع غیر خطی را برای پیکسل های تصویر ورودی اعمال می کنند. فیلترهای مورفولوژیکی نوعی فیلتر غیر خطی هستند که بر اساس شکل یا ساختار پیکسل های تصویر ساخته می شوند.

 

ماژول scipy.ndimage به طور خاص چندین عملکرد فیلتر را برای کارهایی مانند صاف کردن، تیز کردن و تشخیص لبه ارائه می دهد.

 

در اینجا چند نمونه از توابع فیلتر ارائه شده توسط scipy.ndimage آمده است:

 

فیلتر میانه: می‌توانیم از تابع scipy.ndimage.filters.median_filter برای اعمال فیلتر میانی روی یک تصویر استفاده کنیم که می‌توان از آن برای حذف نویز از تصویر استفاده کرد.

نحوه استفاده:

scipy.ndimage.median_filter(input, size=None, footprint=None, output=None, mode=’reflect’, cval=0.0, origin=0)

 

فیلتر گاوسی: می‌توانیم از تابع scipy.ndimage.filters.gaussian_filter برای اعمال فیلتر گاوسی روی یک تصویر استفاده کنیم که می‌توان از آن برای صاف کردن تصویر یا کاهش نویز استفاده کرد.

نحوه استفاده:

scipy.ndimage.gaussian_filter(input, sigma, order=0, output=None, mode=’reflect’, cval=0.0, truncate=4.0)

 

فیلتر  Sobel: می‌توانیم از تابع scipy.ndimage.filters.sobel برای اعمال فیلتر Sobel بر روی یک تصویر استفاده کنیم، که نوعی فیلتر تشخیص لبه است که لبه‌ها را در تصویر افزایش می‌دهد.

نحوه استفاده:

scipy.ndimage.sobel(input, axis=- 1, output=None, mode=’reflect’, cval=0.0)

 

فیلتر لاپلاسی: می‌توانیم از تابع scipy.ndimage.filters.laplace برای اعمال فیلتر لاپلاسی روی یک تصویر استفاده کنیم، که یک فیلتر مشتق مرتبه دوم است که می‌تواند برای تشخیص لبه‌ها و گوشه‌ها در تصویر استفاده شود.

نحوه استفاده:

scipy.ndimage.laplace(input, output=None, mode=’reflect’, cval=0.0)

 

فیلتر  : Prewittفیلتر Prewitt نوعی فیلتر تشخیص لبه است که شبیه فیلتر Sobel است. شیب شدت تصویر را محاسبه می کند و با شناسایی نواحی با تغییر شدت سریع، لبه های تصویر را افزایش می دهد. ما می توانیم از تابع scipy.ndimage.filters.prewitt برای اعمال فیلتر Prewitt بر روی یک تصویر استفاده کنیم.

نحوه استفاده:

 

scipy.ndimage.prewitt(input, axis=- 1, output=None, mode=’reflect’, cval=0.0)

 

پروژه پایتون :

در کد های زیر اجرای تمام فیلتر ها را میتوانید مشاهده کنید:

 Import the necessary libraries #

import scipy.ndimage

from scipy import misc

import matplotlib.pyplot as plt

 reads a raccoon face# 

()image = misc.face

#image = plt.imread(‘Ganesh.jpg’)

  

# اجرای فیلتر گوسی

gaussian_filtered_image = scipy.ndimage.filters.gaussian_filter(image, sigma=3)

  

 Apply Median Filter#

median_filtered_image = scipy.ndimage.filters.median_filter(image, size=3)

 

Apply Sobel Filter #

sobel_filtered_image = scipy.ndimage.filters.sobel(image)

  

 Apply Laplace Filter #

laplace_filtered_image = scipy.ndimage.filters.laplace(image)

  

Apply Prewitt Filter #

prewitt_filtered_image = scipy.ndimage.filters.prewitt(image)

  

تابع subplot را با استفاده از تعداد سطر و ستون راه اندازی کنید:

 

figure, axis = plt.subplots(3, 2, figsize=(8, 8))

  

original image #

axis[0, 0].imshow(image)

axis[0, 0].set_title(“Original Image”)

axis[0, 0].axis(‘off’)

  

 gaussian filte #

axis[0, 1].imshow(gaussian_filtered_image)

axis[0, 1].set_title(“Gaussian Filtered Image”)

axis[0, 1].axis(‘off’)

 

 median filter# 

axis[1, 0].imshow(median_filtered_image)

axis[1, 0].set_title(“Median Filtered Image”)

axis[1, 0].axis(‘off’)

  

 sobel filter #

axis[1, 1].imshow(sobel_filtered_image)

axis[1, 1].set_title(“Sobel Filtered Image”)

axis[1, 1].axis(‘off’)

  

 laplace filter #

axis[2, 1].imshow(laplace_filtered_image)

axis[2, 1].set_title(“Laplace Filtered Image”)

axis[2, 1].axis(‘off’)

  

 prewitt filter #

axis[2, 0].imshow(prewitt_filtered_image)

axis[2, 0].set_title(“Prewitt Filtered Image”)

axis[2, 0].axis(‘off’)

  

()plt.show

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این زمینه را پر کنید
این زمینه را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

10 − نه =

سفارش پروژه