Xử lý tín hiệu ECG bằng Wavelet
Trang 1www.bme.vn
Trang 2Coif3 0.66525 1.4270 2.2107 2.5169 2.4254 2.4254 Coif4 6.2048 48.022 48.022 132.68 136.39 135.94 Coif5 1496.6 9330.2 21836 28455 28574 28826 haar 0.000444 0.0013323 0.001776 0.001776 0.001776 0.001776 Nhận xét:
Khả năng tương thích của các wavelet đối với các tín hiệu là rất cao nhưng giữa các wavelet với nhau thì độ chênh lệch lớn
Các wavelet ‘bior’ khả năng tương thích cao nhất đối với tín hiệu do kết hợp được các đặc tính đối xứng và các bộ lọc FIR, đồng thời độ ổn định cao, các hàm phân tách và hàm tái tạo là khác nhau
Sử dụng các wavelet có bậc càng cao đô ổn định tăng nhưng khả năng tái tạo lại tín hiệu là không tốt
Với các wavelet có độ trơn và đối xứng cao thì kết quả tương thích càng tăng
Trang 3Mô hình xử lý nhiễu bằng phương pháp đặt ngưỡng:
Trang 4Sử dụng biến đổi wavelet và mức phân tách tốt nhất :
ü Thực hiện các mức ngưỡng khác nhau đối với các thành phần chi tiết đã được phân tách, tổng hợp và đánh giá kết quả so với đặt ngưỡng toàn cục
ü Thay đổi SNR và đánh giá kết quả - Tạo giao diên chương trình trong matlab - Áp dụng với tín hiệu thực tế
Tham số đánh giá tác động khử nhiễu là RMSE và SNR
Thay đổi mức độ nhiễu trắng khác nhau bằng cách thay đổi tỉ số SNR
Đánh giá khả năng khử nhiễu của từng loại wavelet khác nhau bằng RMSE Đánh giá tác động khử nhiễu trên các thành phần hệ số khai triển và khôi phục wavelet, sử dụng cùng loại wavelet, mức nhiễu và cùng loại tín hiệu thử
Chương trình cho phép đánh giá RMSE, của tín hiệu được so sánh wavelet, của thành phần hệ số wavelet xấp xỉ và các thành phần hệ số wavelet chi tiết Chương trình cho phép so sánh giữ tín hiệu chưa nhiễu và tín hiệu đã thực hiện khử nhiễu
Tiến hành so sánh RMSE mổi thành phần hệ số wavelet của tín hiệu gốc với tín hiệu bị nhiễu, tín hiệu gốc với tín hiệu đã khử nhiễu ECG, ta sẽ thấy rõ được tác động
Trang 5của nhiễu trắng và khả năng loại bỏ nhiễu trắng trên mỗi thành phần xấp xỉ hoặc chi tiết trong khai triển wavelet
Các thông số của tín hiệu thử:
File tín hiêu ECGdata.mat Tốc độ lấy mẫu : 200 mẫu/s Tần số của tín hiệu: 1,27389 Hz Chu kì của tín hiệu: 0.785s Số mẫu được lấy: 5455 mẫu
Biên độ tín hiệu : Min: -1.12823 mV Max: 2.89307 mV Tín hiệu thu được từ máy biopac
Thực hiện cấy nhiễu trắng Gaussian cho tín hiệu với tỉ SNR thay đổi được bằng
hàm awgn
4.1.1 Phân tách tín hiệu:
Sử dụng file tín hiệu ECGdata.mat
Cấy nhiễu trắng với SNR=10dB (mức trung bình)
Phân tách tín hiệu sử dụng wavelet ‘bior1.3’, mức phân tách 3, biểu diễn các hệ số xấp xỉ A3, hệ số chi tiết C1,C2,C3
Hình 4.1: Tín hiệu có nhiễu
Trang 6Hình 4.2: Hệ số chi tiết D1
Hình 4.3: Hệ số chi tiết D2
Hình 4.4: Hệ số chi tiết D3
Hình 4.5: Hệ số xấp xỉ A3
Trang 74.1.2 Lấy ngưỡng tự động và khử nhiễu tự động :
a.Thực nghiệm tín hiệu cấy nhiễu trắng có SNR= 10, sử dụng mức phân tách 3, tính RMSE của tín hiệu khứ nhiễu so với tín hiệu gốc
Bảng 4.2
Loại wavelet
Mức phân tách tối đa
Trang 8b Hàm khử nhiễu tự động wden sử dụng quy tắc chọn lựa ngưỡng:
Dựa trên 4 nguyên tắc: rigrsure, heursure,swtwolog, minimaxi
Thực hiện trên các loại wavelet khác nhau, với mức phân tách 3, hai loại ngưỡng mềm và ngưỡng cứng
Bảng 4.3
Rigsure (s/h) Heusure (s/h) Sqtwolog (s/h) Minimaxi (s/h) Db2 0.1908/0.1711 0.2795/0.2579 0.2822/0.2772 0.2632/0.2339 Db4 0.1771/0.1555 0.2777/0.2777 0.2777/0.2777 0.2647/0.2220 Db6 0.1851/0.1536 0.2792/0.2792 0.2792/0.2792 0.2721/0.2352 Db8 0.1889/0.1543 0.2822/0.2822 0.2822/0.2822 0.0.279/0.2561 Db10 0.1962/0.1637 0.2845/0.2845 0.2845/0.2845 0.2819/0.2673 Sym2 0.1908/0.1711 0.2795/0.2579 0.2822/0.2772 0.2632/0.2339 Sym4 0.1966/0.1652 0.2845/0.2617 0.2884/0.2842 0.2670/0.2328 Sym6 0.1702/0.1481 0.2887/0.2769 0.2900/0.2900 0.2685/0.2222 Sym8 0.1719/0.1481 0.2794/0.2759 0.2797/0.2797 0.2663/0.2391 Sym10 0.1731/0.1468 0.2712/0.2633 0.2721/0.2797 0.2594/0.2234 Bior1.3 0.2241/0.2217 0.2826/0.2996 0.2807/0.3214 0.2975/0.2467 Bior2.4 0.2003/0.1674 0.2857/0.2566 0.2922/0.2675 0.2602/0.2053 Bior2.8 0.1780/0.1546 0.2663/0.2398 0.2712/0.2509 0.2459/0.2030
Trang 9Bior3.5 0.1949/0.1652 0.2741/0.2495 0.2807/0.2693 0.2536/0.2114 Bior4.4 0.1878/0.1488 0.2904/0.2833 0.2917/0.2917 0.2738/0.2234 Bior6.8 0.1695/0.1463 0.2710/0.2620 0.2722/0.2722 0.2581/0.2198 Coif1 0.2057/0.1796 0.2852/0.2629 0.2907/0.2851 0.2720/0.2512 Coif2 0.1812/0.1545 0.2833/0.2627 0.2851/0.2795 0.2674/0.2308 Coif3 0.1832/0.1545 0.2783/0.2712 0.2795/0.2813 0.2660/0.2411 Coif4 0.1819/0.1483 0.2810/0.2728 0.2813/0.2813 0.2674/0.2353 Coif5 0.1901/0.1565 0.2778/0.2707 0.2784/0.2784 0.2673/0.2441 Haar 0.2371/0.2151 0.3227/0.3151 0.3238/0.3238 0.3012/0.2511
Đối với đặt ngưỡng SURE và minimax, khoảng 3% các hệ số được giữ lại Các phương pháp khác mọi hệ số được đặt về 0 Các quy tắc chọn ngưỡng Minimax và SURE rõ hơn và tiện hơn khi có các chi tiết nhỏ của hàm nằm gần dải nhiễu
Với các loại wavelet khác nhau thì cho các hệ số phân tách khác dẫn đến giá trị ngưỡng đặt chung không triệt khử hết các hệ số nhiễu dẫn đến RMSE khác nhau
4.1.3 Giá trị ngưỡng bằng công thức trên lý thuyết:
Công thức tính trên thực tế ngưỡng chung toàn cục và cục bộ cho tín hiệu: SURE λ= 2.ln(Nk.ln(Nk))= 4.638
FIXTHES λ = 2.ln(Nk)= 4.148
MINIMAX λ=0.3936+0.1829.lg(Nk)= 1.077 Đánh giá kết quả dựa trên RMSE
Trang 10Nhận xét: Dựa trên kết quả tính RMSE:
Sử dụng ngưỡng Minimax cho kết quả tốt hơn so với ngưỡng Sure và Fixthes do là ngưỡng cải tiến của các loại ngưỡng trên
Các giá trị ngưỡng tính toán vẫn chưa đạt được giá trị tối ưu, ngưỡng lý thuyết đưa ra cho xử lý trên các mức hệ số chi tiết khác nhau, áp dụng cứng cho toàn bộ tín hiệu dưa trên số mẫu của tín hiệu nêu chưa có được giá trị mềm phù hợp với tín hiệu
Trang 11So sánh kết quả với chương trình khử nhiễu tự động:
Ngưỡng tính toán của chương trình cho kết quả khử nhiễu tốt hơn so với cách tính ngưỡng bằng công thức rồi đưa vào Do khả năng ước lượng nhiễu trong matlab tốt hơn Công thức ngưỡng đưa ra là các loại ngưỡng tính toán chung cho các loại tín hiệu nên đối với từng loại tín hiệu và từng loại nhiễu là không chính xác
4.1.4 Thử nghiệm trên tất cả các mức cho đến mức tối đa:
Mức tối đa của wavelet được chọn tính tư động Tính từ mức phân tách 1 cho đến mức tối đa Thử nghiêm với chương trình khử nhiễu tự động Nhiễu trắng với SNR=10dB
Bảng 4.5 :
Db4 0.0015 0.0016 0.0018 0.0021 0.0024 0.0026 0.0027 0.0028 Db6 0.0014 0.0013 0.0018 0.0022 0.0026 0.0027 0.0028 0.0028 Db8 0.0014 0.0013 0.0018 0.0023 0.0027 0.0028 0.0029 0.0028 Sym6 0.0014 0.0013 0.0017 0.0021 0.0024 0.0026 0.0027 0.0027 sym8 0.0014 0.0013 0.0017 0.0021 0.0025 0.0026 0.0027 0.0027 sym10 0.0014 0.0012 0.0017 0.0021 0.0025 0.0026 0.0027 0.0027 Bior2.8 0.0014 0.0014 0.0016 0.0018 0.0020 0.0022 0.0027 0.0022 Bior4.4 0.0014 0.0013 0.0018 0.0021 0.0024 0.0026 0.0027 0.0027 Bior6.8 0.0014 0.0012 0.0017 0.0020 0.0023 0.0025 0.0027 0.0026 Coif2 0.0014 0.0014 0.0017 0.0021 0.0024 0.0026 0.0027 0.0027 Coif3 0.0014 0.0013 0.0017 0.0021 0.0024 0.0026 0.0027 0.0027 Coif4 0.0014 0.0016 0.0018 0.0021 0.0024 0.0026 0.0027 0.0027
Trang 12Mức đô khử nhiễu tín hiệu là tương đương nhau đối với các loại wavelet khác nhau
4.1.6 Với giá trị SNR thay đổi:
4.1.7 Ước lượng nhiễu tín hiệu:
Ước lượng độ lệch chuẩn trên toàn bộ tín hiệu:
Phân tách toàn bộ tín hiệu bằng wavelet ở mức phân tách 5
Trang 13Sử dụng ước lượng thô cho vector hệ số wavelet bằng hàm median trong matlab: 6745
Nhận xét: Độ lệch chuẩn được ước lượng trên các hệ số phân tách wavelet, với
các wavelet khác nhau thì giá tri ước lượng khác nhau, do chưa có giá trị chính xác trên thưc tế bên không thể kết luận
Ước lượng độ lệch chuẩn trên hệ số chi tiết: - Sử dụng hàm wnoisest
- Sử dụng ước lượng thô bằng hàm median
- Thực hiện trên tín hiệu ECG có nhiễu, wavelet được sử dụng là db3 mức phân tách 3
Trang 144.2 GIẢI PHÁP GIẢM RMSE VÀ TĂNG SNR CHO TÍN HIÊU ECG ĐƯƠC KHỬ NHIỄU:
Tác dụng khử nhiễu wavelet lên các hệ số chi tiết của các mức khai triển không đồng đều nhau Tham số ngưỡng nhiễu λ áp dụng như nhau lên hệ số chi tiết của tất cả các mức phân tách sẽ không cho kết quả khử nhiễu tốt nhất
Giải pháp sử dụng tham số ngưỡng nhiễu kλ Trong đó k hệ số thay đổi theo mức khai triển Bằng cách lập trình hệ số k ta xác định được tham số ngưỡng nhiễu chính xác hơn cho từng mức phân tách wavelet khác nhau
Trang 15Lưu đồ tính hệ số k cho tất cả các mức khai triển khử nhiễu wavelet như sau:
Trang 16Thủ tục tính tham số ngưỡng nhiễu kλ, sao cho đạt RMSE tối ưu sẽ theo lưu đồ:
Trang 17Lấy ngưỡng theo phương pháp UNIVERSAL:
UNIVERSAL λ=δk 2ln(Nk)Thực hiện trên ngưỡng toàn cục:
σ =0.2880
λ=2.226 RMSE=0.0035
Thực hiện với wavelet db3, mức phân tách 5, khử nhiễu trên từng mức
Trang 18Hình 4.6
Nhân xét:
Các nhiễu không còn trên tín hiệu hiệu nhưng tín hiệu sau khử nhiễu bị biến dạng so với tín hiệu gốc nên dẫn đến hệ số RMSE là khá lớn vậy chương trình chưa đạt được kết quả tốt khi khử nhiễu trên từng mức tín hiệu
4.3 GIẢI QUYẾT VỚI NHIỄU KHÔNG TỈ LỆ VÀ NHIỄU KHÔNG TRẮNG
Không thể sử dụng trực tiếp mô hình cơ bản Ta có thể giải quyết với mô hình độ lệch trong hàm khử nhiễu chính wden: sd=wden(s,tptr,sorh,scal,n,wav), sẽ trả về phiên bản đã khử nhiễu sd của tín hiệu gốc s:
Tptr : quy tắc chọn ngưỡng rigrsure, heursure, sqtwolog, minimax Scale: ‘mln’:mô hình cơ bản với nhiễu không trắng
‘sln’: mô hình cơ bản với nhiễu không tỉ lệ
Xử lý tái tỉ lệ ngưỡng sử dụng một dự đoán đơn của nhiều mức dựa trên các hệ số mức 1 Các ngưỡng cần được tái tỉ lệ bằng một dự đoán theo mức của nhiễu mức, sử dụng nhờ dự đoán σlev theo từng mức Ước lượng này được cài đặt trong M-file wnoisest, xử lý trực tiếp cấu trúc phân tách wavelet của tín hiệu gốc
Có thể sử dụng hàm wdencmp thực hiện đặt ngưỡng các hệ số wavelet, wdencmp cho phép định nghĩa chiến thuật đặt ngưỡng riêng tùy mục đích
4.4 TỪ KẾT QUẢ TÍNH ĐƯỢC ÁP DỤNG VÀO TRONG THƯC TẾ:
Sử dụng 3 loại tín hiệu nhiễu:
Trang 19NhieuECG1.mat Số mẫu : 12000 NhieuECG2.mat
Số mẫu: 3945 NhieuECG3.mat
Trang 20Dạng tín hiệu sau khử nhiễu có dạng tương đối giống với tín hiệu điện tim: NhieuECG3.mat
- Giao diện không đẹp
- Chương trình không có khả năng khử nhiễu trên từng mức - Khó có khả năng cải tiến chất lượng
- Chưa thể hiện hết được tính ưu việt của wavelet
Trang 21Hình 4.10
www.bme.vn