أنا خالد كرار حسن، وهذا الموقع شرحٌ نظري وتطبيق عملي على تحويل الويفلت (Wavelet Transform) في معالجة صور EEG ثنائية الأبعاد: إزالة التشويش واكتشاف الحواف.
هذه الصفحة تعرض البحث عملياً: كل صورة ورقم تراه محسوب حياً في المتصفح، ويمكنك تغيير الويفلت وعدد المستويات والعتبة ومستوى الضوضاء ومشاهدة الأثر فوراً.
عنوان البحث يجمع شيئين يجب التمييز بينهما: إشارة EEG أحادية البعد (جهد مقابل الزمن)، وصورة ثنائية الأبعاد تُشتق منها، كالمخطط المقياسي (Scalogram) أو المخطط الطيفي أو خريطة قنوات × زمن. تحويل الويفلت الثنائي الأبعاد يُطبَّق على هذه الصورة المشتقة لا على الإشارة نفسها [1]، [2].
يُطبَّق مرشحا تمرير منخفض وعالٍ على الصفوف ثم الأعمدة (تحويل قابل للفصل)، فتنتج أربعة نطاقات بربع المساحة، ثم يتكرر التحليل على LL [6]، [9]. في MATLAB: dwt2 لمستوى واحد وwavedec2 لعدة مستويات وwaverec2 لإعادة البناء.
| النطاق | حصته من الطاقة الكلية Σc² |
|---|
النموذج y = x + η بضوضاء غاوسية بيضاء. بما أن التحويل متعامد تبقى الضوضاء بيضاء بالتباين نفسه في مجال المعاملات، فتُقدَّر σ من المعاملات القطرية الدقيقة، وتُقلَّص المعاملات الصغيرة [7]، [10]. في MATLAB: wdenoise2 أو wavedec2 + wthresh + waverec2 [11]، [12].
| الطريقة | PSNR (dB) | SSIM |
|---|
تكبر معاملات التفاصيل قرب الانقطاعات، وتقع الحواف عند القيم العظمى الموضعية لمقدار التحويل عبر المقاييس [14]، [8]. نستخدم التحويل غير المتناقص (SWT) لتفادي حساسية الإزاحة، ونجمع المقاييس بالوسط الهندسي لمقادير التفاصيل ثم نحذف غير القيم العظمى (NMS). هذا تنفيذ مبسّط لغرض العرض وليس تنفيذ Mallat–Zhong الكامل. في MATLAB: swt2 وedge [15]، [16].
| الطريقة (عند العتبة الحالية) | Precision | Recall | F1 |
|---|
| أفضل F1 (متوسط 5 بذور) | σ=0 | σ=10 | σ=20 | σ=30 | σ=40 |
|---|
نولّد إشارة من إيقاع ألفا 10Hz وثيتا 6Hz وانفجار بيتا قرب 22Hz عند 1.3 ثانية ووميض عين بطيء عند 0.45 ثانية وضوضاء بيضاء وتيار كهربائي 50Hz. ثم نحسب CWT بويفلت Morlet (ω₀=6) على 48 تردداً لوغاريتمياً بين 2 و60Hz، فتنتج الصورة ثنائية الأبعاد التي تُعالَج في B وC [5]. وحدة السعة اعتباطية. في MATLAB: cwt [17].
اختيار الويفلت موازنة بين قِصَر المسند وعدد عزوم التلاشي والتماثل والنعومة [18]، [19]. تُرسم الدالتان φ (المقياس) وψ (الويفلت) بخوارزمية التتالي من معاملات المرشح، وتُحسب خصائص المرشح رقمياً.
| الخاصية المحسوبة | القيمة |
|---|
هذه هي النواة المكتوبة في البحث. راجعتُ أسماء الدوال وصيغها في توثيق MathWorks، لكن الشيفرة لم تُشغَّل عند كتابة البحث، فتُختبر قبل التسليم.
| ما تراه في الصفحة | الدالة في MATLAB |
|---|---|
| تحليل DWT لمستوى / عدة مستويات وإعادة البناء | dwt2 · wavedec2 · waverec2 |
| العتبة اللينة/الصلبة | wthresh |
| تنقية جاهزة (طرق وعتبات متعددة) | wdenoise2 |
| ويفلت غير متناقص للحواف | swt2 |
| Sobel وCanny | edge |
| المخطط المقياسي | cwt |
| PSNR وSSIM وMSE | psnr · ssim · immse |
I = im2double(imread('cameraman.tif')); rng(0);
In = I + 0.05*randn(size(I)); % known Gaussian noise
[C,S] = wavedec2(In, 3, 'sym4'); % 2D multilevel DWT
[~,~,D1] = detcoef2('all', C, S, 1);
sigHat = median(abs(D1(:)))/0.6745; % noise estimate from HH1
lam = sigHat*sqrt(2*log(numel(In))); % universal threshold
nA = prod(S(1,:)); % LL_J is not thresholded
Cs = C; Cs(nA+1:end) = wthresh(C(nA+1:end), 's', lam); % soft
Ch = C; Ch(nA+1:end) = wthresh(C(nA+1:end), 'h', lam); % hard
Isoft = waverec2(Cs, S, 'sym4'); Ihard = waverec2(Ch, S, 'sym4');
figure; subplot(1,3,1), imshow(I); subplot(1,3,2), imshow(In,[]); subplot(1,3,3), imshow(Isoft,[]);
for X = {In, Isoft, Ihard}
fprintf('MSE %.4g PSNR %.2f dB SSIM %.4f\n', immse(X{1},I), psnr(X{1},I), ssim(X{1},I));
end
%% Edges with SWT (2^J must divide the image size)
[~,H,V,D] = swt2(I, 2, 'sym4');
M = 0; for j = 1:2, M = M + mat2gray(sqrt(H(:,:,j).^2 + V(:,:,j).^2 + D(:,:,j).^2)); end
M = M/2; BWw = bwmorph(imbinarize(M, graythresh(M)), 'thin', Inf);
figure; subplot(1,3,1), imshow(BWw); subplot(1,3,2), imshow(edge(I,'sobel')); subplot(1,3,3), imshow(edge(I,'canny'));إجابات موجزة مبنية على المراجع، مع تمييز ما هو معروف نظرياً عمّا يحتاج اختباراً على البيانات.
الويفلت الأحادي البعد يُطبَّق على الإشارة مباشرة ويُستخدم كثيراً في EEG [20]، [21]. أما الصورة المشتقة (مخطط مقياسي أو طيفي) فتحوّل المسألة إلى معالجة صور، وهو ما تفعله أعمال التعلّم العميق على EEG [1]، [2]، [22]. يجب ألا يُخلط بين المستويين: بنية الصورة تعتمد على التحويل الذي أنتجها.
الوسيط المطلق لعيّنة غاوسية متوسطها صفر يساوي تقريباً 0.6745σ، فالقسمة تجعل المقدّر متسقاً [7]. ويُستخدم الوسيط لأنه أقل تأثراً بمعاملات الحواف الكبيرة من الانحراف المعياري.
الصلبة تُبقي المعامل الكبير كما هو فتحفظ سعته لكنها قد تُنتج تذبذبات، واللينة تقلّصه بمقدار λ فتكون أنعم لكنها تُدخل انحيازاً [10]. جرّب الاثنتين في المختبر B وانظر خريطة الخطأ بنفسك.
DWT المتناقص ليس ثابتاً أمام الإزاحة، فإزاحة الصورة بكسلاً قد تغيّر المعاملات. SWT يحافظ على حجم الصورة عند كل مقياس فيخفف هذه الحساسية بثمن الذاكرة والزمن [15].
لا يصح الادعاء بأفضلية مطلقة. Canny من حيث المبدأ صيغة أحادية المقياس من التدرج المنعّم [23]، [8]، وما يضيفه الويفلت هو دمج عدة مقاييس. والأداء يتوقف على الصورة والضوضاء والعتبات والويفلت، ولذلك تُقاس الأطراف على حقيقة أرضية بمؤشرات Precision وRecall وF1 كما في المختبر C.
لا. هي محسوبة حياً بشيفرة JavaScript على صور اصطناعية وإشارة اصطناعية للتوضيح. أما نتائج MATLAB فتُنتج بتشغيل الملفات المرفقة على صورة قياسية، وتُذكر هي وحدها في قسم النتائج بعد تشغيلها فعلاً.
الإشارة اصطناعية وليست سريرية، والضوضاء غاوسية بيضاء وهو افتراض قد لا يصح في صور EEG الحقيقية، وتنفيذ الحواف مبسّط، وSSIM مبسّط، وDWT المتناقص غير ثابت أمام الإزاحة (يخففه Cycle Spinning أو الويفلت المعقد ثنائي الشجرة [24]). ومن الاتجاهات المستقبلية: بيانات EEG حقيقية مُجازة أخلاقياً، وقياس الأثر على مهمة تصنيف لاحقة، وتجربة ويفلتات أخرى.
رُجعت المراجع من مصادرها؛ الأرقام في النص تشير إلى القائمة أدناه.