azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
انجام پروژه های پردازش تصویر
انجام پروژه های پردازش تصویر از مهمترین خدماتی است که در هر مکانی به وضوح شناخته شده است، تقریبا می توان گفت در هر مشاغل و مکانی به پردازش تصویر نیاز داریم.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
از همین رو کارشناسان گروه پروژه سرا آمادگی دارند؛ انجام پروژه های پردازش تصویر را، با بهترین کیفیت، مناسب ترین قیمت و در کوتاه ترین زمان به انجام برسانند.
تعریف پردازش تصویر
پردازش تصاویر امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته میشود که شاخهای از علم رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.
پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روش هایی چون استفاده از فیلترمحوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد(مانند چاپگر یا نمایشگر رایانه) است.
در حالی که بینایی ماشین به روش هایی میپردازد که به کمک آنها میتوان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.در معنای خاص آن پردازش تصویر عبارت است از هر نوع پردازش سیگنال که ورودی یک تصویر است مثل عکس یا صحنهای از یک فیلم.
خروجی پردازشگر تصویر میتواند یک تصویر یا یک مجموعه از نشانه ای ویژه یا متغیرهای مربوط به تصویر باشد. اغلب تکنیکهای پردازش تصویر شامل برخورد با تصویر به عنوان یک سیگنال دو بعدی و بکاربستن تکنیکهای استاندارد پردازش سیگنال روی آنها میشود.
★★★★★ 5/5
انجام پروژه های پردازش تصویر
انجام پروژه پردازش تصویر در بخش های مختلف:
انجام پروژه پردازش تصویر open cv
انجام پردازش تصویر با پایتون
پردازش تصویر در پزشکی
پردازش تصویر گنزالس
خوشه بندی تصویر
تشخیص سرقت از مکانی
شناسایی رفتارهای ویدیویی
کنترل تصویری عبور و مرور وسایل
تشخیص خواب آلودگی فرد
انجام پروژه پردازش تصویر در متلب
پردازش تصویر در اندروید
ردیابی اشیا
پردازش تصویر با رزبری پای
پردازش تصویر با c++
پردازش تصویر c#
تشخیص علایم راهنمایی و رانندگی
پردازش داده های رادار
تشخیص بافت و نوع
ردیابی تصویری شی متحرک
تشخیص پول
شناسایی حرکت های مشکوک
کنترل وسایل با اشاره
تشخیص نوع و محل سرطان
تصویر سه بعدی
شناسایی اثر انگشت
شناسایی علف های هرز
پردازش تصویر avr
تشخیص امضا
منطق فازی
پنهان سازی متن در تصویر
پردازش تصویر با arm
تشخیص حروف الفبا
پردازش تصویر fpga
امنیت تصاویر و حفظ امنیت
بهینه سازی
حذف تصاویر مشخص از تصویر
حذف نویز از تصاویر
تعمیر تصویر
فیلتر کردن تصاویر
و….
انجام پروژه پایتون python پردازش تصویر:
پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد (مانندچاپگر یا نمایشگر رایانه)است، در حالی که بینایی ماشین به روشهایی میپردازد که به کمک آنها میتوان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.(منبع ویکی پدیا)
کارشناسان گروه پروژه سرا آماده انجام پروژه های پردازش تصویر با پایتون Python شما متقاضیان گرامی با بالاترین کیفیت و مناسبترین قیمت می باشد.
انجام پروژه متلب MATLAB پردازش تصویر:
پردازش تصویر (به انگلیسی: Image processing) امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته میشود که شاخهای از پردازش سیگنال است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا اسکن شده توسط اسکنر هستند سر و کار دارد. (منبع: ویکی پدیا)
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
نرم افزار متلب علاوه بر کابردهای خاص خود در تمامی حوزه ها به طور بسیار تخصصی در زمینه پردازش تصاویر دیجیتال طراحی و ساخته شده است تمامی پروژه های پردازش تصویر با استفاده از متلب پیاده سازی و اجرا می شوند.
کارشناسان گروه پروژه سرا آماده انجام پروژه های پردازش تصویر با متلب MATLAB شما متقاضیان گرامی با بالاترین کیفیت و مناسبترین قیمت می باشد.
انجام پروژه های پردازش تصویر
چگونه پروژه ی پردازش تصویر خود را انجام دهم؟
انجام پروژه ی پردازش تصویر در پروژه سرا توسط متخصصین ممتاز در رابطه با پردازش تصویر گرد هم آمده اند و توانایی انجام پروژه های پردازش تصویر در نرم افزار های مختلف به خصوص متلب وپایتون را دارا می باشند. برای انجام پروژه یی پردازش تصویر کافیست سفارش انجام پروژه خود را به کارشناسان پروژه سرا ارسال نمایید؛ کارشناسان، پروژه ی پردازش تصویر شما متقاضیان گرامی را بررسی می نمایند و سپس مشاوره لازم جهت انجام پروژه تان را خدمتتان ارائه می نمایند.
تعرفه سفارش انجام پروژه ی پردازش تصویر چقدر می باشد?
انجام پروژه ی پردازش تصویر توسط متخصصین ممتاز در رابطه با پردازش تصویر با متلب و پایتون در پروژه سرا انجام می پذیرد، تعرفه انجام پروژه ی پردازش تصویر با توجه به نوع پروژه، مدت زمان انجام آن و برخی مسائل دیگر متغیر می باشد. لذا باید توسط کارشناسان گروه بررسی و تعیین هزینه شود.
برخی دیگر از خدمات ارئه شده در پروژه سرا:
انجام پروژه شبکه عصبی با متلب
انجام پروژه تشخیص چهره با متلب
انجام پروژه داده کاوی با متلب
ر پایتون : (معرفی 10 کتابخانه برتر پردازش تصویر در python)
دسته بندی: پردازش تصویر
پردازش تصویر یا Image Processing یکی از شاخه های پرطرفدار و پرکاربرد در حوزه هوش مصنوعی و زندگی روزمره می باشد، در زبان پایتون نیز روش ها و ابزارهای مختلفی برای پردازش تصویر وجود دارد از جمله Opencv و کتابخانه PIL که در ادامه به بررسی روشها و ابزارها و آموزش پردازش تصویر در python خواهیم پرداخت.
محتوا
1) پردازش تصویر یا Image Processing یکی از شاخه های پرطرفدار و پرکاربرد در حوزه هوش مصنوعی و زندگی روزمره می باشد، در زبان پایتون نیز روش ها و ابزارهای مختلفی برای پردازش تصویر وجود دارد از جمله Opencv و کتابخانه PIL که در ادامه به بررسی روشها و ابزارها و آموزش پردازش تصویر در python خواهیم پرداخت.
2) مقدمه : آشنایی با پردازش تصویر:
3) تصویر دیجیتال :
4) پردازش تصویر با پایتون با کتابخانه Numpy
5) مثال از کار با تصویر با numpy
6) کتابخانه SciPy در پایتون
7) پردازش تصاویر در پایتون با کتابخانه SciKit-Image
8) کتابخانههای PIL و Pillow برای پردازش تصویر در پایتون
9) کتابخانه OpenCV-Python
10) کتابخانه SimpleCV برای پردازش تصویر در پایتون
11) کتابخانه Mahotas برای پردازش تصویر با پایتون
12) کتابخانه SimpleITK برای پردازش تصویر با python
13) کتابخانه pgmagick برای پردازش تصویر
14) ابزار Pycairo برای پردازش تصویر
مقدمه : آشنایی با پردازش تصویر:
منظور ما از پردازش تصویر ( Image processing) ، پردازش تصویر دیجیتال می باشد که شاخهای از پردازش سیگنال است .
پردازش تصاویر دارای دو شاخه عمدهٔ می باشد :
بهبود تصاویر ،
بینایی ماشین.
بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد (مانند چاپگر یا نمایشگر رایانه) می باشد.
بینایی ماشین به روشهایی میپردازد که به کمک آنها میتوان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک استفاده شود.
تصویر دیجیتال :
تصویر دیجیتال(رقمی) از تعداد بسیار زیادی از مربعهای کوچک، مشهور به پیکسل تشکیل شدهاست.
هر پیکسل دارای یک مقدار دیجیتال است که بیانگر مقدار روشنایی آن پیکسل است. روشنایی هر پیکسل با یک عدد بین 0 تا 255 مشخص میشود.
به این نوع تصاویر، تصاویر رَستِری (Raster Image) هم میگویند. هر تصویر رستری از تعدادی سطر و تعدادی ستون تشکیل شدهاست.
تصاویر با فرمت های مختلفی دیجیتالی میشوند مثلا تصاویر خاکستری یا GryScale که هر پیکسل آن فقط با یک عدد بین 0 تا 255 نشان داده میشود. یا تصاویر رنگی RGB که از سه رنگ قرمز (R) و سبز (G) و آبی (B) استفاده میکنند و هر پیکسل آن با سه عدد بین 0 تا 255 نمایش دهده میشود.
کتابخانه های متعددی برای کار با تصاویر و پردازش تصویر در پایتون توسعه داده شده است که در ادامه به معرفی آنها میپردازیم.
پردازش تصویر با پایتون با کتابخانه Numpy
کتابخانه Numpy یکی از کتابخانههای برنامهنویسی کلیدی در زبان برنامهنویسی پایتون محسوب میشود که پشتیبانی از «نوع دادهای آرایه» (Array Datatype) را در پایتون فراهم میکند.
این کتابخانه، یکی از مهمترین کتابخانههای توسعه داده شده برای کاربردهای پردازش تصویر با پایتون نیز محسوب میشود که به طور رایگان در دسترس کاربران و برنامهنویسان قرار گرفته شده است.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
به طور کلی، یک «تصویر» (Image) یک آرایه استاندارد قابل تعریف توسط کتابخانه Numpy محسوب میشود که شامل پیکسلهای متناظر با نقاط دادهای خواهد بود. بنابراین، با استفاده از عملیات پایهای تعریف شده در Numpy نظیر:
«بخشبندی» (Slicing)،
«پوشش گذاری» (Masking)،
«شاخص گذاری چندگانه» (Fancy Indexing)
و سایر موارد،
کاربر قادر خواهد بود تا مقادیر پیکسلهای یک تصویر را تغییر دهد.
در کاربردهای پردازش تصویر با پایتون و کتابخانه Numpy، میتوان از کتابخانه skimage برای بارگذاری تصاویر و از کتابخانه Matplotlib جهت نمایش آنها استفاده کرد.
مثال از کار با تصویر با numpy
«پوشش گذاری تصاویر» (Image Masking): یکی از فرایندهای پایهای در پردازش تصویر محسوب میشود که به وسیله آن، بخشهایی از یک تصویر پنهان و بخشهای دیگر موجود در تصویر نمایان میشوند.
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')
خروجی کد فوق به صورت زیر می باشد :
کتابخانه های پردازش تصویر با پایتون
کتابخانه SciPy در پایتون
کتابخانه SciPy یکی دیگر از کتابخانههای کلیدی برای برنامهنویسی علمی در زبان برنامهنویسی پایتون محسوب میشود (همانند Numpy).
از این کتابخانه مهم نیز میتوان برای پیادهسازی برخی از کاربردهای پردازش تصویر با پایتون استفاده کرد.
کتابخانه SciPy حاوی توابع و الگوریتمهایی است که به راحتی میتوان از آنها برای انجام عملیات (ساده) دستکاری و پردازش تصویر با پایتون استفاده کرد.
به طور ویژه، زیر واحد scipy.ndimage توابع عملیاتی لازم جهت انجام عملیات روی آرایههای چندبُعدی NumPy (آرایههایی که برای نمایش تصاویر، در قالب آرایه، مورد استفاده قرار میگیرند) را فراهم میآورد.
هماکنون کتابخانه SciPy، توابع لازم برای:
«فیلتر گذاری خطی و غیرخطی» (Linear and Non-Linear Filtering)،
«مورفولوژی باینری» (Binary Morphology)،
«درونیابی تصویر» (Image Interpolation)
و «اندازهگیری اشیاء» (Object Measurement)
را در اختیار کاربران و برنامهنویسان قرار میدهد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه SciPy قابل انجام است، نمایش داده خواهد شد.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
استفاده از کتابخانه SciPy جهت «تار کردن تصویر» (Image Blurring) با استفاده از «فیلتر گاوسی» (Gaussian Filter):
یکی از فرایندهای ساده پردازش تصویر با پایتون و کتابخانه SciPy، امکان اعمال فیلتر گاوسی روی تصاویر است که معمولا برای تار کردن (Blurring) تصاویر مورد استفاده قرار میگیرد.
from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)
#Results
plt.imshow(<image to be displayed>)
from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)
#Results
plt.imshow(<image to be displayed>)
خروجی کد فوق بصورت زیر می باشد:
پردازش تصویر با پایتون
کد زیر نیز مثال دیگری از اعمال فیتلر سوبل می باشد:
from scipy import ndimage, misc
import matplotlib.pyplot as plt
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = ndimage.sobel(ascent)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
from scipy import ndimage, misc
import matplotlib.pyplot as plt
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = ndimage.sobel(ascent)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
خروجی کد فوق نیز مشابه زیر می باشد:
کتابخانه های مهم پردازش تصویر پایتون
پردازش تصاویر در پایتون با کتابخانه SciKit-Image
ابزار SciKit-Image، یک بسته برنامهنویسی «منبع باز» (Open Source) است که با ساختار آرایهای تعریف شده توسط کتابخانه NumPy کار میکند.
این کتابخانه، یکی از مهمترین کتابخانههای پردازش تصویر با پایتون محسوب میشود که به طور رایگان در دسترس کاربران و برنامهنویسان قرار گرفته شده است.
در بسته SciKit-Image، مجموعهای از الگوریتمها و ابزارهای پردازش تصویر، جهت استفاده در کاربردهای تحقیقاتی، آموزشی و صنعتی در اختیار کاربران قرار داده شده است.
کتابخانههای PIL و Pillow برای پردازش تصویر در پایتون
کتابخانه PIL که به کتابخانه تصویر پایتون معروف است، مخفف عبارت Python Imaging Library می باشد. کتابخانه PIL یکی از کتابخانههای پردازش تصویر با پایتون محسوب میشود. با این حال، توسعه آن از سال 2009 دچار وقفه شده است.
اما نسخه گسترش یافته آن یعنی کتابخانه Pillow در زبان پایتون همچنان پشتبیانبی میشود .
نصب ساده، قابلیت اجرا در پلتفرمها و سیستمهای عامل اصلی و پشتیبانی از نسخه 3 زبان پایتون، از جمله نقاط قوت این کتابخانه محسوب میشود که توسط برنامهنویسان جهت پردازش تصویر با پایتون مورد استفاده قرار میگیرد.
به دلیل سادگی استفاده از این کتابخانهی برای پردازش تصاویر، بسیاری از برنامه نویسان از آن در برنامه نویسی روزانهی خود استفاده میکنند. ولی اگر در پروژههای یادگیری عمیق به پردازش تصویر نیاز داشتید، استفاده از OpenCV توصیه میشود.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
کتابخانه OpenCV-Python
کتابخانه OpenCV که مخفف Open Source Computer Vision Library یا کتابخانه منبع باز بینایی کامپیوتر است، یکی از پراستفادهترین کتابخانههای برنامهنویسی برای کاربردهای «بینایی کامپیوتر» (Computer Vision) محسوب میشود.
کتابخانه OpenCV-Python، واسط برنامهنویسی کاربردی (API) برای کتابخانه OpenCV در زبان پایتون محسوب میشود.
این کتابخانه نه تنها از سرعت بسیار بالایی برخوردار است (زیرا کدهای پیادهسازی آن توسط زبان C و C++ نوشته شده است)، بلکه کد نویسی برنامههای کاربردی مرتبط با پردازش تصویر با پایتون و بهکاراندازی (Deploy) آنها را تسهیل میبخشد.
چنین ویژگیهایی، کتابخانه OpenCV-Python را به بهترین انتخاب جهت پردازش تصویر با پایتون و پیادهسازی برنامههای بینایی کامپیوتر در این زبان بدل کرده است (به ویژه اگر برنامههای بینایی کامپیوتر توسعه داده شده، به انجام محاسبات ریاضی پیچیده و سنگین نیاز داشته باشند) .
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه OpenCV-Python قابل انجام است، نمایش داده خواهد شد.
«ترکیب تصاویر» (Image Blending): با استفاده از قابلیتی به نام «هرم تصاویر» (Image Pyramid) در OpenCV-Python، میتوان تصاویر متناظر با یک سیب و یک پرتقال را با یکدیگر ترکیب و یک تصویر جدید درست کرد.
import cv2
import numpy as np,sys
A = cv2.imread('apple.jpg')
B = cv2.imread('orange.jpg')
# generate Gaussian pyramid for A
G = A.copy()
gpA = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpA.append(G)
# generate Gaussian pyramid for B
G = B.copy()
gpB = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpB.append(G)
# generate Laplacian Pyramid for A
lpA = [gpA[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpA[i])
L = cv2.subtract(gpA[i-1],GE)
lpA.append(L)
# generate Laplacian Pyramid for B
lpB = [gpB[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpB[i])
L = cv2.subtract(gpB[i-1],GE)
lpB.append(L)
# Now add left and right halves of images in each level
LS = []
for la,lb in zip(lpA,lpB):
rows,cols,dpt = la.shape
ls = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))
LS.append(ls)
# now reconstruct
ls_ = LS[0]
for i in xrange(1,6):
ls_ = cv2.pyrUp(ls_)
ls_ = cv2.add(ls_, LS[i])
# image with direct connecting each half
real = np.hstack((A[:,:cols/2],B[:,cols/2:]))
cv2.imwrite('Pyramid_blending2.jpg',ls_)
cv2.imwrite('Direct_blending.jpg',real)
52
import cv2
import numpy as np,sys
A = cv2.imread('apple.jpg')
B = cv2.imread('orange.jpg')
# generate Gaussian pyramid for A
G = A.copy()
gpA = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpA.append(G)
# generate Gaussian pyramid for B
G = B.copy()
gpB = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpB.append(G)
# generate Laplacian Pyramid for A
lpA = [gpA[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpA[i])
L = cv2.subtract(gpA[i-1],GE)
lpA.append(L)
# generate Laplacian Pyramid for B
lpB = [gpB[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpB[i])
L = cv2.subtract(gpB[i-1],GE)
lpB.append(L)
# Now add left and right halves of images in each level
LS = []
for la,lb in zip(lpA,lpB):
rows,cols,dpt = la.shape
ls = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))
LS.append(ls)
# now reconstruct
ls_ = LS[0]
for i in xrange(1,6):
ls_ = cv2.pyrUp(ls_)
ls_ = cv2.add(ls_, LS[i])
# image with direct connecting each half
real = np.hstack((A[:,:cols/2],B[:,cols/2:]))
cv2.imwrite('Pyramid_blending2.jpg',ls_)
cv2.imwrite('Direct_blending.jpg',real)
خروجی کد فوق بصورت زیر خواهد بود.
تصویر پردازش شده با پایتون
کتابخانه SimpleCV برای پردازش تصویر در پایتون
کتابخانه SimpleCV یکی دیگر از چارچوبهای منبع باز جهت پردازش تصویر با پایتون و پیادهسازی برنامههای کاربردی مرتبط با حوزه بینایی کامپیوتر محسوب میشود.
با استفاده از این کتابخانه، کاربران قادر خواهند بود به برخی از کتابخانههای سطح بالای بینایی کامپیوتر نظیر OpenCV دسترسی داشته باشند.
ویژگی مهم این کتابخانه این است که کاربران مبتدی، بدون این که لازم باشد تا اطلاعات و دانش کافی در مورد مفاهیمی نظیر «عمقهای بیتی» (Bit Depths)، فرمتهای فایلی (File Format)، «فضاهای رنگی» (Color Spaces) و سایر موارد داشته باشند، به راحتی قادر به کار کردن با این کتابخانه و انجام عملیات پردازش تصویر با پایتون خواهند بود. بازه یادگیری کتابخانه SimpleCV به مراتب کوتاهتر از OpenCV است. برخی از مزایای این کتابخانه عبارتند از:
برنامهنویسان مبتدی، به راحتی قادر به نوشتن برنامههای مرتبط با بینایی کامپیوتر توسط این کتابخانه هستند.
این کتابخانه، توانایی کار کردن با جریانهای ویدئویی (Video Streams)، تصاویر، فایلهای ویدئویی و سایر موارد را دارد (به عبارت دیگر، با انواع فایلها و فرمتهای ویدئویی و تصویری سازگار است).
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه SimpleCV قابل انجام است، نمایش داده خواهد شد.
تابع «آستانهگذاری» (Thresholding): تصویر زیر، نحوه عملکرد تابع Thresholding در کتابخانه SimpleCV را نشان میدهد. این تابع، هر کدام از پیکسلهای یک تصویر را بسته به میزان «روشنایی» (Brightness) آنها، سفید یا سیاه میکند.
from SimpleCV import Image, Color, Display
# Make a function that does a half and half image.
def halfsies(left,right):
result = left
# crop the right image to be just the right side.
crop = right.crop(right.width/2.0,0,right.width/2.0,right.height)
# now paste the crop on the left image.
result = result.blit(crop,(left.width/2,0))
# return the results.
return result
# Load an image from imgur.
img = Image('http://i.imgur.com/lfAeZ4n.png')
# binarize the image using a threshold of 90
# and invert the results.
output = img.binarize(90).invert()
# create the side by side image.
result = halfsies(img,output)
# show the resulting image.
result.show()
# save the results to a file.
result.save('juniperbinary.png')
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
from SimpleCV import Image, Color, Display
# Make a function that does a half and half image.
def halfsies(left,right):
result = left
# crop the right image to be just the right side.
crop = right.crop(right.width/2.0,0,right.width/2.0,right.height)
# now paste the crop on the left image.
result = result.blit(crop,(left.width/2,0))
# return the results.
return result
# Load an image from imgur.
img = Image('http://i.imgur.com/lfAeZ4n.png')
# binarize the image using a threshold of 90
# and invert the results.
output = img.binarize(90).invert()
# create the side by side image.
result = halfsies(img,output)
# show the resulting image.
result.show()
# save the results to a file.
result.save('juniperbinary.png')
@Olhcim
تصویر پردازش شده بصورت زیر خواهد شد:
شروع کار پردازش تصویر با پایتون
کتابخانه Mahotas برای پردازش تصویر با پایتون
کتابخانه Mahotas یکی دیگر از کتابخانههای موجود جهت پردازش تصویر با پایتون و پیادهسازی برنامههای کاربردی مرتبط با حوزه بینایی کامپیوتر است.
در این کتابخانه، علاوه بر اینکه توابع پردازش تصویر مرسوم نظیر «فیلتر گذاری» (Filtering) و «عملیات مورفولوژیکی» (Morphological Operations) تعریف شده است، تعدادی توابع بینایی کامپیوتر مدرن جهت «محاسبه ویژگی» (Feature Computation) نظیر «تشخیص نقاط مهم» (Interest Point Detection) و «توصیف کنندههای محلی» (Local Descriptors) نیز گنجانده شده است.
واسط برنامهنویسی این کتابخانه توسط زبان پایتون نوشته شده است (که برای توسعه سریع برنامههای کاربردی مرتبط با پردازش تصویر با پایتون و یا برنامههای بینایی کامپیوتر بسیار مناسب است)، ولی الگوریتمها در زبان C++ پیادهسازی شدهاند (که سبب افزایش سرعت اجرای کدهای این کتابخانه میشود).
همچنین، کتابخانه Mahotas علاوه بر اینکه سرعت بالایی دارد، «وابستگیهای» (Dependencies) برنامهنویسی بسیار کمی دارد.
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه Mahotas قابل انجام است، نمایش داده خواهد شد.
حل مسأله «پیدا کردن والی» (Finding Wally) توسط کتابخانه Mahotas: هدف از این مسأله پیدا کردن شخصیت والی (Wally) در تصویر زیر است.
from pylab import imshow, show
import mahotas
import mahotas.demos
wally = mahotas.demos.load('Wally')
imshow(wally)
show()
6
from pylab import imshow, show
import mahotas
import mahotas.demos
wally = mahotas.demos.load('Wally')
imshow(wally)
show()
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
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 xrange(2):
pattern[i::4] = -1
v = mahotas.convolve(r-w, pattern)
mask = (v == v.max())
mask = mahotas.dilate(mask, np.ones((48,24)))
np.subtract(wally, .8*wally * ~mask[:,:,None], out=wally, casting='unsafe')
imshow(wally)
show()
2
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 xrange(2):
pattern[i::4] = -1
v = mahotas.convolve(r-w, pattern)
mask = (v == v.max())
mask = mahotas.dilate(mask, np.ones((48,24)))
np.subtract(wally, .8*wally * ~mask[:,:,None], out=wally, casting='unsafe')
imshow(wally)
show()
کتابخانه SimpleITK برای پردازش تصویر با python
کتابخانه SimpleITK، یک سیستم منبع باز و «چند سکویی» (Cross-Platform) است که مجموعهای کامل از ابزارهای نرمافزاری جهت تحلیل تصاویر دیجیتال را در اختیار برنامهنویسان و توسعهدهندگان قرار میدهد.
ویژگی مهم کتابخانه SimpleITK، پشتیبانی از تعداد زیادی مؤلفه نرمافزاری است که برای انجام عملیات پردازشی نظیر فیلتر گذاری، «قطعهبندی تصاویر» (Image Segmentation) و «ثبت تصویر» (Image Registration) روی تصاویر دیجیتالی مورد استفاده قرار میگیرند.
این کتابخانه به زبان C++ نوشته شده است ولی برای دامنه وسیعی از زبانهای برنامهنویسی، از جمله پایتون منتشر شده است.
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه SimpleITK قابل انجام است، نمایش داده خواهد شد.
کاربرد کتابخانه SimpleITK: مصورسازی فرایند از نوع سخت ثبت تصاویر CT/MR (فرایند Rigid CT/MR Registration)، که توسط کتابخانه SimpleITK و زبان پایتون (پردازش تصویر با پایتون) توسعه داده شده است.
#
# Script for generating images illustrating the movement of images and change in
# similarity metric during registration.
#
import SimpleITK as sitk
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
import numpy as np
# Paste the two given images together. On the left will be image1 and on the right image2.
# image2 is also centered vertically in the combined image.
def write_combined_image(image1, image2, horizontal_space, file_name):
combined_image = sitk.Image((image1.GetWidth() + image2.GetWidth() + horizontal_space,
max(image1.GetHeight(), image2.GetHeight())),
image1.GetPixelID(), image1.GetNumberOfComponentsPerPixel())
combined_image = sitk.Paste(combined_image, image1, image1.GetSize(), (0, 0), (0, 0))
combined_image = sitk.Paste(combined_image, image2, image2.GetSize(), (0, 0),
(image1.GetWidth()+horizontal_space,
round((combined_image.GetHeight()-image2.GetHeight())/2)))
sitk.WriteImage(combined_image, file_name)
# Callback invoked when the StartEvent happens, sets up our new data.
def start_plot():
global metric_values, multires_iterations
metric_values = []
multires_iterations = []
# Callback invoked when the EndEvent happens, do cleanup of data and figure.
def end_plot():
global metric_values, multires_iterations
del metric_values
del multires_iterations
# Close figure, we don't want to get a duplicate of the plot latter on.
plt.close()
# Callback invoked when the IterationEvent happens, update our data and
# save an image that includes a visualization of the registered images and
# the metric value plot.
def save_plot(registration_method, fixed, moving, transform, file_name_prefix):
#
# Plotting the similarity metric values, resolution changes are marked with
# a blue star.
#
global metric_values, multires_iterations
metric_values.append(registration_method.GetMetricValue())
# Plot the similarity metric values
plt.plot(metric_values, 'r')
plt.plot(multires_iterations, [metric_values[index] for index in multires_iterations], 'b*')
plt.xlabel('Iteration Number',fontsize=12)
plt.ylabel('Metric Value',fontsize=12)
# Convert the plot to a SimpleITK image (works with the agg matplotlib backend, doesn't work
# with the default - the relevant method is canvas_tostring_rgb())
plt.gcf().canvas.draw()
plot_data = np.fromstring(plt.gcf().canvas.tostring_rgb(), dtype=np.uint8, sep='')
plot_data = plot_data.reshape(plt.gcf().canvas.get_width_height()[::-1] + (3,))
plot_image = sitk.GetImageFromArray(plot_data, isVector=True)
#
# Extract the central axial slice from the two volumes, compose it using the transformation
# and alpha blend it.
#
alpha = 0.7
central_index = round((fixed.GetSize())[2]/2)
moving_transformed = sitk.Resample(moving, fixed, transform,
sitk.sitkLinear, 0.0,
moving_image.GetPixelIDValue())
# Extract the central slice in xy and alpha blend them
combined = (1.0 - alpha)*fixed[:,:,central_index] + \
alpha*moving_transformed[:,:,central_index]
# Assume the alpha blended images are isotropic and rescale intensity
# Values so that they are in [0,255], convert the grayscale image to
# color (r,g,b).
combined_slices_image = sitk.Cast(sitk.RescaleIntensity(combined), sitk.sitkUInt8)
combined_slices_image = sitk.Compose(combined_slices_image,
combined_slices_image,
combined_slices_image)
write_combined_image(combined_slices_image, plot_image, 0,
file_name_prefix + format(len(metric_values), '03d') + '.png')
# Callback invoked when the sitkMultiResolutionIterationEvent happens, update the index into the
# metric_values list.
def update_multires_iterations():
global metric_values, multires_iterations
multires_iterations.append(len(metric_values))
if __name__ == '__main__':
# Read the images
fixed_image = sitk.ReadImage("training_001_ct.mha", sitk.sitkFloat32)
moving_image = sitk.ReadImage("training_001_mr_T1.mha", sitk.sitkFloat32)
# Initial alignment of the two volumes
transform = sitk.CenteredTransformInitializer(fixed_image,
moving_image,
sitk.Euler3DTransform(),
sitk.CenteredTransformInitializerFilter.GEOMETRY)
# Multi-resolution rigid registration using Mutual Information
registration_method = sitk.ImageRegistrationMethod()
registration_method.SetMetricAsMattesMutualInformation(numberOfHistogramBins=50)
registration_method.SetMetricSamplingStrategy(registration_method.RANDOM)
registration_method.SetMetricSamplingPercentage(0.01)
registration_method.SetInterpolator(sitk.sitkLinear)
registration_method.SetOptimizerAsGradientDescent(learningRate=1.0,
numberOfIterations=100,
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
convergenceMinimumValue=1e-6,
convergenceWindowSize=10)
registration_method.SetOptimizerScalesFromPhysicalShift()
registration_method.SetShrinkFactorsPerLevel(shrinkFactors = [4,2,1])
registration_method.SetSmoothingSigmasPerLevel(smoothingSigmas=[2,1,0])
registration_method.SmoothingSigmasAreSpecifiedInPhysicalUnitsOn()
registration_method.SetInitialTransform(transform)
# Add all the callbacks responsible for ploting
registration_method.AddCommand(sitk.sitkStartEvent, start_plot)
registration_method.AddCommand(sitk.sitkEndEvent, end_plot)
registration_method.AddCommand(sitk.sitkMultiResolutionIterationEvent, update_multires_iterations)
registration_method.AddCommand(sitk.sitkIterationEvent, lambda: save_plot(registration_method, fixed_image, moving_image, transform, 'output/iteration_plot'))
registration_method.Execute(fixed_image, moving_image)
© 2019 GitHub, Inc.
1
#
# Script for generating images illustrating the movement of images and change in
# similarity metric during registration.
#
import SimpleITK as sitk
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
import numpy as np
# Paste the two given images together. On the left will be image1 and on the right image2.
# image2 is also centered vertically in the combined image.
def write_combined_image(image1, image2, horizontal_space, file_name):
combined_image = sitk.Image((image1.GetWidth() + image2.GetWidth() + horizontal_space,
max(image1.GetHeight(), image2.GetHeight())),
image1.GetPixelID(), image1.GetNumberOfComponentsPerPixel())
combined_image = sitk.Paste(combined_image, image1, image1.GetSize(), (0, 0), (0, 0))
combined_image = sitk.Paste(combined_image, image2, image2.GetSize(), (0, 0),
(image1.GetWidth()+horizontal_space,
round((combined_image.GetHeight()-image2.GetHeight())/2)))
sitk.WriteImage(combined_image, file_name)
# Callback invoked when the StartEvent happens, sets up our new data.
def start_plot():
global metric_values, multires_iterations
metric_values = []
multires_iterations = []
# Callback invoked when the EndEvent happens, do cleanup of data and figure.
def end_plot():
global metric_values, multires_iterations
del metric_values
del multires_iterations
# Close figure, we don't want to get a duplicate of the plot latter on.
plt.close()
# Callback invoked when the IterationEvent happens, update our data and
# save an image that includes a visualization of the registered images and
# the metric value plot.
def save_plot(registration_method, fixed, moving, transform, file_name_prefix):
#
# Plotting the similarity metric values, resolution changes are marked with
# a blue star.
#
global metric_values, multires_iterations
metric_values.append(registration_method.GetMetricValue())
# Plot the similarity metric values
plt.plot(metric_values, 'r')
plt.plot(multires_iterations, [metric_values[index] for index in multires_iterations], 'b*')
plt.xlabel('Iteration Number',fontsize=12)
plt.ylabel('Metric Value',fontsize=12)
# Convert the plot to a SimpleITK image (works with the agg matplotlib backend, doesn't work
# with the default - the relevant method is canvas_tostring_rgb())
plt.gcf().canvas.draw()
plot_data = np.fromstring(plt.gcf().canvas.tostring_rgb(), dtype=np.uint8, sep='')
plot_data = plot_data.reshape(plt.gcf().canvas.get_width_height()[::-1] + (3,))
plot_image = sitk.GetImageFromArray(plot_data, isVector=True)
#
# Extract the central axial slice from the two volumes, compose it using the transformation
# and alpha blend it.
#
alpha = 0.7
central_index = round((fixed.GetSize())[2]/2)
moving_transformed = sitk.Resample(moving, fixed, transform,
sitk.sitkLinear, 0.0,
moving_image.GetPixelIDValue())
# Extract the central slice in xy and alpha blend them
combined = (1.0 - alpha)*fixed[:,:,central_index] + \
alpha*moving_transformed[:,:,central_index]
# Assume the alpha blended images are isotropic and rescale intensity
# Values so that they are in [0,255], convert the grayscale image to
# color (r,g,b).
combined_slices_image = sitk.Cast(sitk.RescaleIntensity(combined), sitk.sitkUInt8)
combined_slices_image = sitk.Compose(combined_slices_image,
combined_slices_image,
combined_slices_image)
write_combined_image(combined_slices_image, plot_image, 0,
file_name_prefix + format(len(metric_values), '03d') + '.png')
# Callback invoked when the sitkMultiResolutionIterationEvent happens, update the index into the
# metric_values list.
def update_multires_iterations():
global metric_values, multires_iterations
multires_iterations.append(len(metric_values))
if __name__ == '__main__':
# Read the images
fixed_image = sitk.ReadImage("training_001_ct.mha", sitk.sitkFloat32)
moving_image = sitk.ReadImage("training_001_mr_T1.mha", sitk.sitkFloat32)
# Initial alignment of the two volumes
transform = sitk.CenteredTransformInitializer(fixed_image,
moving_image,
sitk.Euler3DTransform(),
sitk.CenteredTransformInitializerFilter.GEOMETRY)
# Multi-resolution rigid registration using Mutual Information
registration_method = sitk.ImageRegistrationMethod()
registration_method.SetMetricAsMattesMutualInformation(numberOfHistogramBins=50)
registration_method.SetMetricSamplingStrategy(registration_method.RANDOM)
registration_method.SetMetricSamplingPercentage(0.01)
registration_method.SetInterpolator(sitk.sitkLinear)
registration_method.SetOptimizerAsGradientDescent(learningRate=1.0,
numberOfIterations=100,
convergenceMinimumValue=1e-6,
convergenceWindowSize=10)
registration_method.SetOptimizerScalesFromPhysicalShift()
registration_method.SetShrinkFactorsPerLevel(shrinkFactors = [4,2,1])
registration_method.SetSmoothingSigmasPerLevel(smoothingSigmas=[2,1,0])
registration_method.SmoothingSigmasAreSpecifiedInPhysicalUnitsOn()
registration_method.SetInitialTransform(transform)
# Add all the callbacks responsible for ploting
registration_method.AddCommand(sitk.sitkStartEvent, start_plot)
registration_method.AddCommand(sitk.sitkEndEvent, end_plot)
registration_method.AddCommand(sitk.sitkMultiResolutionIterationEvent, update_multires_iterations)
registration_method.AddCommand(sitk.sitkIterationEvent, lambda: save_plot(registration_method, fixed_image, moving_image, transform, 'output/iteration_plot'))
registration_method.Execute(fixed_image, moving_image)
© 2019 GitHub, Inc.
کتابخانه pgmagick برای پردازش تصویر
کتابخانه pgmagick، یک Wrapper توسعه داده شده جهت استفاده از کتابخانه GraphicsMagick در زبان پایتون محسوب میشود.
کتابخانه GraphicsMagick، یک سیستم پردازش تصویر است که به دلیل امکانات فوقالعاده و گسترده، به آن «چاقوی سوئیسی» (Swiss Knife) پردازش تصویر نیز گفته میشود.
در این کتابخانه، مجموعهای گسترده و قدرتمند از ابزارها و کتابخانههای برنامهنویسی (جهت پردازش تصویر) تعبیه شده است که از امکاناتی نظیر خواندن، نوشتن و دستکاری تصاویر دیجیتالی در بیش از 88 فرمت تصویری عمده نظیر GIF ،JPEG ،JPEG-2000 ،PNG ،TIFF و سایر موارد پشتیبانی میکند.
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه pgmagick قابل انجام است، نمایش داده خواهد شد.
«مقیاسگذاری تصویر» (Image Scaling):
from pgmagick import Image, Blob
img = Image(Blob(open('lena_std.jpg').read()), Geometry(200, 200))
img.scale('200x200')
img.write('lena_scale.jpg')
from pgmagick import Image, Blob
img = Image(Blob(open('lena_std.jpg').read()), Geometry(200, 200))
img.scale('200x200')
img.write('lena_scale.jpg')
ابزار Pycairo برای پردازش تصویر
ابزار Pycairo، مجموعهای از «مقیدسازیهای» (Bindings) توسعه داده شده در زبان پایتون، جهت استفاده از کتابخانه گرافیکی Cairo است.
کتابخانه Cairo نیز یک کتابخانه گرافیکی دوبُعدی جهت رسم گرافیکهای برداری محسوب میشود. «گرافیکهای برداری» (Vector Graphics) از آن جهت حائز اهمیت هستند که در اثر فرایندهای پردازشی نظیر «تغییر اندازه» (Resize) یا «تبدیل» (Transformation)، وضوح خود را از دست نمیدهند.
ابزار Pycairo برای فراخوانی دستورات کتابخانه Cairo در زبان پایتون به کار میرود.
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه Pycairo قابل انجام است، نمایش داده خواهد شد.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
رسم خط با استفاده از ابزار Pycairo: خط، یکی از سادهترین گرافیکهای برداری محسوب میشود. برای رسم یک خط، دو تابع از ابزار Pycairo باید فراخوانی
پردازش تصویر با پایتون Python
23
پردازش تصویر با پایتون
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
تصاویر، جهان را تعریف می کنند و هر تصویر داستان خاص خود را دارد یا حاوی اطلاعات بسیار مهمی است که می تواند از بسیاری جهات مفید باشد. این اطلاعات را می توان با کمک تکنیکی به نام پردازش تصویر به دست آورد. پردازش تصویر با پایتون یکی از رایجترین حوزه هایی است که برنامه نویسان پایتون می توانند وارد آن شوند.
این بخش اصلی بینایی کامپیوتری است که در بسیاری از حوزه های دنیای واقعی مانند رباتیک، ماشینهای خودران و تشخیص اشیا نقش مهمی دارد. پردازش تصویر در پایتون به ما امکان می دهد هزاران تصویر را در یک زمان تغییر دهیم و دستکاری کنیم و بینش مفیدی را از آنها استخراج کنیم. تقریباً در هر زمینه ای طیف گسترده ای از کاربرد ها را دارد.
پایتون یکی از زبان های برنامه نویسی پرکاربرد برای این منظور است. کتابخانه ها و ابزارهای شگفت انگیز آن در دستیابی به پردازش تصویر بسیار کارآمد هستند. در این مقاله الگوریتمها، تکنیکها و ابزارهای کلاسیک برای پردازش تصویر و دریافت خروجی مورد نظر را مورد بررسی قرار می دهیم. قبل از شروع، در صورتی که با برنامه نویسی پایتون آشنایی ندارید، پیشنهاد می کنیم تا دوره آموزش برنامه نویسی پایتون را مشاهده کنید.
پردازش تصویر با پایتون چیست؟
همانطور که از نامش مشخص است، پردازش تصویر به معنای پردازش تصویر می باشد. ممکن است شامل تکنیک های مختلفی باشد که برای رسیدن به هدف می توانیم از آنها استفاده کنیم. خروجی نهایی می تواند به صورت تصویر یا ویژگی مربوط به آن تصویر باشد. این فرایند می تواند برای تجزیه و تحلیل بیشتر و تصمیم گیری استفاده شود.
آموزش پردازش تصویر با پایتون
تصویر چیست؟
یک تصویر را می توان به عنوان یک تابع دو بعدی F(x,y) نشان داد که در آن x و y مختصات فضایی هستند. دامنه F در یک مقدار خاص x,y به عنوان شدت تصویر در آن نقطه شناخته می شود. اگر x، y و مقدار دامنه محدود باشد، آن را تصویر دیجیتال می نامیم. آرایه ای از پیکسل ها است که در ستون ها و ردیف ها مرتب شده اند. پیکسل ها عناصر یک تصویر هستند که حاوی اطلاعاتی درباره شدت و رنگ هستند. یک تصویر همچنین می تواند به صورت سه بعدی نمایش داده شود که در آن x، y و z به مختصات فضایی تبدیل می شوند. پیکسل ها در قالب یک ماتریس مرتب شده اند. این به عنوان یک تصویر RGB شناخته می شود.
انواع مختلفی از تصاویر وجود دارد:
تصویر RGB: شامل سه لایه تصویر دو بعدی است که این لایه ها، همان کانال های قرمز، سبز و آبی هستند.
تصویر در مقیاس خاکستری: این تصاویر دارای سایه های سیاه و سفید هستند و فقط یک کانال دارند.
الگوریتم های کلاسیک پردازش تصویر
1. پردازش تصویر مورفولوژیکی
پردازش تصویر مورفولوژیکی (Morphological Image Processing) سعی در حذف نواقص از تصاویر باینری دارد، زیرا مناطق باینری تولید شده توسط آستانه ساده می توانند توسط نویز تحریف شوند. همچنین به صاف کردن تصویر با استفاده از عملیات باز و بسته کردن کمک می کند. عملیات مورفولوژیکی را می توان به تصاویر خاکستری مرتبط کرد.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
این پروسه شامل عملیات غیر خطی مربوط به ساختار ویژگی های یک تصویر است. این تکنیک یک تصویر را با استفاده از الگوی کوچک به نام عنصر ساختاری که در مکانهای مختلف ممکن در تصویر قرار میگیرد و با پیکسلهای همسایگی مربوطه مقایسه میشود، تجزیه و تحلیل میکند. یک عنصر ساختاری یک ماتریس کوچک با مقادیر 0 و 1 است.
بهتر است دو عملیات اساسی پردازش تصویر مورفولوژیکی، Dilation و Erosion را ببینیم:
عملیات Dilation: پیکسل ها را به مرزهای جسم در یک تصویر اضافه می کند.
عملیات Erosion: پیکسل ها را از مرزهای شی حذف می کند.
تعداد پیکسل های حذف شده یا اضافه شده به تصویر اصلی به اندازه عنصر ساختار بستگی دارد.
در این مرحله ممکن است فکر کنید “عنصر ساختاری چیست؟” بگذار توضیح بدهم:
عنصر ساختاری ماتریسی است که فقط از 0 و 1 تشکیل شده است که می تواند هر شکل و اندازه دلخواه داشته باشد. در تمام مکانهای ممکن در تصویر قرار گرفته و با همسایگی پیکسلهای مربوطه مقایسه میشود.
2. پردازش تصویر گاوسی (Gaussian)
تاری گاوسی، که به هموارسازی گاوسی نیز معروف است، نتیجه تار کردن یک تصویر توسط یک تابع گاوسی است. برای کاهش نویز تصویر و کاهش جزئیات استفاده می شود. جلوه بصری این تکنیک محو کردن شبیه به تماشای یک تصویر از طریق صفحه نمایش شفاف است. گاهی اوقات در بینایی کامپیوتر برای بهبود تصویر در مقیاس های مختلف یا به عنوان یک تکنیک تقویت داده در یادگیری عمیق استفاده می شود.
تابع گاوسی مانند مثال زیر است:
تابع گاوسی
در عمل، بهترین کار این است که با تقسیم فرآیند به دو پاس، از خاصیت تفکیک پذیر گاوسی استفاده کنیم. در اولین پاس، از یک هسته یک بعدی برای محو کردن تصویر فقط در جهت افقی یا عمودی استفاده می شود. در پاس دوم از همان هسته یک بعدی برای محو کردن جهت باقی مانده استفاده می شود. اثر حاصل مانند درهم پیچیدن با یک هسته دو بعدی در یک پاس است. بیایید یک مثال ببینیم تا بفهمیم فیلترهای گاوسی با یک تصویر چه می کنند.
3. تبدیل فوریه در پردازش تصویر
تبدیل فوریه یک تصویر را به اجزای سینوس و کسینوس تجزیه می کند. این برنامه چندین برنامه مانند بازسازی تصویر، فشرده سازی تصویر یا فیلتر کردن تصویر دارد. از آنجایی که ما در مورد تصاویر صحبت می کنیم، تبدیل فوریه گسسته را در نظر خواهیم گرفت. بیایید یک سینوسی را در نظر بگیریم، از سه چیز تشکیل شده است:
بزرگی – مربوط به کنتراست
فرکانس فضایی – مربوط به روشنایی
فاز – مربوط به اطلاعات رنگ
تصویر در حوزه فرکانس به صورت زیر است:
تصویر در حوزه فرکانس
4. Edge Detection در پردازش تصویر
تشخیص لبه، یک تکنیک پردازش تصویر برای یافتن مرزهای اشیاء درون تصویر است. با تشخیص ناپیوستگی در روشنایی کار می کند. این فرایند می تواند در استخراج اطلاعات مفید از تصویر بسیار مفید باشد زیرا بیشتر اطلاعات شکل در لبه ها محصور شده است. روشهای کلاسیک تشخیص لبه با تشخیص ناپیوستگی در روشنایی کار میکنند.
در صورت تشخیص نویز در تصویر در حالی که تغییرات سطوح خاکستری را تشخیص می دهد، می تواند به سرعت واکنش نشان دهد. لبه ها به عنوان ماکزیمم محلی گرادیان تعریف می شوند. رایج ترین الگوریتم تشخیص لبه، الگوریتم تشخیص لبه سوبل است. اپراتور تشخیص سوبل از هسته های کانولوشنال 3*3 تشکیل شده است. یک هسته ساده Gx و یک هسته 90 درجه چرخش Gy. اندازه گیری های جداگانه با اعمال هر دو هسته به طور جداگانه روی تصویر انجام می شود.
5. پردازش تصویر موجک
ما یک تبدیل فوریه را دیدیم اما فقط به فرکانس محدود می شود. موجک ها هم زمان و هم فرکانس را در نظر می گیرند. این تبدیل برای سیگنال های غیر ثابت مناسب است. می دانیم که لبه ها یکی از بخش های مهم تصویر هستند، در حالی که با اعمال فیلترهای سنتی متوجه شده ایم که نویز حذف می شود اما تصویر تار می شود. تبدیل موجک به گونه ای طراحی شده است که وضوح فرکانس خوبی برای اجزای فرکانس پایین بدست آوریم. در زیر مثال تبدیل موجک دو بعدی آمده است:
پردازش تصویر با پایتون توسط شبکه های عصبی
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
شبکه های عصبی شبکه های چند لایه ای هستند که از نورون ها یا گره ها تشکیل شده اند. این نورون ها واحدهای پردازشی اصلی شبکه عصبی هستند. آنها طوری طراحی شده اند که مانند مغز انسان عمل کنند. آنها داده ها را دریافت می کنند، خود را آموزش می دهند تا الگوهای موجود در داده ها را تشخیص دهند و سپس خروجی را پیش بینی کنند. یک شبکه عصبی پایه دارای سه لایه است:
پردازش تصویر با پایتون چیست
لایه ورودی
لایه پنهان
لایه خروجی
پردازش تصویر با پایتون یکی از کاربرد های پایتون است که بسیاری از فعالیت های حرفه ای در دنیای امروزی وابسته به این تکنولوژی می باشد. لایه های ورودی، ورودی را دریافت می کنند، لایه خروجی خروجی را پیش بینی می کند و لایه های پنهان بیشتر محاسبات را انجام می دهند. تعداد لایه های پنهان را می توان با توجه به نیازها تغییر داد. حداقل باید یک لایه پنهان در یک شبکه عصبی وجود داشته باشد.
اساس کار پردازش تصویر با پایتون چگونه است؟ (بر اساس شبکه عصبی) :
بیایید یک تصویر را در نظر بگیریم، هر پیکسل به عنوان ورودی به هر نورون لایه اول تغذیه می شود، نورون های یک لایه از طریق کانال ها به نورون های لایه بعدی متصل می شوند.
به هر یک از این کانال ها یک مقدار عددی به نام وزن اختصاص داده می شود.
ورودی ها در وزن های مربوطه ضرب می شوند و این مجموع وزنی سپس به عنوان ورودی به لایه های پنهان داده می شود.
خروجی از لایه های پنهان از طریق یک تابع فعال سازی منتقل می شود که تعیین می کند آیا نورون خاص فعال می شود یا خیر.
نورون های فعال شده، داده ها را به لایه های پنهان بعدی منتقل می کنند. به این ترتیب داده ها از طریق شبکه منتشر می شوند که به آن انتشار به جلو می گویند.
در لایه خروجی، نورونی با بالاترین مقدار، خروجی را پیش بینی می کند. این خروجی ها مقادیر احتمال هستند.
خروجی پیش بینی شده با خروجی واقعی مقایسه می شود تا خطا بدست آید. سپس این اطلاعات از طریق شبکه بازگردانده می شود، این فرآیند به عنوان Backpropagation شناخته می شود.
بر اساس این اطلاعات، وزن ها تنظیم می شوند. این چرخه انتشار به جلو و عقب چندین بار روی چندین ورودی انجام می شود تا زمانی که شبکه در اکثر موارد خروجی را به درستی پیش بینی کند.
این به فرآیند آموزش شبکه عصبی پایان می دهد. زمان صرف شده برای آموزش شبکه عصبی ممکن است در برخی موارد زیاد شود.
در تصویر زیر ai مجموعه ورودیها، wi وزنها، z خروجی و g هر تابع فعالسازی است.
در اینجا چند دستورالعمل برای آماده سازی داده ها برای پردازش تصویر آورده شده است.
در پردازش تصویر با پایتون، داده های بیشتری باید به مدل داده شود تا نتایج بهتری حاصل آید.
مجموعه داده های تصویر باید از کیفیت بالایی برخوردار باشند تا اطلاعات واضح تری به دست آورید، اما برای پردازش آنها ممکن است به شبکه های عصبی عمیق تری نیاز داشته باشید.
در بسیاری از موارد تصاویر RGB قبل از تغذیه به شبکه عصبی به مقیاس خاکستری تبدیل می شوند.
ابزار های پردازش تصویر در پایتون
مقاله پردازش تصویر با پایتون
1. OpenCV
مخفف عبارت Open Source Computer Vision Library است. این کتابخانه شامل بیش از 2000 الگوریتم بهینه شده است که برای بینایی کامپیوتر و یادگیری ماشین مفید است. روش های مختلفی برای استفاده از opencv در پردازش تصویر وجود دارد که در زیر به چند مورد اشاره می شود:
تبدیل تصاویر از یک فضای رنگی به فضای دیگر مانند بین BGR و HSV، BGR و خاکستری و غیره.
انجام آستانه گذاری روی تصاویر، مانند آستانه گذاری ساده، آستانه گذاری تطبیقی و غیره.
صاف کردن تصاویر، مانند اعمال فیلترهای سفارشی بر روی تصاویر و محو کردن تصاویر.
انجام عملیات ریخت شناسی روی تصاویر.
ساخت اهرام تصویری
استخراج پیش زمینه از تصاویر با استفاده از الگوریتم GrabCut.
تقسیم بندی تصویر با استفاده از الگوریتم حوضه آبخیز
2. Scikit-Image
Scikit-Image یک کتابخانه منبع باز است که برای پیش پردازش تصویر استفاده می شود. از یادگیری ماشین با توابع داخلی استفاده می کند و می تواند عملیات پیچیده ای را روی تصاویر تنها با چند عملکرد انجام دهد. با آرایههای numpy کار میکند و حتی برای کسانی که تازه وارد پایتون شدهاند، یک کتابخانه نسبتاً ساده است. برخی از عملیاتی هایی که می توان با استفاده از تصویر scikit انجام داد عبارتند از:
برای پیاده سازی عملیات آستانه گذاری از متد try_all_threshold() روی تصویر استفاده کنید. از هفت الگوریتم آستانه جهانی استفاده خواهد کرد.
برای پیاده سازی تشخیص لبه از متد sobel() در ماژول فیلترها استفاده کنید. این روش به یک تصویر 2 بعدی در مقیاس خاکستری به عنوان ورودی نیاز دارد، بنابراین باید تصویر را به مقیاس خاکستری تبدیل کنیم.
برای پیاده سازی هموارسازی گاوسی از روش ()gaussian در ماژول فیلترها استفاده کنید.
برای اعمال یکسان سازی هیستوگرام، از ماژول نوردهی، برای اعمال یکسان سازی هیستوگرام معمولی بر روی تصویر اصلی، از روش ()qualize_hist و برای اعمال یکسان سازی تطبیقی، از روش ()qualize_adapthist استفاده کنید.
برای چرخاندن تصویر از تابع rotate() در زیر ماژول تبدیل استفاده کنید.
برای تغییر مقیاس تصویر از تابع rescale() از ماژول تبدیل استفاده کنید.
برای اعمال عملیات مورفولوژیکی از تابع binary_erosion() و binary_dilation() در زیر ماژول مورفولوژی استفاده کنید.
3.PIL/pillow کتابخانه پردازش تصویر
PIL مخفف Python Image Library و Pillow چنگال PIL توسط Alex Clark و Contributors است. این یکی از کتابخانه های قدرتمند است. این کتابخانه پردازش تصویر طیف گسترده ای از فرمت های تصویر مانند PPM، JPEG، TIFF، GIF، PNG و BMP پشتیبانی می کند.
این فریم ورک می تواند به شما کمک کند چندین عملیات را روی تصاویر انجام دهید، مانند چرخش، تغییر اندازه، برش، مقیاس خاکستری و غیره. اجازه دهید برخی از این عملیات ها را مرور کنیم. برای انجام عملیات دستکاری ماژولی در این کتابخانه وجود دارد به نام Image.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
برای بارگذاری یک تصویر از متد open() استفاده کنید.
برای نمایش تصویر از متد show() استفاده کنید.
برای شناخت فرمت فایل از ویژگی format استفاده کنید
برای دانستن اندازه تصویر از ویژگی اندازه استفاده کنید
برای اطلاع از فرمت پیکسلی از ویژگی mode استفاده کنید.
برای ذخیره فایل تصویر پس از پردازش دلخواه، از روش save() استفاده کنید. Pillow فایل تصویر را با فرمت png ذخیره می کند.
برای تغییر اندازه تصویر از متد resize() استفاده کنید که دو آرگومان به عنوان عرض و ارتفاع می گیرد.
برای برش تصویر، از متد crop() استفاده کنید که یک آرگومان را بهعنوان تاپل جعبهای میگیرد که موقعیت و اندازه منطقه برشخورده را مشخص میکند.
برای چرخاندن تصویر از متد rotate() استفاده کنید که یک آرگومان را به عنوان عدد صحیح یا عدد شناور نشان دهنده درجه چرخش می گیرد.
4. کتابخانه پردازش تصویر NumPy
با استفاده از این کتابخانه میتوانید تکنیکهای ساده تصویر مانند ورق زدن تصاویر، استخراج ویژگیها و تجزیه و تحلیل آنها را نیز انجام دهید. تصاویر را می توان با آرایه های چند بعدی numpy نشان داد و بنابراین نوع آنها NdArrays است. یک تصویر رنگی یک آرایه بی رنگ با 3 بعد است. با برش آرایه چند بعدی می توان کانال های RGB را از هم جدا کرد.
1999 توسط گری برادسکی در اینتل آغاز شد و اولین بار در سال 2000 منتشر شد. وادیم پیزارفسکی به گری برادسکی پیوست تا بتواند تیم OpenCV نرم افزار روسی اینتل را مدیریت کند. در سال 2005، OpenCV در Stanley، وسیله نقلیه که در سال 2005 DARPA Grand Challenge برنده شد، مورد استفاده قرار گرفت. بعدها توسعه فعال خود را تحت حمایت ویلو گاراژ ادامه داد، با گری برادسکی و وادیم پیزاروفسکی رهبری این پروژه. در حال حاضر، OpenCV از بسیاری از الگوریتم های مرتبط با Computer Vision و Machine Learning پشتیبانی می کند و روز به روز گسترش می یابد.
در حال حاضر OpenCV از طیف گسترده ای از زبان های برنامه نویسی مانند C ++، Python، Java و غیره پشتیبانی می کند و در سیستم عامل های مختلف از جمله ویندوز، لینوکس، OS X، اندروید، iOS و غیره پشتیبانی می کند. همچنین رابط های مبتنی بر CUDA و OpenCL نیز برای توسعه بالا سرعت عمل GPU. OpenCV-Python API پایتون OpenCV است. این بهترین ویژگی های OpenCV C ++ API و زبان پایتون را ترکیب می کند.
پایتون یک زبان برنامه نویسی عمومی است که توسط گیدو ون روسوم ساخته شده است که در کوتاه مدت بسیار محبوب به نظر می رسد عمدتا به دلیل سادگی و خواندن کد آن است. این برنامهنویس را قادر میسازد ایدههای خود را در خطوط کمتر از کد بدون نیاز به خوانایی به نمایش بگذارد.
در مقایسه با زبان های دیگر مانند C / C ++، پایتون کندتر است. اما یکی دیگر از ویژگی های مهم Python این است که می توان آن را به راحتی با C / C ++ گسترش داد. این ویژگی به ما کمک می کند تا کدهای محاسباتی فشرده را در C / C ++ بنویسیم و یک بسته بندی پایتون برای آن ایجاد کنیم تا بتوانیم از این پلاگین ها به عنوان ماژول های پایتون استفاده کنیم. این به ما دو مزیت میدهد: اول، کد ما همانند کد اصلی C / C ++ (از آنجا که C ++ C ++ واقعی در پس زمینه کار می کند) و دوم، کد بسیار ساده ای در Python است. این چگونه OpenCV-Python کار می کند، این یک بسته بندی پایتون در حین اجرای C ++ اصلی است.
امیدواریم که حالتون عالی باشه.
اگه دنبال پروژه تشخیص و شناسایی چهره هستی، خوب جایی اومدی…
در ادامه با ویژگیهای پروژهای آشنا میشین که امیدواریم ازش لذت ببرین و فوق العاده براتون مفید باشه.
این پروژه با زبان پایتون (Python) و کتابخونه OpenCV نوشته شده که به راحتی میتونین تصاویر چهره مدنظر خودتون رو بهش بدین تا اونها رو یاد بگیره و در زمینههای مختلف مثل تشخیص هویت از روی چهره، سیستم حضور غیاب با چهره، مقالات علمی-پژوهشی، پروژه پایاننامه کارشناسی، پروژه درسی و … ازش استفاده کنین.
نمونه خروجی پروژه:
از مزیتهای استفاده از زبان پایتون میشه به درک سریع، یادگیری راحت، امکانات زیاد و قابلیت صنعتی سازی اون نام برد. این پروژه از دو بخش “آموزش (train)” و “تست (test)” ساخته شده که پشت سر هم قرار گرفتن. فقط کافیه تصاویر چهره رو به تعداد کلاسهای مدنظر خودتون (به تعداد افراد)، در پوشه مربوطه قرار بدین و سپس کد رو اجرا کنین. تصاویر یکی یکی خونده میشن و مرحله تشخیص مکان صورت (چهره) و یادگیری انجام میشه.
پروژه تشخیص و شناسایی چهره با OpenCV و پایتون
بعد از اتمام این مرحله، یک مدل (model) از فرآیندهای یادگیری برای شما ذخیره میشه که اگه دوباره خواستین اجرا کنین، لازم نباشه مراحل یادگیری مجددا تکرار بشه.
بعد از این مرحله کدهای تست کردن مدل آموزش دیده اجرا میشن. این پروژه برای دو حالت ۱- تشخیص روی تصاویر (Image) و ۲- تشخیص روی ویدیو یا وبکم (WebcamVideo) آماده شده که شما بسته به نیازتون میتونین یکی رو تهیه کنین.
پروژه تشخیص و شناسایی چهره با OpenCV و پایتون
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
در حالت اول برای تست فقط کافیه اسم تصویر مدنظر خودتون رو در متغیر ‘image’ وارد کنین، تا هم موقعیت چهره تشخیص داده بشه و هم کلاس مربوط به این چهره (طبق تصاویری که آموزش دادین) شناسایی بشه. در حالت دوم پروژه، یعنی تشخیص روی ویدیو یا وبکم، فقط کافیه اسم ویدیو موردنظر رو در قسمت مربوطه قرار بدین و یا برای استفاده از وبکم، عدد صفر (یا یک) را به جای اسم ویدیو وارد کنین، تا اینکه پردازش روی تصاویر دریافتی از وبکم انجام شود. خروجی پردازش نیز به صورت خودکار در یک ویدیو جداگانه برای شما ذخیره میشود.
طبق ویدیوی خروجی پروژه، ما از این پروژه برای تشخیص و شناسایی چهره دو بازیگر (ساعد سهیلی و جواد عزتی) استفاده کردهایم.
دیتاست پروژه تشخیص و شناسایی چهره با OpenCV و پایتون
ویژگی ها:
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
– شامل دو مرحله آموزش (train) و تست (test)
– قابلیت تشخیص و شناسایی چندین چهره در یک تصویر
– استفاده راحت برای تصاویر موردنظر خود
– تغییر راحت لیبل ها (labels)
– مناسب برای پروژه های دانشجویی و درسی
– استفاده از زبان پایتون (Python)
– به همراه فایل نصب آفلاین OpenCV و راهنما
– سطح پروژه: مقدماتی و متوسط
نکتهها:
– مراحل نصب ماژولهای مورد نیاز در فایل PDF توضیح داده شده است.
– همچنین ماژولهای مورد نیاز برای نصب آفلاین، به صورت جداگانه هم در فایل دریافتی وجود دارد و نحوه نصب آفلاین ماژولها نیز گفته شده است.
– سرعت پردازش ویدیو به قدرت پردازش سیستم شما دارد، اما در مجموع میتوان گفت سرعت تشخیص سریع میباشد.
– برای عملکرد مطلوب، چهرهها بایستی تا جای ممکن در زاویه مستقیم قرار داشته باشند.
– بدیهی است که ویدیوی خروجی، به صورت بدون صدا میباشد و در صورت نیاز باید صدا را جداگانه به ویدیو متصل کنید.
در صورت استقبال از این پروژه، نسخههای پیشرفتهتر (با استفاده از یادگیری عمیق) نیز برای شما کاربران عزیز قرار خواهد گرفت.
امیدواریم از دانلود این پروژه لذت ببرین و مورد
انجام پروژه پردازش تصویر با پایتون
با سلام. ما یک تیم متخصص از افراد در زمینه دیتاساینس و بینایی ماشین هستم و بیشتر از 4 سال است به صورت حرفه ای و مداوم در حال انجام پروژه های گوناگون با زبان پایتون هستیم. پروژه هایی شامل Object Detection – شناسایی اشیا، طبقه بندی تصاویر ، بازطراحی معماری یولو YOLO و بهبود معماری شبکه های کانولوشن. در این مدت تلاش کردیم به صورت حرفه ای پروژه ها را انجام داده و در زمان مقرر با کیفیت خواسته شده تحویل دهیم.
بهبود عملکرد شبکه عصبی کانولوشن با استفاده از روش PSO
پروژه، پروژه پردازش تصویر
شبکه عصبی کانولوشنال (CNN) یکی از پرکاربردترین تکنیک های یادگیری عمیق است. روش های مختلفی از مدل ها برای یادگیری در شبکه های CNN پیشنهاد و بهبود یافته است. هنگام کار با CNN، تعیین هاپیرپارامترهای بهینه ضروری است. اگر تعداد …
بهبود عملکرد شبکه عصبی کانولوشن با استفاده از روش PSO ادامه مطلب »
آبان ۱۱ ۱۴۰۱
بهبود عملکرد معماری CondenseNet با روش یادگیری خودناظر
پروژه، پروژه پردازش تصویر
هدف از انجام این پروژه پیاده سازی و بهبود روش CondenseNet است که در مقاله معرفی شده است. به همین منظور در ابتدا اصل مقاله پیاده سازی شد و سپس روش جدیدی برای بهبود عملکرد آن ارایه شد. این پروژه …
ساخت برنامه شناسایی چهره در پایتون
آموزش، آموزش تصویری و گام به گام، پردازش تصویر، کاربرد در صنعت، یادگیری ماشین
در این پست ، من به شما نشان می دهم که چگونه با استفاده از پایتون برنامه شناسایی چهره خود را بسازید. ساخت برنامه ای که چهره ها را شناسایی و تشخیص دهد یک پروژه بسیار جالب و سرگرم کننده برای شروع با بینایی کامپیوتر است.
تلفیق پایتون و OpenCV، علاوه بر توانمندی های گسترده و چشم گیر خود، از یادگیری آسان و مناسبی برای فراگیری افرادی که در ابتدای مسیر پردازش تصویر و کدنویسی هستند نیز برخوردار است. آموزش این فرادرس، به صورت گام به گام با معرفی، نصب و بارگذاری تصاویر به شکل کاملا سریع و آسان آغاز شده و سپس با اعمال عملیات اصلی متداول روی تصاویر، اعمال عملیات ریاضی و تبدیلات هندسی ادامه پیدا کرده و فیلترهای کاربردی مختلف و نحوه پیاده سازی آن ها روی تصویر بیان خواهد شد. همچنین استفاده از پرکاربردترین روش ها برای تشخیص لبه، تبدیلات مورفلوژیک، هیستوگرام و اشاره چند روش تطبیق الگو که از مهم ترین بخش ها و اهداف هر برنامه پردازش تصویر است، به خوبی و آسانی تشریح خواهد شد.
آموزش مقدماتی پردازش تصویر با اپن سی وی OpenCV در پایتون Python
تعداد دانشجو
۳,۰۴۲ نفر
مدت زمان
۳ ساعت و ۱۰ دقیقه
هزینه عادی آموزش
۱۸۹,۰۰۰ تومان
در طرح تخفیف
۷۵,۶۰۰ تومان
۰۲:۰۹:۵۲:۰۷
محتوای این آموزش
(توضیحات)
تضمین کیفیت
✅
(توضیحات)
۱۸ بازخورد (مشاهده نظرات)
محمدجواد زمانی قلعه
محمدجواد زمانی قلعه
کارشناس ارشد مهندسی الکترواپتیک
مهندس محمد جوادزمانی قلعه، دارای مدرک کارشناسی ارشد مهندسی الکترواپتیک از دانشگاه صنعتی مالک اشتر هستند. زمینه اصلی فعالیت ایشان انجام پژوهشها و پروژههای حوزه طراحی سامانههای اپتیکی و پردازش تصویر است. در حال حاضر مدیرعامل یک شرکت فناور در زمینه پردازش تصاویر پزشکی هستند.
توضیحات تکمیلی
امروزه پردازش تصویر، بخش مهمی از اغلب سیستم های هوشمند را تشکیل می دهد. کاربردهای متنوعی که پردازش تصویر در زمینه های مختلفی نظیر: فنی، صنعتی، شهری، پزشکی و علمی دارد، آن را به یک موضوع بسیار مهم در میان زمینه های مختلف تجاری و پژوهشی تبدیل کرده است. اما یکی از مشکلات توسعه دهندگان نرم افزارهای بصری انجام محاسبات مختلف روی تصاویر است.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
به دلیل حجم بالای اطلاعات، پردازش آن ها نیاز به برنامه نویسی بهینه دارد و همچنین پردازش تصاویر در صورتی می تواند بیشترین کاربرد و مزیت را برای ما ایجاد کرده و آینده شغلی و تحیقاتی ما را متحول سازد که هم مبتنی بر یکی از زبان های برنامه نویسی پایه باشد و هم بتوان از یک کتابخانه بهینه برای پیاده سازی آن نیز استفاده کرد.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
ترکیب زبان برنامه نویسی پایتون که به عنوان یک زبان سطح بالا و قدرتمند، اولین زبان کاربردی، محبوب و قدرتمند در سال 2017 بوده و از اعتبار بسیار بالایی برخوردار است و OpenCV که محصول شرکت Intel و یک کتابخانه متن باز با لایسنس BSD برای توسعه دهندگان نرم افزارهای بصری و پردازش تصویر است، می تواند رویای ایجاد یک پروژه با کیفیت و در بالاترین سطح در حوزه پردازش تصویر را برای ما رقم بزند. تلفیق پایتون و OpenCV، علاوه بر توانمندی های گسترده و چشم گیر خود، از یادگیری آسان و مناسبی برای فراگیری افرادی که در ابتدای مسیر پردازش تصویر و کدنویسی هستند نیز برخوردار است.
آموزش این فرادرس، به صورت گام به گام با معرفی، نصب و بارگذاری تصاویر به شکل کاملا سریع و آسان آغاز شده و سپس با اعمال عملیات اصلی متداول روی تصاویر، اعمال عملیات ریاضی و تبدیلات هندسی ادامه پیدا کرده و فیلترهای کاربردی مختلف و نحوه پیاده سازی آن ها روی تصویر بیان خواهد شد. همچنین استفاده از پرکاربردترین روش ها برای تشخیص لبه، تبدیلات مورفلوژیک، هیستوگرام و اشاره چند روش تطبیق الگو که از مهم ترین بخش ها و اهداف هر برنامه پردازش تصویر است، به خوبی و آسانی تشریح خواهد شد.
فهرست سرفصلها و رئوس مطالب مطرح شده در این مجموعه آموزشی، در ادامه آمده است:
درس یکم: مقدمه و آشنایی اولیه با اعمال تغییرات روی تصویر
مقدمه و پیش نیازها
نصب کتابخانه OpenCV
بارگذاری، نمایش و ذخیره تصاویر
رسم متن و اشکال هندسی روی تصویر
مثال تکمیلی (انجام دو پروژه کوتاه و مرتبط)
درس دوم: انجام عملیات اصلی روی تصویر (Core Operations)
خواندن و ویرایش پیکسل تصاویر
کار با ناحیه تصویر (ROI)
تفکیک و ادغام تصاویر
رسم حاشیه روی تصویر
ترکیب تصاویر
درس سوم: ابزارهای ریاضی در OpenCV
تغییر فضای رنگی
تعیین مقدار HSV تصویر
اعمال آستانه برای تصویر
تقسیم بندی Otsu
تبدیلات هندسی روی تصویر
درس چهارم: آشنایی و اعمال انواع فیلترها بر تصاویر
ماتریس فیلتر تصاویر
فیلتر میانگین
فیلتر گوسی
فیلتر میانه
فیلتر دوطرفه
درس پنجم: تبدیلات مورفلوژیک
فرسایش (Erosion)
انبساط (Dilation)
Opening & Closing
Morphological Gradient و Top Hat ,Black Hat
المان ساختاری
درس ششم: گرادیان تصویر و تشخیص لبه
مشتقات Sobel
لاپلاسین
تشخیص لبه Canny
درس هفتم: هیستوگرام
رسم هیستوگرام
هموارسازی هیستوگرام
تعادل سازی هیستوگرام تطبیقی کنتراست محدود
درس هشتم: تطبیق الگو
تطبیق یک شی در تصویر
تطبیق چند شی در تصویر
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
پردازش تصویر با پایتون — راهنمای کاربردی
آخرین بهروزرسانی: ۳۰ مهر ۱۳۹۸
زمان مطالعه: ۱۶ دقیقه
در این مطلب، با مبحث پردازش تصویر با پایتون آشنا خواهید شد. «پردازش تصویر» (Image Processing) یکی از حوزههای تأثیرگذار و مهم در «هوش مصنوعی» (Artificial Intelligence) محسوب میشود و در حوزههای دیگر نظیر «بینایی کامپیوتر» (Computer Vision) و استخراج اطلاعات بامعنی از دادههای تصویری، نقش بسیار مهمی ایفا میکند.
فهرست مطالب این نوشته
پردازش تصویر با پایتون
پردازش تصاویر با پایتون با ابزار SciKit-Image
کتابخانه Numpy و پردازش تصویر با پایتون
کتابخانه SciPy
کتابخانههای PIL و Pillow
کتابخانه OpenCV-Python
کتابخانه SimpleCV
کتابخانه Mahotas
کتابخانه SimpleITK
کتابخانه pgmagick
ابزار Pycairo
جمعبندی
اگرچه بسیاری از کاربران، برنامهنویسان و یا توسعهدهندگان برنامههای کاربردی، از محیط و زبان برنامهنویسی «متلب» (MATLAB) جهت توسعه برنامههای کاربردی مرتبط با حوزه پردازش تصویر استفاده میکنند، با این حال «زبان برنامهنویسی پایتون» (Python Programming Language) ابزارهای بسیار مفید و کاربردی جهت پردازش و «دستکاری» (Manipulation) تصاویر دیجیتالی در اختیار این دسته از افراد قرار میدهد. در این مطلب، برخی از مهمترین ابزارهای پردازش تصویر با پایتون و دستکاری تصاویر دیجیتالی در این زبان برنامهنویسی محبوب مورد بررسی قرار میگیرند.
در «علوم کامپیوتر» (Computer Science)، به استفاده از الگوریتمهای کامپیوتری برای انجام عملیات پردازش تصویر روی تصاویر دیجیتالی، «پردازش تصاویر دیجیتال» (Digital Image Processing) گفته میشود. معمولا از الگوریتمهای پردازش تصاویر دیجیتال جهت «تحلیل تصاویر» (Image Analysis)، دستکاری تصاویر، «بهبود تصاویر» (Image Enhancement)، استخراج اطلاعات مفید از تصاویر و یا بهینهسازی «ویژگیهای مشخصه» (Characteristics) تصاویر دیجیتال استفاده میشود. در این مطلب، قرار است مهمترین ابزارهای پردازش تصویر با پایتون معرفی میشوند.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
پردازش تصویر با پایتون
تاکنون ابزارهای متنوعی برای پردازش تصویر با پایتون معرفی شدهاند. این دسته از ابزارها، «کتابخانهها» (Libraries) و «بستههای» (Packages) برنامهنویسی، امکانات بسیار متنوع و مفیدی برای «تبدیل تصاویر» (Image Transformation)، فهمیدن اطلاعات موجود در این دادهها و به طور کلی، دستکاری و پردازش تصاویر در اختیار کاربران و برنامهنویسان قرار میدهند. به عبارت دیگر، ابزارهای پردازش تصویر با پایتون به کاربران این امکان را میدهند تا به شکل بسیار ساده و «شهودی» (Intuitive) دادههای تصویری را تحلیل و اطلاعات بامعنی از آنها استخراج کنند.
جهان امروز و زندگی انسانها، توسط دادهها احاطه شدهاند و تصاویر بخش عمدهای از این دادهها را تشکیل میدهند. با این حال، پیش از اینکه تصاویر دیجیتالی قابل استفاده شوند نیاز است تا پردازش، تحلیل و دستکاری شوند؛ پردازش، تحلیل و دستکاری تصاویر، با هدف بهبود کیفیت آنها یا استخراج اطلاعات مفید از تصاویر انجام میشود.
زبان پایتون میتواند به عنوان ابزاری برای انجام عملیات پردازشی روی تصاویر دیجیتالی مورد استفاده قرار بگیرد. از جمله متداولترین فرایندهای پردازش تصویر با پایتون که توسط ابزارها و کتابخانههای این زبان برنامهنویسی قابل اجرا هستند، میتوان به مواردی نظیر «برش» (Cropping)، «برعکس کردن» (Flipping)، «چرخاندن» (Rotating)، «قطعهبندی تصویر» (Image Segmentation)، «دستهبندی تصویر» (Image Classification)، «استخراج ویژگی» (Feature Extraction)، «ترمیم تصاویر» (Image Restoration) و «بازشناسی تصویر» (Image Recognition) اشاره کرد.
زبان برنامهنویسی پایتون ابزار بسیار مناسبی برای عملکردهای ذکر شده در حوزه پردازش تصویر محسوب میشود. شاید تا چند سال پیش و با توجه به وجود ابزاری نظیر متلب و یکهتازی آن در این حوزه، ایده پردازش تصویر با پایتون و استفاده از آن برای دستکاری تصاویر، ایده بسیار ابتدایی و ناکارآمدی محسوب میشد. ولی در چند سال اخیر، محبوبیت زبان پایتون به عنوان یک «زبان برنامهنویسی علمی» (Scientific Programming Language)، در میان جامعه برنامهنویسان به شدت افزایش یافته است. همچنین، محبوبیت روز افزون این زبان برنامهنویسی سبب شده است تا ابزارهای بسیار پیشرفته پردازش تصویر، به طور رایگان، به عنوان بخشی از اکوسیستم این زبان برنامهنویسی در دسترس کاربران و برنامهنویسان قرار بگیرد.
در این مطلب، با 10 ابزار و کتابخانه مهم و پرکاربرد جهت دستکاری و پردازش تصویر با پایتون آشنا خواهید شد. این دسته از ابزارها و کتابخانههای برنامهنویسی، فرایند تحلیل تصاویر دیجیتال، استخراج اطلاعات با معنی از آنها و در نتیجه، پردازش تصویر با پایتون را برای کاربران و برنامهنویسان آسان میکنند.
پردازش تصاویر با پایتون با ابزار SciKit-Image
ابزار SciKit-Image، یک بسته برنامهنویسی «منبع باز» (Open Source) است که با ساختار آرایهای تعریف شده توسط کتابخانه NumPy کار میکند. این ابزار، یکی از مهمترین کتابخانههای پردازش تصویر با پایتون محسوب میشود که به طور رایگان در دسترس کاربران و برنامهنویسان قرار گرفته شده است. در بسته SciKit-Image، مجموعهای از الگوریتمها و ابزارهای پردازش تصویر، جهت استفاده در کاربردهای تحقیقاتی، آموزشی و صنعتی در اختیار کاربران قرار داده شده است.
کار کردن با توابع و الگوریتمهای SciKit-Image (که جهت پردازش تصویر با پایتون استفاده میشوند)، حتی برای کسانی که برنامهنویس مبتدی هستند و آشنایی ابتدایی از اکوسیستم پایتون دارند، بسیار ساده و سر راست است. کدهای پیادهسازی شده در ابزار SciKit-Image از کیفیت بسیار بالایی برخوردارند و توسط جامعه برنامهنویسی بسیار فعال و متشکل از برنامهنویسان داوطلب پشتیبانی و بهروزرسانی میشوند.
این بسته را میتوان با استفاده از skimage در زبان پایتون import کرد. همچنین، بسیاری از توابع و الگوریتمهای پیادهسازی شده را میتوان در «زیر واحدهای» (Submodules) این بسته برنامهنویسی پیدا کرد و مورد استفاده قرار داد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط ابزار SciKit-Image قابل انجام است، نمایش داده خواهد شد.
«فیلتر گذاری روی تصاویر» (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')
پردازش تصویر با پایتون
«تطبیق الگو» (Template Matching): یکی از سادهترین فرایندهای پردازش تصویر با پایتون و ابزار SciKit-Image، تطبیق الگو است. در کاربردهای پردازش تصویر، برای تشخیص ظاهر شدن یک تصویر الگو در یک یا مجموعهای از تصاویر دیگر، از الگوریتمهای تطبیق الگو استفاده میشود.
import numpy as np
import matplotlib.pyplot as plt
from skimage import data
from skimage.feature import match_template
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
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()
پردازش تصویر با پایتون
کتابخانه Numpy و پردازش تصویر با پایتون
کتابخانه Numpy یکی از کتابخانههای برنامهنویسی کلیدی در زبان برنامهنویسی پایتون محسوب میشود که پشتیبانی از «نوع دادهای آرایه» (Array Datatype) را در پایتون فراهم میکند. این کتابخانه، یکی از مهمترین کتابخانههای توسعه داده شده برای کاربردهای پردازش تصویر با پایتون نیز محسوب میشود که به طور رایگان در دسترس کاربران و برنامهنویسان قرار گرفته شده است.
به طور کلی، یک «تصویر» (Image) یک آرایه استاندارد قابل تعریف توسط کتابخانه Numpy محسوب میشود که شامل پیکسلهای متناظر با نقاط دادهای خواهد بود. بنابراین، با استفاده از عملیات پایهای تعریف شده در Numpy نظیر «بخشبندی» (Slicing)، «پوشش گذاری» (Masking)، «شاخص گذاری چندگانه» (Fancy Indexing) و سایر موارد، کاربر قادر خواهد بود تا مقادیر پیکسلهای یک تصویر را تغییر دهد. در کاربردهای پردازش تصویر با پایتون و کتابخانه Numpy، میتوان از کتابخانه skimage برای بارگذاری تصاویر و از کتابخانه Matplotlib جهت نمایش آنها استفاده کرد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه Numpy قابل انجام است، نمایش داده خواهد شد.
«پوشش گذاری تصاویر» (Image Masking): یکی از فرایندهای پایهای در پردازش تصویر محسوب میشود که به وسیله آن، بخشهایی از یک تصویر پنهان و بخشهای دیگر موجود در تصویر نمایان میشوند.
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')
پردازش تصویر با پایتون
کتابخانه SciPy
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
کتابخانه SciPy یکی دیگر از کتابخانههای کلیدی برای برنامهنویسی علمی در زبان برنامهنویسی پایتون محسوب میشود (همانند Numpy). از این کتابخانه مهم نیز میتوان برای پیادهسازی برخی از کاربردهای پردازش تصویر با پایتون استفاده کرد. کتابخانه SciPy حاوی توابع و الگوریتمهایی است که به راحتی میتوان از آنها برای انجام عملیات (ساده) دستکاری و پردازش تصویر با پایتون استفاده کرد.
به طور ویژه، زیر واحد scipy.ndimage توابع عملیاتی لازم جهت انجام عملیات روی آرایههای چندبُعدی NumPy (آرایههایی که برای نمایش تصاویر، در قالب آرایه، مورد استفاده قرار میگیرند) را فراهم میآورد. هماکنون کتابخانه SciPy، توابع لازم برای «فیلتر گذاری خطی و غیرخطی» (Linear and Non-Linear Filtering)، «مورفولوژی باینری» (Binary Morphology)، «درونیابی تصویر» (Image Interpolation) و «اندازهگیری اشیاء» (Object Measurement) را در اختیار کاربران و برنامهنویسان قرار میدهد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه SciPy قابل انجام است، نمایش داده خواهد شد.
استفاده از کتابخانه SciPy جهت «تار کردن تصویر» (Image Blurring) با استفاده از «فیلتر گاوسی» (Gaussian Filter): یکی از فرایندهای ساده پردازش تصویر با پایتون و کتابخانه SciPy، امکان اعمال فیلتر گاوسی روی تصاویر است که معمولا برای تار کردن (Blurring) تصاویر مورد استفاده قرار میگیرد.
from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)
#Results
plt.imshow(<image to be displayed>)
پردازش تصویر با پایتون
from scipy.ndimage import gaussian_filter
from scipy import misc
import matplotlib.pyplot as plt
a = np.arange(50, step=2).reshape((5,5))
gaussian_filter(a, sigma=1)
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = gaussian_filter(ascent, sigma=5)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
پردازش تصویر با پایتون
فیلتر prewitt:
from scipy import ndimage, misc
import matplotlib.pyplot as plt
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = ndimage.prewitt(ascent)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
پردازش تصویر با پایتون
فیلتر sobel:
from scipy import ndimage, misc
import matplotlib.pyplot as plt
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = ndimage.sobel(ascent)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
پردازش تصویر با پایتون
کتابخانههای PIL و Pillow
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
کتابخانه PIL که مخفف عبارت Python Imaging Library یا کتابخانه تصویر پایتون است، یکی از کتابخانههای پردازش تصویر با پایتون محسوب میشود. این کتابخانه، پشتیبانی از عملیات مرتبط با پردازش تصویر نظیر باز کردن، دستکاری و ذخیرهسازی تصاویر در فرمتهای مختلف را به زبان پایتون اضافه میکند. با این حال، توسعه آن از سال 2009 دچار وقفه شده است.
خوشبختانه، کتابخانه دیگری به نام Pillow در زبان پایتون وجود دارد که نسخه گسترشیافتهای از کتابخانه PIL محسوب و به طور فعال توسط جامعه برنامهنویسی پایتون پشتیبانی میشود. نصب ساده، قابلیت اجرا در پلتفرمها و سیستمهای عامل اصلی و پشتیبانی از نسخه 3 زبان پایتون، از جمله نقاط قوت این کتابخانه محسوب میشود که توسط برنامهنویسان جهت پردازش تصویر با پایتون مورد استفاده قرار میگیرد.
کتابخانه Pillow مجموعهای از قابلیتهای پردازش تصویر پایه نظیر «عملیات نقطهای» (Point Operations)، فیلتر گذاری با مجموعهای از «کرنلهای پیچشی» (Convolutional Kernels) تعبیه شده و «تبدیلات فضای رنگی» (Color Space Conversion) را در اختیار کاربر و برنامهنویس قرار میدهد. در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانههای PIL و Pillow قابل انجام هستند، نمایش داده خواهد شد.
«بهبود تصاویر» (Image Enhancement): با استفاده از ماژول ImageFilter در کتابخانه Pillow، میتوان تصاویر دیجیتالی را از طریق دستکاری مقادیر «کنتراست» (Contrast)، بهبود بخشید.
from PIL import Image,ImageFilter
#Read image
im = Image.open('image.jpg')
#Display image
im.show()
from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")
5-pillow.png
پردازش تصویر با پایتون
کتابخانه OpenCV-Python
کتابخانه OpenCV که مخفف Open Source Computer Vision Library یا کتابخانه منبع باز بینایی کامپیوتر است، یکی از پراستفادهترین کتابخانههای برنامهنویسی برای کاربردهای «بینایی کامپیوتر» (Computer Vision) محسوب میشود. کتابخانه OpenCV-Python، واسط برنامهنویسی کاربردی (API) برای کتابخانه OpenCV در زبان پایتون محسوب میشود.
این کتابخانه نه تنها از سرعت بسیار بالایی برخوردار است (زیرا کدهای پیادهسازی آن توسط زبان C و C++ نوشته شده است)، بلکه کد نویسی برنامههای کاربردی مرتبط با پردازش تصویر با پایتون و بهکاراندازی (Deploy) آنها را تسهیل میبخشد. چنین ویژگیهایی، کتابخانه OpenCV-Python را به بهترین انتخاب جهت پردازش تصویر با پایتون و پیادهسازی برنامههای بینایی کامپیوتر در این زبان بدل کرده است (به ویژه اگر برنامههای بینایی کامپیوتر توسعه داده شده، به انجام محاسبات ریاضی پیچیده و سنگین نیاز داشته باشند) . در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه OpenCV-Python قابل انجام است، نمایش داده خواهد شد.
«ترکیب تصاویر» (Image Blending): با استفاده از قابلیتی به نام «هرم تصاویر» (Image Pyramid) در OpenCV-Python، میتوان تصاویر متناظر با یک سیب و یک پرتقال را با یکدیگر ترکیب و یک تصویر جدید درست کرد.
import cv2
import numpy as np,sys
A = cv2.imread('apple.jpg')
B = cv2.imread('orange.jpg')
# generate Gaussian pyramid for A
G = A.copy()
gpA = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpA.append(G)
# generate Gaussian pyramid for B
G = B.copy()
gpB = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpB.append(G)
# generate Laplacian Pyramid for A
lpA = [gpA[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpA[i])
L = cv2.subtract(gpA[i-1],GE)
lpA.append(L)
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
# generate Laplacian Pyramid for B
lpB = [gpB[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpB[i])
L = cv2.subtract(gpB[i-1],GE)
lpB.append(L)
# Now add left and right halves of images in each level
LS = []
for la,lb in zip(lpA,lpB):
rows,cols,dpt = la.shape
ls = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))
LS.append(ls)
# now reconstruct
ls_ = LS[0]
for i in xrange(1,6):
ls_ = cv2.pyrUp(ls_)
ls_ = cv2.add(ls_, LS[i])
# image with direct connecting each half
real = np.hstack((A[:,:cols/2],B[:,cols/2:]))
cv2.imwrite('Pyramid_blending2.jpg',ls_)
cv2.imwrite('Direct_blending.jpg',real)
پردازش تصویر با پایتون
کتابخانه SimpleCV
کتابخانه SimpleCV یکی دیگر از چارچوبهای منبع باز جهت پردازش تصویر با پایتون و پیادهسازی برنامههای کاربردی مرتبط با حوزه بینایی کامپیوتر محسوب میشود. با استفاده از این کتابخانه، کاربران قادر خواهند بود به برخی از کتابخانههای سطح بالای بینایی کامپیوتر نظیر OpenCV دسترسی داشته باشند.
ویژگی مهم این کتابخانه این است که کاربران مبتدی، بدون این که لازم باشد تا اطلاعات و دانش کافی در مورد مفاهیمی نظیر «عمقهای بیتی» (Bit Depths)، فرمتهای فایلی (File Format)، «فضاهای رنگی» (Color Spaces) و سایر موارد داشته باشند، به راحتی قادر به کار کردن با این کتابخانه و انجام عملیات پردازش تصویر با پایتون خواهند بود. بازه یادگیری کتابخانه SimpleCV به مراتب کوتاهتر از OpenCV است. برخی از مزایای این کتابخانه عبارتند از:
برنامهنویسان مبتدی، به راحتی قادر به نوشتن برنامههای مرتبط با بینایی کامپیوتر توسط این کتابخانه هستند.
این کتابخانه، توانایی کار کردن با جریانهای ویدئویی (Video Streams)، تصاویر، فایلهای ویدئویی و سایر موارد را دارد (به عبارت دیگر، با انواع فایلها و فرمتهای ویدئویی و تصویری سازگار است).
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه SimpleCV قابل انجام است، نمایش داده خواهد شد.
تابع «آستانهگذاری» (Thresholding): تصویر زیر، نحوه عملکرد تابع Thresholding در کتابخانه SimpleCV را نشان میدهد. این تابع، هر کدام از پیکسلهای یک تصویر را بسته به میزان «روشنایی» (Brightness) آنها، سفید یا سیاه میکند.
from SimpleCV import Image, Color, Display
# Make a function that does a half and half image.
def halfsies(left,right):
result = left
# crop the right image to be just the right side.
crop = right.crop(right.width/2.0,0,right.width/2.0,right.height)
# now paste the crop on the left image.
result = result.blit(crop,(left.width/2,0))
# return the results.
return result
# Load an image from imgur.
img = Image('http://i.imgur.com/lfAeZ4n.png')
# binarize the image using a threshold of 90
# and invert the results.
output = img.binarize(90).invert()
# create the side by side image.
result = halfsies(img,output)
# show the resulting image.
result.show()
# save the results to a file.
result.save('juniperbinary.png')
@Olhcim
پردازش تصویر با پایتون
«تشخیص لبه» (Edge Detection): در تصویر زیر، نحوه عملکرد تابع تشخیص لبه در کتابخانه SimpleCV نشان داده شده است. این تابع، مقادیر پیکسلی متناظر با لبههای تصویر را با رنگ سفید نشان میدهد.
# Make a function that does a half and half image.
def halfsies(left,right):
result = left
# crop the right image to be just the right side.
crop = right.crop(right.width/2.0,0,right.width/2.0,right.height)
# now paste the crop on the left image.
result = result.blit(crop,(left.width/2,0))
# return the results.
return result
# Load an image from imgur.
img = Image('http://i.imgur.com/lfAeZ4n.png')
# create an edge image using the Canny edge detector
# set the first threshold to 160
output = img.edges(t1=160)
# generate the side by side image.
result = halfsies(img,output)
# show the results.
result.show()
# save the output images.
result.save('juniperedges.png')
پردازش تصویر با پایتون
مشخص کردن «نقاط کلیدی» (Keypoints) در تصویر: نقاط کلیدی، معمولا مناطق خاص بصری در تصویر هستند که برای انواع مختلفی از کاربردهای بینایی کامپیوتر نظیر «بازسازی سهبُعدی» (3D Reconstruction) و «تطبیق تصویر» (Image Matching) مورد استفاده قرار میگیرند. پیدا کردن نقاط کلیدی در کتابخانه SimpleCV بسیار ساده است (تابع Image.findKeypoints).
from SimpleCV import Image, Color, Display
# load an image from imgur
img = Image('http://i.imgur.com/lfAeZ4n.png')
# use a keypoint detector to find areas of interest
feats = img.findKeypoints()
# draw the list of keypoints
feats.draw(color=Color.RED)
# show the resulting image.
img.show()
# apply the stuff we found to the image.
output = img.applyLayers()
# save the results.
output.save('juniperfeats.png')
پردازش تصویر با پایتون
کتابخانه Mahotas
کتابخانه Mahotas یکی دیگر از کتابخانههای موجود جهت پردازش تصویر با پایتون و پیادهسازی برنامههای کاربردی مرتبط با حوزه بینایی کامپیوتر است. در این کتابخانه، علاوه بر اینکه توابع پردازش تصویر مرسوم نظیر «فیلتر گذاری» (Filtering) و «عملیات مورفولوژیکی» (Morphological Operations) تعریف شده است، تعدادی توابع بینایی کامپیوتر مدرن جهت «محاسبه ویژگی» (Feature Computation) نظیر «تشخیص نقاط مهم» (Interest Point Detection) و «توصیف کنندههای محلی» (Local Descriptors) نیز گنجانده شده است.
واسط برنامهنویسی این کتابخانه توسط زبان پایتون نوشته شده است (که برای توسعه سریع برنامههای کاربردی مرتبط با پردازش تصویر با پایتون و یا برنامههای بینایی کامپیوتر بسیار مناسب است)، ولی الگوریتمها در زبان C++ پیادهسازی شدهاند (که سبب افزایش سرعت اجرای کدهای این کتابخانه میشود). همچنین، کتابخانه Mahotas علاوه بر اینکه سرعت بالایی دارد، «وابستگیهای» (Dependencies) برنامهنویسی بسیار کمی دارد.
در ادامه، برخی از فرایندهای پردازش تصویر با پایتون که توسط کتابخانه Mahotas قابل انجام است، نمایش داده خواهد شد.
حل مسأله «پیدا کردن والی» (Finding Wally) توسط کتابخانه Mahotas: هدف از این مسأله پیدا کردن شخصیت والی (Wally) در تصویر زیر است.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com
from pylab import imshow, show
import mahotas
import mahotas.demos
wally = mahotas.demos.load('Wally')
imshow(wally)
show()
پردازش تصویر با پایتون
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 xrange(2):
pattern[i::4] = -1
v = mahotas.convolve(r-w, pattern)
mask = (v == v.max())
mask = mahotas.dilate(mask, np.ones((48,24)))
np.subtract(wally, .8*wally * ~mask[:,:,None], out=wally, casting='unsafe')
imshow(wally)
show()
پردازش تصویر با پایتون
کتابخانه SimpleITK
کتابخانه SimpleITK، یک سیستم منبع باز و «چند سکویی» (Cross-Platform) است که مجموعهای کامل از ابزارهای نرمافزاری جهت تحلیل تصاویر دیجیتال را در اختیار برنامهنویسان و توسعهدهندگان قرار میدهد. ویژگی مهم کتابخانه SimpleITK، پشتیبانی از تعداد زیادی مؤلفه نرمافزاری است که برای انجام عملیات پردازشی نظیر فیلتر گذاری، «قطعهبندی تصاویر» (Image Segmentation) و «ثبت تصویر» (Image Registration) روی تصاویر دیجیتالی مورد استفاده قرار میگیرند. این کتابخانه به زبان C++ نوشته شده است ولی برای دامن
در ادامه آموزش های برنامه نویسی و همینطور سورس کد های برنامه نویسی، در این بخش می خواهیم به معرفی و آموزش سورس کد پردازش تصویر با پایتون به صورت کامل و اختصاصی بپردازیم. نحوه پردازش تصویر با پایتون در مقاله ای در روزنامه 1911 در مورد روزنامه نگاری و تبلیغات و به نقل از سردبیر روزنامه تس فلاندرز، عبارت زیر ظاهر شد: از تصویر استفاده کنید. ارزش هزار کلمه دارد. عبارتی مشابه نیز در آگهی روزنامه 1913 خانه تأمین خودرو Piqua ظاهر شد: یک نگاه ارزش هزار کلمه را دارد. شکی نیست که تصاویر نقش مهمی در ارتباطات ما دارند – نه فقط تصاویر عمومی، بلکه عکسهای تخصصی مانند تصاویر پزشکی (مانند MRI، سونوگرافی و غیره). ما می توانیم عکس ها را از طریق دستگاه های مختلف اکتسابی به دست آوریم. به عنوان مثال، تصاویر ملانوم (سرطان پوست) با استفاده از درماتوسکوپ بازیابی می شوند. ما از خود یا دوستان با استفاده از دوربین دیجیتال یا تلفن هوشمند عکس می گیریم. با این حال، گاهی اوقات، برخی از مسائل را در تصاویر خود مشاهده می کنیم، مانند محو شدن برای مثال، که ممکن است به دلیل دستگاه اکتسابی مورد استفاده باشد. اما، در این مورد چه باید کرد؟ برخی از تصاویر پزشکی برای تجزیه و تحلیل برای شما ارسال شده است و شما نمی توانید چنین تصاویری را مجدداً بگیرید. حتی اگر تصویری را مجدداً بگیرید، وضوح تصویری که مشاهده می کنید تغییر نمی کند و هیچ مشکل دیگری با آن روبرو نیستید. پردازش تصویر در چنین شرایطی به کار می رود. من دوست داشتم اصطلاح پردازش تصویر در واژه نامه های آکسفورد چگونه تعریف شود: تجزیه و تحلیل و دستکاری تصویر دیجیتالی شده، به ویژه به منظور بهبود کیفیت آن. “تصویر دیجیتالی” در اینجا به این واقعیت اشاره دارد که تصویر دیجیتالی تلقی می شود، یعنی توسط یک کامپیوتر پردازش می شود. دریافت رایانه در این بازی به معنای استفاده از یک زبان برنامه نویسی است. در این آموزش به شما نشان خواهم داد که چگونه می توانیم از زبان برنامه نویسی پایتون برای انجام کارهای پردازش تصویر روی یک تصویر استفاده کنیم. با ما همراه باشید.! سورس پروژه پردازش تصویر با پایتون scikit-image کتابخانه ای که قرار است از آن برای انجام وظایف پردازش تصویر خود استفاده کنیم scikit-image است. با توجه به مقاله scikit-image: آموزش پردازش تصویر در پایتون: scikit-image یک کتابخانه پردازش تصویر است که الگوریتم ها و ابزارهای کاربردی را برای استفاده در تحقیقات، آموزش و برنامه های صنعتی پیاده سازی می کند. این نرم افزار تحت مجوز منبع آزاد Modified BSD منتشر می شود، یک API مستند به زبان برنامه نویسی پایتون ارائه می دهد و توسط یک تیم فعال و بین المللی از همکاران توسعه یافته است. اولین کاری که باید انجام دهیم نصب scikit-image است. دستورالعمل های نصب کتابخانه را می توانید در صفحه بارگیری مشاهده کنید و در این آموزش نحوه نصب کتابخانه بر روی دستگاه Mac OS X را به شما نشان خواهم داد، زیرا این چیزی است که من در حال نوشتن این آموزش استفاده می کنم. از آنجا که scikit-image یک کتابخانه خارجی است، اولین کاری که باید انجام دهیم نصب این کتابخانه است. برای این کار، من از pip استفاده می کنم، که (بر اساس ویکی پدیا) است: یک سیستم مدیریت بسته که برای نصب و مدیریت بسته های نرم افزاری نوشته شده در پایتون استفاده می شود. بسیاری از بسته ها را می توان در فهرست بسته پایتون (PyPI) یافت. برای نصب pip می توانید مراحل ذکر شده در راهنمای کاربر بسته بندی پایتون را دنبال کنید، اما اگر پایتون 2.7.9 و بالاتر یا پایتون 3.4 و بالاتر دارید، پیپ دارید! scikit-image را می توان با تایپ کردن دستور زیر (در ترمینال Mac OS X) به سادگی نصب کرد: pip install -U scikit -image ما اکنون کتابخانه را نصب کرده ایم و برای سرگرمی پردازش تصویر آماده ایم! تصویر آزمایشی که در این آموزش استفاده خواهیم کرد baboon.png است. پیش بروید و آن را بارگیری کنید، یا به سادگی از تصویر دلخواه خود استفاده کنید. تصویر به شرح زیر است: پردازش تصویر با استفاده از پایتون ابعاد یک تصویر گاهی اوقات باید ابعاد یک تصویر را بدانیم (بیشتر در قسمت فیلترینگ). به منظور بررسی ابعاد تصویر خود ، می توانیم از روش guess_spatial_dimensions () به شرح زیر استفاده کنیم: from skimage import io, color img = io.imread('baboon.png') dimensions = color.guess_spatial_dimensions(img) print dimensions خروجی اسکریپت بالا 3 است، به این معنی که ما تصویری متشکل از سه بعد مکانی داریم. رنگ تا مقیاس خاکستری از قسمت بالا متوجه شدیم که تصویر ما یک تصویر آرایه سه بعدی (با فرمت RGBA با شکل (.. ، .. ، 4)) است. چگونه متوجه شدم که در قالب RGBA است؟ شما به سادگی می توانید موارد زیر را انجام دهید: import skimage.io as io from skimage.color import rgb2gray img = io.imread('baboon.png') print img.shape در این حالت، این خروجی را دریافت خواهید کرد: (512 ، 512 ، 4). در این بخش، ما می خواهیم تصویر اصلی baboon.png رنگی را به یک تصویر دوبعدی خاکستری (سیاه و سفید) تبدیل کنیم. این را می توان به سادگی با استفاده از اسکریپت زیر انجام داد: import skimage.io as io from skimage.color import rgb2gray img = io.imread('baboon.png') img_grayscale = rgb2gray(img) بیایید جلو برویم و تصویر جدید (مقیاس خاکستری) را در یک فایل ذخیره کنیم. این را می توان با استفاده از تابع imsave () به شرح زیر انجام داد (توجه کنید که تصویر جدید در فایل baboon-gs.png قرار دارد): io.imsave('baboon-gs.png',img_grayscale) برای بررسی ابعاد تصویر، می توانیم از اسکریپت قسمت قبل استفاده کنیم، در این صورت شما 2 مورد را پس می گیرید. یا می توانید از img_grayscale.shape استفاده کنید که نتیجه آن 512×512 است. بنابراین، ما اکنون یک تصویر دو بعدی داریم. برای نشان دادن تصویر جدید در مقیاس خاکستری، موارد زیر را به انتهای اسکریپت اضافه کنید: show_grayscale = io.imshow(img_grayscale) io.show() پردازش تصویر با استفاده از پایتون اعمال فیلتر بر روی تصویر در پردازش تصویر، فیلترینگ انجام می شود تا برخی از پیشرفت ها را در تصویر ایجاد کند. به طور کلی، فیلترینگ شامل عملیات زیر است: افزایش لبه، تیز کردن و صاف کردن. در این بخش، من به شما نشان می دهم که چگونه می توانیم فیلتر Sobel را روی تصویر خود اعمال کنیم، و ببینیم خروجی پس از انجام چنین عملیاتی چگونه است. من از مثال نشان داده شده در صفحه اول وب سایت scikit-image استفاده می کنم، اما روی تصویر ما اعمال شده است. اسکریپت اعمال فیلتر Sobel روی تصویر ما به شرح زیر است: from skimage import data, io, filters img = io.imread('baboon.png') edges = filters.sobel(img) io.imshow(edges) io.show() اگر اسکریپت را اجرا کنید، آیا مشکلی مشاهده کردید؟ بله، ما نمی توانیم عملیات را اعمال کنیم زیرا تصویر باید یک تصویر دو بعدی باشد. بنابراین، به جای استفاده از baboon.png، ما باید از تصویر دو بعدی خود، baboon-gs.png استفاده کنیم. خروجی این عملیات به صورت زیر است: پردازش تصویر با استفاده از پایتون نتیجه گیری بسیاری از عملیات پردازش تصویر وجود دارد و کتابخانه scikit-image Python بسیاری از عملیات جالب را در اختیار ما قرار می دهد که می توانیم روی تصاویر خود انجام دهیم. می توانید عملیات پردازش تصویر بیشتری را با استفاده از این کتابخانه در وب سایت scikit-image مشاهده کنید. ادامه در https://sourcesoft.ir/%D8%B3%D9%88%D8%B1%D8%B3-%DA%A9%D8%AF-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86/
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276az
softir@gmail.com
azsoftir.com
09367292276azsoftir.com