تبدیل موجک
موجک یا Wavelet گروهی از توابع ریاضی می باشند که جهت تشخیص مولفه های فرکانسی و تجزیه سیگنال یا تصویر بکار میرود که رزولوشن هر مؤلفه برابر با مقیاس آن است. تبدیل موجک یا ویولت (Wavelet Transform) به این معنا است که تجزیه یک تابع بر مبنای توابع موجک انجام شود. موجکها نمونههای مقیاس شده و انتقال یافته یک تابع با طول متناهی و نوسانی شدیداً میرا هستند.
- تعریف تبدیل موجک
_ برتری تبدیل موجک بر تبدیل فوریه - کاربرد تبدیل موجک
- مفاهیم و روابط ریاضی تبدیل موجک
- تبدیل موجک تصویر
- تبدیل موجک در متلب
_ تبدیل موجک سیگنال
_ تبدیل موجک تصویر
برتری تبدیل موجک به تبدیل فوریه
همانطور که می دانید هدف از استفاده این تبدیل ها بردن سیگنال در حوزه فرکانسی می باشد. برای این کار از تبدیلات زیر استفاده می شود
- سری فوریه : سیگنال های متناوب
- تبدیل فوریه: سیگنال های نامتناوب
- تبدیل لاپلاس : سیتم هی کنترلی و مدارات الکترونیکی
- تبدیل z : سیگنال های گسسته در زمان و پردازش سیگنال دیجیتالی
- تبدیل ویولت (موجک) : تحلیل تصاویر و فشرده سازی داده
با توجه به تفاوت سیگنال های ایستا و غیرایستا، می توان گفت تبدیل فوریه بر روی سیگنال های غیر ایستا عملکرد مناسبی ندارد و تنها فرکانس های به کار رفته را تشخیص می دهد اما قدرت تشخیص زمان اثر گذاری این فرکانس بر روی سیگنال را ندارد.
در این حالت باید به دنبال تبدیل دیگه ای بود تا بتواند این خلا را جبران کند، تبدیل ویولت این امکان را دارد که هم بتوان فرکانس های تشکیل دهنده سیگنال را تشخیص داد و هم زمان اثر گذاری این فرکانس بر سیگنال را پیدا کند. در واقع تئوری موجک ها تعمیم یافته ی تئوری تبدیلات فوریه (Fourier transform) و سری های فوریه (Fourier Series) می باشد.

همانطور که در شکل نشان داده شده است تبدیل فوریه دارای رزولوشن اطلاعاتی بالایی در حوزه فرکانسی بوده و از حوزه زمان مشخصاتی را نمایش نمی دهد.
در مورد تبدیل ویولت در فرکانس های پایین (طول پنجره بزرگ)، رزولوشن فرکانسی بالا اما رزولوشن زمانی کمی دارد. در حالی که در فرکانس های بالا (طول پنجره کوچک) رزولوشن فرکانسی کم اما رزولوشن زمانی زیادی را شامل می شود.
کاربرد تبدیل موجک
تبدیلات موجک از جمله ابزارهایی هستند که کاربردهای فراوانی در شاخه های مختلف علمی و مهندسی دارد به ویژه:
- هوش مصنوعی (Artificial Intelligence)
- یادگیری ماشینی (Machine Learning)
- پیش بینی سری زمانی (Time Series Prediction)
- بازشناسی الگو (Pattern Recognation)
- فشرده سازی و حذف نویز
مفاهیم و روابط ریاضی
همانطور که می دانید مفهوم ضرب سیگنال های پایه (با فرکانس مشخص) در سیگنالی می تواند تعیین کننده فرکانس های موجود در آن سیگنال باشد. به عنوان مثال برای اگر سیگنالی را در sin(wt) ضرب کنیم و حاصل عدد بزرگی شود می فهمیم که فرکانس w در سیگنال وجود دارد. از این مفهوم هم پوشانی و شباهت بین دو سیگنال در تبدیل موجک نیز بهره می بریم.
در تبدیل فوریه این همپوشانی با سیگنال های سینوسی بوده اما در تبدیل ویولت این شباهت سنجی با سیگنال هایی به نام موجک انجام می شود. تفاوت دیگر تبدیل فوریه و ویولت در طول سیگنال مورد نظر می باشد، موج های سینوسی از منفی بی نهایت تا مثبت بی نهایت را شامل می شود. در حالی که موجک ها (موج های کوچک) یه سرعت از هر دو طرف میرا می شوند.همین ویژگی منجر به استخراج ویژگی های زمانی نیز خواهد شد.
موجک مادر : با طول محدود و میانگین صفر
هر تبدیل موجک به صورت کلی دارای دو مولفه مقیاس و انتقال می باشد.
- مولفه مقیاس (a) این مولفه معادل اندازه فرکانس سیگنال است. بدیهی ست هر چه مقدار آن بیشتر (فرکانس بیشتر) شکل فشرده تر و برعکس خواهد شد.در واقع تعیین کننده طول پنجره گذاری نیز خواهد بود.
- مولفه انتقال (b) نیز باعث شیفت این موجک (پنجره گذاری) خواهد شد. نماد تاخیر موجک می باشد.
بنابراین می توان گفت تبدیل موجک تبدیلی مبتنی بر پنجره گذاری با طول متغییر می باشد. تبدیل ویولت منجر به تحلیل چند رزولوشنی (multiresolution analysis ) از سیگنال می شود.
در رابطه بالا برای تمام مقادیر a و b پیوسته از منفی بی نهایت تا مثبت بینهایت، تبدیل ویولت محاسبه می گردد. در عمل این روش را تبدیل ویولت پیوسته (CWT) می نامند. برای شبیه سازی و محاسبات کامپیوتری عملا این امر مقدور نیست. بنابراین برا فاکتور مقیاس اعداد توان دو a = 1,2,4,8 و برای b مقدار صحیح مثبت را متصور می شویم. به این محاسبات تبدیل ویولت گسسته (DWT) می گویند.
تبدیل ویولت در تصویر
تحلیل چند رزولوشنی در تصویر به این معناست که، قسمت هایی از تصویر جزییات بالاتری دارد می توان از پنجره های بزرگتر (رزولوشن بالاتر ) و جاهای که جزییات کمتری دارد از پنجره های کوچک تر (رزولوشن کمتر) استفاده می کنیم.

