نوشته‌ها

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

تبدیل فوریه برای سیگنال یک بعدی

بالاخره رسیدیم به بحث شیرین تیدیل_فوریه

استفاده از تبدیل فوریه برای تجزیه سیگنال نور

 

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

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

دیجیتال: موجی با تغییرات گسسته(سری  فوریه)

 

 

 

Fourier series

 

Fourier series

 

سیگنال صوت، از مجموعه ای از سينوسها با فرکانس ودامنه وابسته به زمان تشکیل شده است. 

این همه بحث در مورد تبدیل_فوریه و تجزیه سیگنال به فرکانسهای تشکیل دهنده . کاربردش چیه؟؟
یکی از پر کاربردترین موارد استفاده از آن، فرایند فیلتر در پردازش سیگنال است.
مثلا اگر صدا خش دار و بی کیفیت است یا تصویر وضوح خوبی ندارد با حذف برخی از فرکانسها یا کاهش نویز توسط فیلتر به کیفیت مطلوب میرسونیم.

فرکانس یا بسامد: تعداد تکرار یک رویداد در واحد زمان.
بر اساس اینکه کدامیک از این سه نوع فرکانس باید حذف شود، سه نوع فیلتر داریم.

 

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

 

انواع فیلتر :
۱)فیلتر پایین گذر: فرکانسهای بالاتر از یک مقدار معین را حذف میکند و فرکانسهای پایین تر را عبور میدهد.
۲)میان گذر : فقط فرکانس های حد متوسط و میانی عبور داده میشود.
۳) بالا گذر : فرکانسهای پایین تر از یک مقدار معین را حذف میکند و فرکانسهای بالا تر را عبور میدهد.
واقعیت این است که قبل از پردازش اصلی ما یک پیش پردازش داریم تا سیگنالهای خارج از محدوده ی فرکانسی حذف شود. و این کار با فیلتر کردن انجام میشود.

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

تا اینجا ما سیگنال یک بعدی را بررسی کردیم.ولی تصویر یک سیگنال دو بعدی است

 

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

پردازش تصویر چیست؟

پردازش تصویر فرایند دستکاری یا انجام عملیات بر روی تصاویر، برای دستیابی به یک اثر معین (ایجاد یک تصویر سیاه و سفید به عنوان مثال) یا گرفتن اطلاعاتی از یک تصویر(مانند شمردن تعداد دایره ها یا مربع ها ) توسط  یک کامپیوتر  است.

 

شروع کار پردازش تصویر  با  ایمپورت ها است. ما از cv2، numpy و کمی از matplotlib (اغلب به عنوان یک روش راحت برای نمایش تصاویر) استفاده می کنیم .

matplotlib : کتابخانه ای برای رسم نمودارها

matplotlib.pyplot: هر تابع pyplot باعث تغییراتی در شکل می شود: به عنوان مثال

  شکلی را  می گیرد،  یک منطقه ترسیم در شکل ایجاد می کند،   چند خط در یک منطقه  از شکل ترسیم میکند،  شکل را با برچسب و غیره تزئین می کند و … .

NumPy : کتابخانه ای  برای محاسبات علمی با پایتون است. این شامل موارد زیر است:
۱) یک آبجکت آرایه n بعدی قدرتمند

۲) ابزار برای ادغام C / C ++ و کد Fortran 

۳) …..

import cv2, matplotlib

import numpy as np

import matplotlib.pyplot as plt 

 

فرمت عکس

 

بسيار خوب! ما نیاز داریم تصاویر را بخوانیم تا فرمتی که آنها نشان میدهند را بفهمیم.در OpenCv تصاویر به صورت زیر آرایه ۳ بعدی numpy نمایش داده می شوند. یک تصویر رنگی  از ردیف های پیکسل تشکیل شده و هر پیکسل با آرایه ای از مقادیر رنگ نمایش داده می شود.

BGR

 

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

تصویر اصلی

 

 

import numpy as np 

import cv2

 img = cv2.imread('test.jpg') 

print(img)

خواندن یا وارد کردن تصویر:

img = cv2.imread('test.jpg')

نمایش فرمت آن (اساسا یک آرایه ۳ بعدی از اطلاعات رنگ پیکسل، در قالب BGR):

