برای ادامه بحث به گیف زیر خوب توجه کنید. ⚡️ کاربرد تبدیل فوریه که یک سیگنال را از حوزه زمان به حوزه فرکانس تبدیل میکند.⚡️
بعد از توضیح تبدیل سیگنال تک بعدی ، به تبدیل حوزه فرکانسی سیگنال دوبعدی (تصویر) از حوزه مکانی با استفاده از تبدیل فوریه میپرازیم. فیلتر بالاگذر و پایین گذر راه را هم در ادامه بررسی میکنی
بعد از توضیح تبدیل سیگنال تک بعدی ، به تبدیل حوزه فرکانسی سیگنال دوبعدی (تصویر) از حوزه مکانی با استفاده از تبدیل فوریه میپرازیم. فیلتر بالاگذر و پایین گذر راه را هم در ادامه بررسی میکنی
💢#signal
#سگنال:
کمیت متغیر در #زمان یا #مکان یا #فرکانس که قابل اندازه گیری و دارای اطلاعاتی باشد. مانند صوت، دما و... .مقدار های مختلف بعد از اندازه گیری باعث میشود سیگنال به شکل یک تابع درآید.
سیگنال میتواند #یک بعدی مثل صدا، #دو بعدی مثل تصویر، #سه بعدی مثل فیلم و ... باشد.
دونوع سگنال داریم:
1️⃣سیگنال #آنالوگ یا #پیوسته در دنیای واقعی . این نوع سیگنال شبیه موج در زمان های مختلف مقادیر مختلفی میگیره .
مانند:
رادیو، تلفن، تلویزیون های قدیمی و...
2️⃣سیگنال #دیجیتال یا #گسسته. در زمانهای مختلف ممکنه مقدار بگیره ممکنه مقدار نگیره.
مثل کامپیوترها(0و1)
✅برای تبدیل سیگنال پیوسته به دیجیتال به عنوان مثال سیگنال صوت ( ذخیره و پردازش صدا به صورت دیجیتال در کامپیوتر) باید نمونه برداری (متناوب یا پریودیک) کنیم.
حداقل فرکانس نمونهبرداری میبایست دو برابر پهنای باند فرکانسی سیگنال نمونهبرداری شده باشد تا بتوان سیگنال پیوسته را از سیگنال نمونهبرداری شده بازسازی نمود.
تبدیل صوت از آنالوگ به دیجیتال و بلعکس توسط #کارت_صدا صورت میگیرد.
#سگنال:
کمیت متغیر در #زمان یا #مکان یا #فرکانس که قابل اندازه گیری و دارای اطلاعاتی باشد. مانند صوت، دما و... .مقدار های مختلف بعد از اندازه گیری باعث میشود سیگنال به شکل یک تابع درآید.
سیگنال میتواند #یک بعدی مثل صدا، #دو بعدی مثل تصویر، #سه بعدی مثل فیلم و ... باشد.
دونوع سگنال داریم:
1️⃣سیگنال #آنالوگ یا #پیوسته در دنیای واقعی . این نوع سیگنال شبیه موج در زمان های مختلف مقادیر مختلفی میگیره .
مانند:
رادیو، تلفن، تلویزیون های قدیمی و...
2️⃣سیگنال #دیجیتال یا #گسسته. در زمانهای مختلف ممکنه مقدار بگیره ممکنه مقدار نگیره.
مثل کامپیوترها(0و1)
✅برای تبدیل سیگنال پیوسته به دیجیتال به عنوان مثال سیگنال صوت ( ذخیره و پردازش صدا به صورت دیجیتال در کامپیوتر) باید نمونه برداری (متناوب یا پریودیک) کنیم.
حداقل فرکانس نمونهبرداری میبایست دو برابر پهنای باند فرکانسی سیگنال نمونهبرداری شده باشد تا بتوان سیگنال پیوسته را از سیگنال نمونهبرداری شده بازسازی نمود.
تبدیل صوت از آنالوگ به دیجیتال و بلعکس توسط #کارت_صدا صورت میگیرد.
💢#wave
#موج:
هر سگنال فقط یک موج سینوسی یا کسینوسی نیست بلکه از ترکیب چندین یا بینهایت موج سینوسی و کسینوسی تشکیل شده است. به خاطر همین است که سیگنال ها مشخصا شبیه سینوس یا کسینوس نیستند. در واقع موج بخشی از سیگنال است.
#موج:
ارتعاش و نوسانی که اغلب حامل انرژی بوده و در فضا یا فضازمان منتشر میشود را «موج» میگویند.#ویکی
#موج:
هر سگنال فقط یک موج سینوسی یا کسینوسی نیست بلکه از ترکیب چندین یا بینهایت موج سینوسی و کسینوسی تشکیل شده است. به خاطر همین است که سیگنال ها مشخصا شبیه سینوس یا کسینوس نیستند. در واقع موج بخشی از سیگنال است.
#موج:
ارتعاش و نوسانی که اغلب حامل انرژی بوده و در فضا یا فضازمان منتشر میشود را «موج» میگویند.#ویکی
This media is not supported in your browser
VIEW IN TELEGRAM
✨✨بالاخره رسیدیم به بحث شیرین #تیدیل_فوریه✨✨
در واقع اگر سیگنال به عنوان تابعی از زمان باشد، برای تجزیه این تابع به فرکانسها یا توابع سینوسی تشکیل شده از تبدیل فوریه استفاده میشود.
سری فوریه، تابعی است که با استفاده از آن می توان هر تابع متناوب را به صورت جمعی از توابع نوسانی ساده(سینوسی، کسینوسی و یا تابع نمایی مختلط ) نوشت.
#آنالوگ: موجی فیزیکی با تغییرات پیوسته
در واقع اگر سیگنال به عنوان تابعی از زمان باشد، برای تجزیه این تابع به فرکانسها یا توابع سینوسی تشکیل شده از تبدیل فوریه استفاده میشود.
سری فوریه، تابعی است که با استفاده از آن می توان هر تابع متناوب را به صورت جمعی از توابع نوسانی ساده(سینوسی، کسینوسی و یا تابع نمایی مختلط ) نوشت.
#آنالوگ: موجی فیزیکی با تغییرات پیوسته
This media is not supported in your browser
VIEW IN TELEGRAM
✅این همه بحث در مورد #تبدیل_فوریه و تجزیه سیگنال به فرکانسهای تشکیل دهنده
کاربردش چیه؟؟🤔
💢یکی از پر کاربردترین موارد استفاده آن، فرایند فیلتر در پردازش سیگنال است.
مثلا اگر صدا خش دار و بی کیفیت است یا تصویر وضوح خوبی ندارد با حذف برخی از #فرکانسها یا کاهش #نویز توسط #فیلتر به کیفیت مطلوب میرسونیم.
کاربردش چیه؟؟🤔
💢یکی از پر کاربردترین موارد استفاده آن، فرایند فیلتر در پردازش سیگنال است.
مثلا اگر صدا خش دار و بی کیفیت است یا تصویر وضوح خوبی ندارد با حذف برخی از #فرکانسها یا کاهش #نویز توسط #فیلتر به کیفیت مطلوب میرسونیم.
✅#انواع_فیلتر :
1)فیلتر پایین گذر: فرکانسهای بالاتر از یک مقدار معین را حذف میکند و فرکانسهای پایین تر را عبور میدهد.
2)میان گذر : فقط فرکانس های حد متوسط و میانی عبور داده میشود.
3) بالا گذر : فرکانسهای پایین تر از یک مقدار معین را حذف میکند و فرکانسهای بالا تر را عبور میدهد.
💢 واقعیت این است که قبل از پردازش اصلی ما یک پیش پردازش داریم تا سیگنالهای خارج از محدوده ی فرکانسی حذف شود. و این کار با فیلتر کردن انجام میشود.
1)فیلتر پایین گذر: فرکانسهای بالاتر از یک مقدار معین را حذف میکند و فرکانسهای پایین تر را عبور میدهد.
2)میان گذر : فقط فرکانس های حد متوسط و میانی عبور داده میشود.
3) بالا گذر : فرکانسهای پایین تر از یک مقدار معین را حذف میکند و فرکانسهای بالا تر را عبور میدهد.
💢 واقعیت این است که قبل از پردازش اصلی ما یک پیش پردازش داریم تا سیگنالهای خارج از محدوده ی فرکانسی حذف شود. و این کار با فیلتر کردن انجام میشود.
This media is not supported in your browser
VIEW IN TELEGRAM
Image #Blurring (Image #Smoothing)#
#مات یا #نرم کردن تصویر با فیلتر #میانگین
فیلتری در حوزه #مکان و#پایین گذر
👀ببینیم کدبرنامه چی میگه:
1️⃣خواندن تصویر :
img = cv2.imread('face.png')
2️⃣یک آرایه5x5 که تمام عناصر آن از یک تشکیل شده باشه، توسط دستور زیر انجام میگیره:
#np.ones: آرایه ای از 1 درست میکند:
np.ones((5,5),np.float32)
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]], dtype=float32)
درواقع آین آرایه برای ساخت کرنل #فیلتر_میانه است که باید تقسیم بر 25 شود:
np.ones((5,5),np.float32)/25
array([[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04]], dtype=float32)
چرا؟🤔🙄
3️⃣ در واقع هسته 5.5 روی عکس حرکت کرده و هر بار میانگین 25 پیکسل که شامل مرکز قسمتی از عکس که کرنل روی آن قرار دارد و باقی که همسایگان پیکسل مرکزی میباشند، حساب میشود. در واقع پیکسل های عکس، درایه به درایه در کرنل ضرب میشوند. سپس تمام این پیکسل ها جمع میشوند و جایگزین پیکسل مرکز ی میشوند. سپس مرکز کرنل روی پیکسل بعدی عکس منشیند.(کونولوشن).
کونولوشن هم در حوزه مکان و هم در حوزه فرکانس هست، منتها در حوزه فرکانس اسم آن به ضرب تبدیل میشود.
اپن سی وی(opencv) این کار را با تابع cv2.filter2D# انجام میدهد.
cv2.filter2D(img,-1,kernel)
همانطور که مشاهده میکنید این تابع 3 پارمتر دارد:
1)تصویر #مبدا یا اصلی
2)؟🤔
3) کرنل یا ماسک
در مورد پارامتر دوم :
cv.filter2D (src, dst, ddepth, kernel, anchor = new cv.Point(-1, -1), delta = 0, borderType = cv.BORDER_DEFAULT)
کل پارامترهایی که این تابع میگیره اینها هستن.
پارامتر ddepth# جواب سوال ما هست.
1) وsrc: تصویر ورودی
2) وdst : تصویر خروجی که از نظر اندازه و تعداد کانال با تصویر ورودی یکی است
3) وddepth: عمق دلخواه تصویر خروجی
4)کرنل
5)و....
#مات یا #نرم کردن تصویر با فیلتر #میانگین
فیلتری در حوزه #مکان و#پایین گذر
👀ببینیم کدبرنامه چی میگه:
1️⃣خواندن تصویر :
img = cv2.imread('face.png')
2️⃣یک آرایه5x5 که تمام عناصر آن از یک تشکیل شده باشه، توسط دستور زیر انجام میگیره:
#np.ones: آرایه ای از 1 درست میکند:
np.ones((5,5),np.float32)
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]], dtype=float32)
درواقع آین آرایه برای ساخت کرنل #فیلتر_میانه است که باید تقسیم بر 25 شود:
np.ones((5,5),np.float32)/25
array([[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04],
[ 0.04, 0.04, 0.04, 0.04, 0.04]], dtype=float32)
چرا؟🤔🙄
3️⃣ در واقع هسته 5.5 روی عکس حرکت کرده و هر بار میانگین 25 پیکسل که شامل مرکز قسمتی از عکس که کرنل روی آن قرار دارد و باقی که همسایگان پیکسل مرکزی میباشند، حساب میشود. در واقع پیکسل های عکس، درایه به درایه در کرنل ضرب میشوند. سپس تمام این پیکسل ها جمع میشوند و جایگزین پیکسل مرکز ی میشوند. سپس مرکز کرنل روی پیکسل بعدی عکس منشیند.(کونولوشن).
کونولوشن هم در حوزه مکان و هم در حوزه فرکانس هست، منتها در حوزه فرکانس اسم آن به ضرب تبدیل میشود.
اپن سی وی(opencv) این کار را با تابع cv2.filter2D# انجام میدهد.
cv2.filter2D(img,-1,kernel)
همانطور که مشاهده میکنید این تابع 3 پارمتر دارد:
1)تصویر #مبدا یا اصلی
2)؟🤔
3) کرنل یا ماسک
در مورد پارامتر دوم :
cv.filter2D (src, dst, ddepth, kernel, anchor = new cv.Point(-1, -1), delta = 0, borderType = cv.BORDER_DEFAULT)
کل پارامترهایی که این تابع میگیره اینها هستن.
پارامتر ddepth# جواب سوال ما هست.
1) وsrc: تصویر ورودی
2) وdst : تصویر خروجی که از نظر اندازه و تعداد کانال با تصویر ورودی یکی است
3) وddepth: عمق دلخواه تصویر خروجی
4)کرنل
5)و....