https://commons.wikimedia.org/wiki/File:3D_Convolution_Animation.gif

پردازش تصویر با پایتون قسمت بیست و چهارم

Convolution

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

۱٫کانولوشن حوزه مکان

 

یکی از عملگر  های مهم در پردازش تصویر و سیگنال،  کانولوشن است که برروی دو سیگنال یک بعدی یا دو بعدی عمل میکند:  یعنی  می توانید یک سیگنال (یا تصویر) را به عنوان ورودی  و دیگری ( هسته)  را به عنوان فیلتر روی تصویر ورودی، در نظر بگیرید که سرانجام  باعث  تولید تصویر خروجی میشود.
(بنابراین کانولوشن دو عکس را به عنوان ورودی می گیرد و تصویر سومی را  به عنوان خروجی  تولید می کند. )
کانولوشن در حوزه مکان عملگر ضرب هم معنی میشود. در واقع  یک مفهوم فوق العاده مهم در بسیاری از زمینه های ریاضی و مهندسی (از جمله بینایی کامپیوتر است).

کانولوشن بر روی سیگنال یک بعدی را  مشاهده میکنید :

 

jjure

 

 می توانیم کانولوشن را در سیگنالهای ۲D نیز  اعمال کنیم. برای کانولوشن ۲D، هسته  روی هر پیکسل از  تصویر حرکت میکندیعنی پیمایش میکند  و عمل ضرب  تصویر ورودی و هسته، و اضافه کردن آنها – نتیجه ارزش جدیدی از تصویر است.

این قسمت یک مثال ساده از کانولوشن  در فضایی ۲D است. تعریف کانولوشن ۲D و چگونگی پیمایش در ۲D در اینجا توضیح داده شده است.

 

 

 

 

x[m,n]

ورودی

h[m,n]

هسته

y[m,n]

خروجی

 

 

 

 

 

 

 

 

 


 

 

y[0,0]y[0,0]

y[1,0]y[1,0]

y[2,0]y[2,0]

y[1,1]y[1,1]

y[2,1]y[1,1]

y[2,1]y[2,1]

y[0,2]y[0,2]

y[1,2]y[1,2]

y[2,2]y[2,2]

../_images/numerical_no_padding_no_strides.gif

آموزش php قسمت اول

php یک زبان برنامه نویسی قدرتمند در سمت سرور برای ایجاد وب سایت های پویا و تعاملی است.

php به طور گسترده ای استفاده میشود، رایگان ، کارآمد  و جایگزین مناسبی برای رقبا مانند ASP مایکروسافت است. php کاملا برای توسعه وب مناسب است و می تواند به طور مستقیم در کدهای HTML جاسازی شود.

سینتکس PHP بسیار شبیه به Perl و C است .php اغلب با Apache (وب سرور) بر روی سیستم عامل های مختلف استفاده می شود. همچنین از ISAPI پشتیبانی می کند و می تواند با IIS مایکروسافت در ویندوز مورد استفاده قرار گیرد.

 


پیشنیازها:

قبل از آموزش این زبان شما باید با مفاهیم زیر آشنایی داشته باشید:

  • html
  • دانش کمی از  اسکریپت نویسی

php چیست؟

  • php برگرفته از PHP: Hypertext Preprocessor
  • php  یک زبان اسکریپتی سمت سرور مانند asp است
  • در php اسکریپتها بر روی سرور اجرا میشوند
  • php  از دیتابیس های (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, ….)  پشتیبانی میکند
  • php یک نرم افزار منبع باز است
  • دانلود و استفاده از آن رایگان است.

فایل php چیست؟

  • فایلهای php میتوانند شامل متن، تگهای html و اسکریپت باشند
  • فایلهای php به عنوان html ساده به مرورگر برگردانده میشوند
  • فرمت این فایلها: “.php”, “.php3”, یا  “.phtml”

MYSQL چیست؟

  • MYSQL  پایگاه داده سرور
  • MYSQL  برای اپلیکشن های بزرگ و کوجک ایده آل است
  • MYSQL  از استاندارد sqlپشنیانی میکند
  • MYSQL در تعدادی از سیستم عاملها کامپایل میشود
  • دانلود و استفاده از آن رایگان است

PHP + MySQL

ترکیب این دو cross-platform است . یعنی بر روی هر سیستم عاملی در سرور اجرا میشود

 

 

 

 

 

 

 

پردازش تصویر با پایتون قسمت بیست و سوم

 

 

Background Subtraction

 

تفریق تصویر

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

چندین الگوریتم برای این منظور معرفی شدند. OpenCV سه الگوریتم را اجرا کرده است که بسیار آسان است. ما آنها را توسط فیلم زیر،  یک به یک می بینیم.

 

 

https://github.com/opencv/opencv/blob/master/samples/data/vtest.avi

 

BackgroundSubtractorMOG

import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
fgbg = cv2.createBackgroundSubtractorMOG()
while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()
resmog

 

BackgroundSubtractorMOG2

import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
fgbg = cv2.createBackgroundSubtractorMOG2()
while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()
https://docs.opencv.org/3.3.0/db/d5c/tutorial_py_bg_subtraction.html

https://docs.opencv.org/3.3.0/db/d5c/tutorial_py_bg_subtraction.html

 

BackgroundSubtractorGMG

import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
fgbg = cv2.createBackgroundSubtractorGMG()
while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()
 
resgmg