با دقت در این مفهوم می توان گفت تبدیل ویولت در حوزه تصویر برای مباحث فشرده سازی، تحلیل مالتی رزولوشن، واترمارکینگ و ... کاربرد دارد. همچنین می توان در حذف نویز تصویر مولفه های فرکانس بالا را پس از اعمال ویولت از تصویر کنار گذاشت. این یک روش رایج در حذف نویز تصاویر و حتی سیگنال می باشد.
تبدیل ویولت در متلب
همانطور که گفته شد ما دو نوع تبدیل ویولت گسسته و پیوسته داریم. در متلب برای هر کدام از انواع ویولت فانکشن های متفاوتی تعریف شده است. باید توجه داشته باشیم که توابع بسیاری در متلب به عنوان موجک معرفی شده اند که همه آنها دو شرط زیر را درا می باشد:
- موجک باید انرژی محدود (Finite Energy) داشته باشد
- میانگین آن برابر با صفر باشد.
همچنین با توجه به داشتن یکی از ویژگی های زیر خانواده جدید از موجک ها معرفی می شوند:
- متعامد (Orthogonal) یا غیر متعامد
- متعامد دو طرفه (Bi-Orthogonal)
- متقارن (Symmetric) یا غیرمتقارن
- حقیقی یا مختلط
- موجک نرمالیزه شده دارای انرژی واحد
همانطور که ذکر شد ویژگی های مختلف منجر به معرفی انواع مختلف موجک شده است. از جمله معروف ترین موجک هایی ک توسط متلب پشتیبانی می شود می توان به موارد زیر اشاره نمود.
Wavelet Family Name | Wavelet Family Short Name |
Haar wavelet | 'haar' |
Daubechies wavelets | 'db' |
Symlets | 'sym' |
Coiflets | 'coif' |
Biorthogonal wavelets | 'bior' |
Meyer wavelet | 'meyr' |
Gaussian wavelets | 'gaus' |
Mexican hat wavelet (Ricker wavelet) | 'mexh' |
Morlet wavelet | 'morl' |
پس از رسم توابع موجک موارد زیر را خواهیم داشت.

در خانواده های ویولت معرفی شده 'db' از محبوبیت و کارایی بالاتری برخوردار است. db نوع یک همان ویولت هار می باشد.

انتخاب اینکه کدام تابع از کدام خانواده مورد مناسبی برای زمینه کاری شماست، نیازمند شناخت این توابع می باشد.
تبدیل ویولت سیگنال در متلب
برای آشنایی با تبدل موجک گسسته در این قسمت مثالی اورده شده است. گرچه باید بدانیم امکان اعمال تبدیل ویولت پیوسته نیز وجود دارد. این کار با تابع cwt متلب انجام می شود.
load noisdopp;
[cA,cD] = dwt(noisdopp,'sym4');
xrec = idwt(cA,zeros(size(cA)),'sym4');
plot(noisdopp)
hold on
grid on
plot(xrec)
legend('Original','Reconstruction')
مثالی که در بالا اورده شده مراحل زیر را شامل می شود:
- لود کردن داده ها از دیتا ست
- اعمال تبدیل گسسته به سیگنال و تجزیه سیگنال به مولفه های جزییات و تقریب
- بازسازی سیگنال بدون در نظر گرفتن جزییات سیگنال
- نمایش دو سیگنال اصلی و بازسازی شده

همانطور که نشان داده شده، این دو مقدار از همدیگر اندکی متفاوت است. که به علت کنار گذاشتن جزییات فرکانس بالای سیگنال رخ داده است.
تبدیل ویولت تصویر در متلب
برخلاف سیگنال که در هر سطح ویولت ما دو بخش تقریب و جزییات داریم. برای تصویر عملا سه بخش جزییات در راستای افقی،عمودی و قطری خواهیم داشت. یک بخش هم تقریب دارد. مسلما در این حالت ابعاد جزییات و تقریب نصف ابعاد تصویر خواهد بود.
load sculpture
[cA,cH,cV,cD] = dwt2(X,'haar');
subplot(2,2,1)
imagesc(cA)
colormap gray
title('Approximation')
subplot(2,2,2)
imagesc(cH)
colormap gray
title('Horizontal')
subplot(2,2,3)
imagesc(cV)
colormap gray
title('Vertical')
subplot(2,2,4)
imagesc(cD)
colormap gray
title('Diagonal')
نتایج این کد به صورت زیر نمایش داده شده است.

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