print( img)
[[[۱۸۳ ۱۸۳ ۱۸۳][۱۰۲ ۱۰۲ ۱۰۲][۱۰۲ ۱۰۲ ۱۰۲]..., [۱۰۲ ۱۰۲ ۱۰۲][۱۰۲ ۱۰۲ ۱۰۲][۱۰۲ ۱۰۲ ۱۰۲]]

[[۱۰۲ ۱۰۲ ۱۰۲][۱۹۳ ۱۹۳ ۱۹۳][۲۵۳ ۲۵۳ ۲۵۳]..., [۱۶۸ ۱۶۸ ۱۶۸][۲۵۴ ۲۵۴ ۲۵۴][۱۹۳ ۱۹۳ ۱۹۳]]
[[۲۵۳ ۲۵۳ ۲۵۳][۲۵۲ ۲۵۲ ۲۵۲][۲۵۲ ۲۵۲ ۲۵۲]..., [۱۶۷ ۱۶۷ ۱۶۷][۲۵۳ ۲۵۳ ۲۵۳][۲۵۲ ۲۵۲ ۲۵۱]]
..., [[۲۵۵ ۲۵۵ ۲۴۷][۲۵۵ ۲۵۵ ۲۴۷][۲۵۴ ۲۵۴ ۲۵۱]..., [ ۶۸ ۶۲ ۵۶][۲۰۲ ۱۹۷ ۱۹۱][۱۳۶ ۱۲۳ ۱۰۹]]
[[۲۵۵ ۲۵۵ ۲۴۷][۲۵۵ ۲۵۵ ۲۴۶][۲۵۵ ۲۵۵ ۲۵۰]..., [۱۲۱ ۱۱۶ ۱۱۱][۱۸۶ ۱۷۹ ۱۷۳][۱۲۱ ۱۱۰ ۹۷]]
[[۲۵۵ ۲۵۵ ۲۴۴][۲۵۵ ۲۵۵ ۲۴۳][۲۵۵ ۲۵۵ ۲۴۶]..., [۱۷۸ ۱۷۲ ۱۶۶][۱۴۵ ۱۳۶ ۱۲۷][۱۰۷ ۹۶ ۸۴]]]  >>>

اینجا [ ۱۴۵ ۱۳۶ ۱۲۷] و… ، مقادیر یک پیکسل، آبی، قرمز و سبز (BGR) هستند. توجه داشته باشید که OpenCV به طور پیش فرض یک تصویر را در قالب BGR بارگذاری می کند.

کتابخانه های مورد نیاز پردازش تصویر

این  آموزش با پایتون ۲٫۷ هست. کتابخانه های لازم  به صورت زیر میباشد:

Numpy

برای کار با اعداد، آرایه ها و ماتریس ها از این کتابخانه استفاده میشود. در پردازش تصویر، کار با تصاویر هم نوعی کار با ماتریس ها  میباشد.

 برای نصب وارد آدرس C:\Python27\Scripts  میشویم ، کلید شیفت را پایین نگه داشته و در قسمتی خالی از این مکان کلیک راست کرده و گزینه open command را انتخاب میکنیم سپس خط زیر را تایپ میکنیم :

pip install  numpy

با زدن اینتر اگر به اینترنت متصل باشیم به راحتی این کتابخانه نصب میشود. بنابراین کتابخانه های زیر را به همین صورت نصب میکنید

Matplotlib

برای رسم نمودار ها بیشتر کاربرد دارد. قبل از نصب این کتابخانه اول دو کتابخانه زیر را به عنوان پیش نیاز نصب میکنیم:

pip install python-dateutil
pip install pyparsing
pip install matplotlib

 

opencv

از لینک زیر opencv را دانلود و از حالت فشرده خارج میکنیم. 

https://github.com/opencv/opencv/releases/download/3.3.0/opencv-3.3.0-vc14.exe

وارد مسیر C:\opencv\build\python\2.7\x86 شده و فایل موجود را کپی کرده و در مسیر C:\Python27\Lib\site-packages قرار میدهیم. 

نصب کتابخانه های مورد نیاز پرازش تصویر تموم شد. برای مطمئن شدن از نصب صحیح این کتابخانه ها، وارد شل پایتون شده و آنها را import  میکنیم. نباید خطایی نمایش داده شود. 

cv2

برای اطلاع از نسخه opencv دستور زیر را در شل پایتون وارد کنید:

 


 import cv2
cv2.__version__
 '۳٫۲٫۰'

🆔@image_Process
🌐https://t.me/image_Process