1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Luận văn thạc sĩ) xây dựng hệ thống phân tích thông tin điện não đồ 04

63 66 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 63
Dung lượng 3,17 MB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ =======   ====== Trần Đức Nghĩa XÂY DỰNG HỆ THỐNG PHÂN TÍCH THƠNG TIN ĐIỆN NÃO ĐỒ LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội - 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ =======   ====== TRẦN ĐỨC NGHĨA XÂY DỰNG HỆ THỐNG PHÂN TÍCH THƠNG TIN ĐIỆN NÃO ĐỒ Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thơng tin Mã số: 60.48.01.04 LUẬN VĂN THẠC SĨ CƠNG NGHỆ THÔNG TIN Ngƣời hƣớng dẫn khoa học: PGS TS Nguyễn Linh Trung Hà Nội - 2014 LỜI CAM ĐOAN Tôi xin cam đoan kết luận văn sản phẩm riêng cá nhân tơi Trong tồn nội dung luận văn, điều đƣợc trình bày cá nhân đƣợc tổng hợp từ tài liệu tham khảo có xuất xứ rõ ràng đƣợc trích dẫn hợp pháp Tơi xin hoàn toàn chịu trách nhiệm theo quy định cho lời cam đoan Hà Nội, ngày 10 tháng 06 năm 2014 Học viên Trần Đức Nghĩa LỜI CẢM ƠN Để hoàn thành luận văn có kiến thức nhƣ ngày hơm nay, tơi xin gửi lời cảm ơn đến Nhà trƣờng toàn thể thầy cô Khoa Công nghệ thông tin – Trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội tận tình giảng dạy, truyền đạt kiến thức nhƣ kinh nghiệm quý báu cho suốt trình học tập nghiên cứu trƣờng Tơi xin bày tỏ lịng biết ơn sâu sắc đến thầy giáo, PGS TS Nguyễn Linh Trung, Trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội tận tình hƣớng dẫn quan tâm, động viên tơi trình tìm hiểu xây dựng luận văn Tôi chân thành cảm ơn ngƣời thân gia đình, bạn bè động viên tạo điều kiện giúp tơi q trình học tập nhƣ sống Luận văn nằm hƣớng nghiên cứu nhóm Xử lý tín hiệu Y sinh thuộc trƣờng Đại học Công nghệ MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỞ ĐẦU CHƢƠNG GIỚI THIỆU CÁC KHÁI NIỆM CƠ BẢN 11 1.1 KHÁI QUÁT VỀ ĐIỆN NÃO ĐỒ 11 1.1.1 Điện não đồ 11 1.1.2 Các đặc điểm Điện não đồ 12 1.1.2 Vai trị EEG chẩn đốn bệnh động kinh 15 1.2 CÁC VẤN ĐỀ VỀ NHIỄU 15 1.2.1 Nhiễu mắt ( Electroocugram – EOG) 16 1.2.2 Nhiễu (Electromyogram – EMG) 19 1.3 GIỚI THIỆU MỘT SỐ PHẦN MỀM XỬ LÝ EEG 20 CHƢƠNG THUẬT TOÁN TÁCH NHIỄU MẮT NHIỄU CƠ TRONG TÍN HIỆU ĐIỆN NÃO 22 2.1 CÁC THUẬT TỐN LOẠI NHIỄU MẮT NHIỄU CƠ ĐÃ CÓ 22 2.1.1 Loại nhiễu EOG phƣơng pháp lọc thích nghi 22 2.1.2 Phƣơng pháp tách nguồn mù 24 2.2 TÁCH NGUỒN MÙ VÀ THUẬT TOÁN SOBI 24 2.2.1 Phƣơng án đề xuất 26 2.2.1.1 Kết mô 27 2.2.1.2 Kết thực nghiệm 31 2.2.1.3 Đánh giá kết 34 CHƢƠNG HỆ THỐNG PHÂN TÍCH THƠNG TIN ĐIỆN NÃO ĐỒ 38 3.1 BÀI TOÁN 38 3.2 DỮ LIỆU MÁY ĐO 38 3.2.1 Đo liệu 38 3.2.2 Các kênh liệu 39 3.2.3 Dữ liệu ổ cứng 41 3.2.4 Tiền xử lý liệu điện não 41 3.3 LỰA CHỌN GIẢI PHÁP 44 3.3.1 Nhiệm vụ 44 3.3.2 Khó khăn 44 3.3.3 Lựa chọn giải pháp 44 3.3.4 Môi trƣờng tảng phát triển 45 3.4 CHƢƠNG TRÌNH 46 3.4.1 Mơ hình chức 46 3.4.2 Giao diện 47 3.4.3 Cơ sở liệu 48 KẾT LUẬN 50 TÀI LIỆU THAM KHẢO 52 PHỤ LỤC 55 DANH MỤC HÌNH VẼ Hình 1-1: Phân chia thùy vỏ não [17] 11 Hình 1-2: Dạng sóng tín hiệu điện não 14 Hình 1-3: Bản chất pha trộn sóng – Kênh Cz 14 Hình 1-4: Ví dụ gai động kinh 15 Hình 1-5: Phổ nhiễu EOG .17 Hình 1-6: Dạng nhiễu mắt gây nháy mắt [17] 17 Hình 1-7: Cách đặt điện cực để đo tín hiệu chuyển động mắt gây [17] 18 Hình 1-8: Nhiễu nhắm mở mắt gây tác động lên kênh tín hiệu điện não 18 Hình 1-9: Nhiễu ghi tín hiệu điện não đồ 20 Hình 1-10: Phần mềm Profusion 21 Hình 1-11: Phần mềm mã nguồn mở 21 Hình 2-1: Mơ hình lọc thích nghi thơng thƣờng 22 Hình 2-2: Phƣơng pháp tối thiểu hóa nguồn nhiễu .23 Hình 2-3: Tín hiệu chƣa có nhiễu mắt 27 Hình 2-4: Tín hiệu nguồn nhiễu mắt mơ 28 Hình 2-5: Tín hiệu trộn EEG EOG (SNR = 0,208) 28 Hình 2-6: Tín hiệu lọc sử dụng thuật toán Zhou 29 Hình 2-7: Tín hiệu lọc sử dụng thuật toán TV 30 Hình 2-8: Tín hiệu lọc phƣơng pháp đề xuất 30 Hình 2-9: Tín hiệu trƣớc sau sử dụng thuật toán đề xuất 31 Hình 2-10: Tín hiệu kênh bị tác động EOG 32 Hình 2-11: Tín hiệu kênh sau lọc Zhou 32 Hình 2-12: Tín hiệu kênh sau lọc thuật tốn đề xuất 33 Hình 2-13: Tín hiệu kênh có tác động nhiễu EMG .34 Hình 2-14: Tín hiệu kênh lọc phƣơng pháp đề xuất .34 Hình 3-1: Đo EEG sử dụng hệ thống chuyên dụng .39 Hình 3-2: Vị trí điện cực theo tiêu chuẩn 10-20 [13] 40 Hình 3-3: Dữ liệu bệnh nhân 41 Hình 3-4: Một đoạn liệu điện não đƣợc đo hiển thị Profusion 42 Hình 3-5: Đoạn liệu điện não sau chuyển sang file mathlab .43 Hình 3-6: Tín hiệu điện não sau qua ba lọc 43 Hình 3-7: Cơng cụ tạo Matlab DLL 45 Hình 3-8: Mơ hình hệ thống 46 Hình 3-9: Mơ hình chức .47 Hình 3-10: Giao diện hệ thống 48 Hình 3-11: Bảng liệu bệnh nhân 49 DANH MỤC BẢNG BIỂU Bảng 2-1: Giá trị RRMSE theo SNR sử dụng TV .37 Bảng 2-2: Giá trị RRMSE theo SNR sử dụng Zhou .37 Bảng 2-3: Giá trị RRMSE theo SNR sử dụng SOBI kĩ thuật nhận dạng nguồn 37 Danh sách thuật ngữ viết tắt Ký hiệu Tiếng Anh Tiếng Việt BSS – Blind Signal Separation – Canonical Phân tích quy tắc tƣơng quan CCA Correlation Analysis kết hợp tách nguồn mù ECG Electrocardiogram Điện tâm đồ EEG Electroencephalogram Điện não đồ EMG Electromyogram Điện đồ EOG Electrooculogram Điện nhãn đồ EMD Empirical Mode Decomposition Phân tích chế độ thực nghiệm EW Exponentially Weighted Trọng số theo hàm mũ FFT Fast Fourier Transform Biến đổi Fourier nhanh IDE Integrated Development Environment Môi trƣờng phát triển tích hợp HPF High pass filter Bộ lọc thơng cao LPF Low pass filter Bộ lọc thông thấp LMS Least mean squares RMS Root Mean Squared RRMSE Relative Root Mean Squared Error SOBI Second-Order Blind Identification Nhận dạng mù bậc SNR Signal to Noise Ratio Tỉ số tín hiệu nhiễu Trung bình bình phƣơng tối thiểu Sai số trung bình bình phƣơng Sai số trung bình bình phƣơng tƣơng đối MỞ ĐẦU Điện não đồ dùng để đo tín hiệu điện não, phục vụ phân tích, chẩn đoán, điều trị bệnh liên quan đến thần kinh Một bệnh phổ biến giới Việt Nam bệnh động kinh Động kinh rối loạn não đƣợc đặc trƣng xuất xung động kinh lặp lặp lại nhiều lần, có phóng điện bất thƣờng, đồng mức hoạt động não Tỉ lệ ngƣời mắc bệnh động kinh giới chiếm 1% loại bệnh (tƣơng đƣơng với bệnh ung thƣ vú) Việt Nam 0.44% (theo thống kê khu vực miền Bắc) Hiện nay, chuyên gia thần kinh đọc liệu điện não thô, không qua công đoạn xử lý tín hiệu bậc cao, qui trình đo chƣa đáp ứng chuẩn quốc tế, nên có khó khăn phân tích điện não đồ Việc chẩn gặp nhiều khó khăn biến thiên phức tạp hình thái gai, xuất thành phần nhiễu (artifacts) nhƣ nhiễu mắt, nhiễu Thực tế Việt Nam thiếu bác sĩ chuyên khoa đọc phân tích EEG việc chẩn đoán nhầm phổ biến Để hỗ trợ chuyên gia thần kinh việc phân tích điện não đồ, việc xây dựng hệ thống phân tích tín hiệu với phƣơng pháp tiên tiến cấp thiết Mục tiêu luận văn xây dựng hệ thống xử lý nhiễu mắt, nhiễu cho tín hiệu điện não Thuật tốn đề xuất đƣợc trình bày luận văn đƣợc thực thành công áp dụng nhiều mẫu liệu khác Kết cho thấy triển vọng việc áp dụng hệ thống vào ứng dụng thực tiễn, hỗ trợ cho bác sỹ Các khó khăn thực tế xây dựng hệ thống xử lý tín hiệu điện não Với mục đích đó, chúng tơi tiến hành đo tín hiệu điện não trực tiếp hệ đo EEG dòng E-series Compumedics, đặt Khoa Điện tử Viễn thông, nhiều bệnh nhân động kinh để nghiên cứu xây dựng liệu điện não phục vụ cho nghiên cứu thử nghiệm Một số kết bƣớc đầu đạt đƣợc cho thấy khả quan việc phát gai động kinh tự động, loại nhiễu mắt nhiễu tín hiệu EEG Tuy nhiên, phân tích xử lý tín hiệu điện não thực đƣợc đo trực tiếp hệ đo EEG dịng E-series cịn nhiều vấn đề thực tế xử lý tín hiệu điện não địi hỏi cần đƣợc giải Sau số vấn đề mà luận văn đề cập đến: Để áp dụng thuật tốn xử lý tín hiệu cần chuyển đổi liệu từ định dạng máy đo sang dạng *.MAT để xử lý MATLAB, phục vụ cho nghiên cứu xử lý tiếp theo; 10 Cần loại nhiễu thiết bị điện tử gây nhƣ nhiễu 50Hz, nhiễu tần số cao tiếp xúc điện cực, v.v.; Cần nghiên cứu đặc điểm nhiễu mắt, nhiễu để có phƣơng pháp phù hợp loại bỏ chúng Trong thực tế, cần xử lý tín hiệu EEG đa kênh có chiều dài lớn, địi hỏi xử lý loại nhiễu đoạn tín hiệu ghép chúng lại Matlab hạn chế thiết kế giao diện, hạn chế việc quản lý liệu bệnh nhân, không phù hợp pháp triển phần mềm Cần sử dụng ngơn ngữ C# để lập trình quản lý liệu có đƣợc giao diện thân thiện, đồng thời kết hợp với thƣ viện Matlab để xử lý tính tốn Mục tiêu luận văn xây dựng phần mềm có chức cần thiết hỗ trợ bác sĩ việc chẩn đoán bệnh động kinh Phần mềm sử dụng ngôn ngữ C# (mạnh thiết kế giao diện) kết hợp với thƣ viện Matlab (để xử lý tính tốn) nên giải vấn đề toán học phức tạp mà bác sĩ sử dụng trực tiếp dễ thao tác Luận văn tập trung phân tích xử lý vấn đề trên, nhằm phát triển ứng dụng thuật toán loại nhiễu mắt nhiễu tín hiệu điện não chứa tín hiệu gai động kinh cách hữu hiệu Luận văn đƣợc trình bày theo cấu trúc nhƣ sau:  Chƣơng 1: Trình bày tổng quan điện não đồ, loại nhiễu nhƣ nhiễu mắt, nhiễu  Chƣơng 2: Đánh giá số phƣơng pháp loại nhiễu tín hiệu điện não đồ, đề phƣơng pháp sử dụng thuật toán tách nguồn mù SOBI kết hợp kĩ thuật nhận dạng nguồn nhiễu  Chƣơng 3: Xây dựng hệ thống  Kết luận đặt số vấn đề cần nghiên cứu tiếp 49 Hình 3-11: Bảng liệu bệnh nhân 50 KẾT LUẬN Luận văn nghiên cứu đặc tính tín hiệu điện não đặc điểm nhiễu mắt, nhiễu từ đề xuất phƣơng pháp sử dụng thuật toán SOBI kết hợp kĩ thuật nhận dạng nguồn nhiễu để loại bỏ nhiễu mắt, nhiễu khỏi tín hiệu điện não Nhóm nghiên cứu thực hiệu đo điện não đồ 50 bệnh nhân có tiền sử mắc bệnh động kinh khác Phân loại chuyển đổi đoạn liệu điện não nền, có gai động kinh, có nhiễu mắt, nhiễu từ định dạng máy đo *.EEG sang định dạng *.MAT để sử dụng làm liệu cho nghiên cứu Dữ liệu sau chuyển đổi sang định dạng *.MAT có nhiều thành phần nhiễu linh kiện điện tử gây nhƣ: nhiễu 50Hz, nhiễu điện chiều, nhiễu điện cực v.v nghiên cứu sử dụng lọc thơng cao (loại tín hiệu có tần số 70Hz), lọc chặn dải để loại tín hiệu điện lƣới 50Hz Các kết cho thấy tín hiệu sau lọc giống với tín hiệu EEG ban đầu Học viên cài đặt thử nghiệm phƣơng pháp đề xuất liệu mô liệu thực, thực so sánh đánh giá với phƣơng pháp có Với việc sử dụng thuật toán để loại nhiễu mắt, nhiễu tín hiệu EEG có gai động kinh kết cho thấy nhiễu mắt đƣợc loại bỏ tốt mà khơng làm ảnh hƣởng đến tín hiệu gai động kinh Tuy nhiên hạn chế phƣơng pháp khối lƣợng xử lý tính tốn cịn cao (do phải tính FFT cho tín hiệu tồn liệu), nên tốc độ xử lý chậm, cần có cải tiến (nhƣ phát nguồn nhiễu mà không cần tính FFT hay thực thuật tốn với đoạn liệu đƣợc xác định trƣớc có nhiễu) Học viên xây dựng thành công hệ thống phân tích thơng tin điện não đồ, bƣớc đầu góp phần hỗ trợ bác sĩ chuyên khoa thần kinh chẩn đoán bệnh động kinh, hạn chế việc chẩn đoán nhầm Các chức hệ thống bao gồm: + Giao diện ngƣời sử dụng đơn giản, dễ thao tác + Chức lọc tín hiệu điện não thơ (theo loại lọc: thông thấp, thông cao, triệt dải) + Các chức loại nhiễu mắt, nhiễu từ tín hiệu điện não + Các chức đọc tín hiệu hiển thị kết Những nghiên cứu tiếp tục từ kết luận văn đƣợc đầu tƣ, cải tiến ứng dụng vào thực tiễn Trong q trình làm luận văn, học viên có công bố hội nghị quốc tế Advanced Technologies for Communications (ATC-2013) 51 đăng ký Hội thảo quốc gia 2014 Điện tử, Truyền thông Công nghệ thông tin (REV-ECIT2014): N T Anh Dao, Tran Duc Nghia, Nguyen Thi Hao, Tran Duc Tan, and Nguyen Linh Trung, “An Effective Procedure for Reducing EOG and EMG Artifacts from EEG Signals”, in The International Conference on Advanced Technologies for Communications 2013, Ho Chi Minh City, Viet Nam, Oct 2013, vol 1, pp 328 - 332 Trần Đức Nghĩa, Hoàng Quang Khải, Nguyễn Hùng Phong, Trần Đức Tân, Nguyễn Linh Trung, “Nghiên cứu phát triển phần mềm loại nhiễu phục vụ chẩn đoán điện não đồ”, Hội thảo quốc gia 2014 Điện tử, Truyền thông Cơng nghệ thơng tin (REV-ECIT2014), Nha Trang, Khánh Hịa, Việt Nam, tháng 9/2014 (Submitted) 52 TÀI LIỆU THAM KHẢO [1] Anderer P, Roberts S, Schlogl A, Gruber G, Klosch G, Herrmann W, Rappelsberger P, Filz O, Barbanoj MJ, Dorffner G, Saletu B Artifact processing in computerized analysis of sleep EEG – a review Neuropsychobiology 1999;40:150-157 [2] A Belouchrani, et al., “A Blind Source Separation Technique using Second Order Statistics,” IEEE Trans Signal Processing, Vol 45, No 2, Feb 1997, pp 434– 444 [3] Barlow JS Artifact processing (rejection and minimization) in EEG data processing Handbook of electroencephalography and clinical neurophysiology 1986; 2: 15–62 [4] Bayliss JD, Ballard DH Recognizing Evoked Potentials in a Virtual Environment In: Proc Advances in Neural Information Processing Systems 2000; vol.12 [5] Bayliss JD, Ballard DH A Virtual Reality Testbed for Brain-Computer Interface Research IEEE Transactions on Rehabilitation Engineering 2000b; 8:188-190 [6] Bayliss JD, Ballard DH Single Trial P300 Recognition in a Virtual Environment In: Proc.CIMA'99 (Soft Computing in Biomedicine).1999 [7] Choi S, Cichocki A, Park HM, Lee SY Blind Source Separation and Independent Component Analysis: A Review Neural Information ProcessingLetters and Review 2005; 6:1–57 [8] Croft RJ, Barry RJ Removal of ocular artifact from the EEG: a review Neurophysiol Clin 2000; 30:5-19 [9] N T Anh Dao, Tran Duc Nghia, Nguyen Thi Hao, Tran Duc Tan, and Nguyen Linh Trung, “An Effective Procedure for Reducing EOG and EMG Artifacts from EEG Signals”, in The International Conference on Advanced Technologies for Communications 2013, Ho Chi Minh City, Viet Nam, Oct 2013, vol 1, pp 328 332 [10] Donald L Schomer, F H Lopes da Silva, 2011, Niedermeyer's Electroencephalography: Basic Principles, Clinical Applications, and Related Fields, Lippincott Williams & Wilkins [11] Fisch BJ (2000) Fisch and Spehlmann's Eeg Primer: Basic Principles of Digital and Analog Eeg Elsevier Publishing Company [12] Gratton G Dealing with artifacts: The EOG contamination of the event-reJated brain potential Behavior Research Methods, Instruments, & Computers 1998; 30: 44-53 53 [13] Jasper, H H (1958) The ten-twenty electrode placement system of the International Federation Electroencephalography and Clinical Neurophysiology, 10, 371-375 [14] Jung TP, Humphries C, Lee TW, Makeig S, McKeown MJ, Iragui V, Sejnowski TJ Extended ICA removes artifacts from electroencephalographic recordings Advances in Neural Information Processing Systems 1998; 10:894-900 [15] Jung TP, Makeig S, Westerfield M, Townsend J, Courchesne E, Sejnowski TJ Analysis and visualization of single-trial event-related potentials Hum Brain Mapp 2001; 14:166-185 [16] Jung TP, Makeig S, Westerfield M, Townsend J, Courchesne E, Sejnowski TJ Removal of eye activity artifacts from visual event-related potentials in normal and clinical subjects Clin Neurophysiol 2000; 111:1745-1758 [17] Leif Sornmo, Pablo Laguna “Bioelectrical Signal Processing in Cardiac and Neurological Applications”, Academic Press, 2005 [18] McFarland DJ, McCane LM, David SV, Wolpaw JR “Spatial filter selection for EEG-based ommunication Electroencephalogr” Clin Neurophysiol 1997; 103:386-394 [19] Moore J, Zouridakis G Biomedical Technology and Devices Handbook CRC Press, 2004 [20] Niedermeyer E, Silva FLd Electroencephalography: Basic Principles, Clinical Applications, and Related Fields Lippincott Williams & Wilkins, 2004 [21] Phan Le, 2004, Matlab C# Book, LePhan Publishing, ISBN 0-9725794-4-3 [22] Puthusserypady S1, Ratnarajah T, Jue R, Ratnarajah T., “Robust estimation of HDR in fMRI using H(infinity) filters” IEEE Trans Biomed Eng 2010 May;57(5):1133-42 doi: 10.1109/TBME.2009.2039569 Epub 2010 Feb 17 [23] Seungjin Choi, Andrzej Cichocki, Hyung-Min Park and Soo- Young Lee, “Blind Source Separation and Independent Component Analysis” vol 6, No.1, January 2005 [24] S Puthusserypady, T Ratnarajah, “Robust adaptive techniques for minimization of EOG artefacts from EEG signals” 2006, Vol 86.9, pp 2351-2363 [25] Vigario R, Sarela J, Jousmiki V, Hamalainen M, Oja E Independent component approach to the analysis of EEG and MEG recordings Biomedical Engineering, IEEE Transactions on 2000; 47:589-593 [26] Wim De Clercq*, Anneleen Vergult, Bart Vanrumste, Wim Van Paesschen, and Sabine Van Huffel, “Cannonical Correlattion Analysis Applied to Remove Muscle Artifacts Froms the Electroencephalogram” 54 [27] Ziling Zhou and Sadasivan Decomposition, “EOG artifact minimization using oblique projection corrected eigenvector decomposition” s30th Annual International IEEE EMBS Conference Vancouver, British Columbia, Canada, August 20-24, 2008 55 PHỤ LỤC Code lọc nhiễu C# sử dụng thƣ viện Matlab DLL private void btnRun_Click(object sender, EventArgs e) { string loc = cbbLoc.SelectedItem.ToString(); if(loc == "CreatRawData") { btnRun.Text = "Running"; btnRun.Refresh(); //var solver1 = SolverClass.solver(); //var addvalues1 = solver1.addvalues(new Dim(Convert.ToInt32(textBox1.Text))); // addvalues1.SavetoCSV(); //MessageBox.Show("Running "); var zz = Directory.CreateDirectory("C:\\EEGData\\"); //string linkeeg = zz + "EEGDataRaw.mat"; //if (File.Exists(linkeeg)) // File.Delete(linkeeg); string linkfile = txtReference.Text; MWCharArray tenfile = null; tenfile = new MWCharArray(linkfile); //MWNumericArray duration = Convert.ToInt32(txtStudyLenght.Text); ReadProFusion test = new ReadProFusion(); test.ReadProFusionEEG((MWCharArray)tenfile); //tao file EEGDataRaw thu muc C:\EEGData\EEGDataRaw string path = AppDomain.CurrentDomain.BaseDirectory; var forderDataRaw = Directory.CreateDirectory(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGDataRaw\\"); //xoa file cu string duongdanfile = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGDataRaw\\EEGData.mat"; if (File.Exists(duongdanfile)) File.Delete(duongdanfile); string oldPath = "C:\\EEGData\\EEGDataRaw.mat"; string newPath = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGDataRaw\\"; string newFileName = "EEGData"; FileInfo f = new FileInfo(oldPath); f.CopyTo(String.Format("{0}{1}{2}", newPath, newFileName, f.Extension)); btnRun.Text = "Done"; btnRun.Refresh(); // MessageBox.Show("done"); } if (loc == "Prefilter") { btnRun.Text = "Running"; 56 btnRun.Refresh(); string path = AppDomain.CurrentDomain.BaseDirectory; string linkfile1 = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGDataRaw\\EEGData"; MWCharArray tenfile1 = null; tenfile1 = new MWCharArray(linkfile1); var forderFilter = Directory.CreateDirectory(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\PreFilter\\"); string dauraFilter = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\PreFilter\\EEGData"; MWCharArray outputlinkFilter = null; outputlinkFilter = new MWCharArray(dauraFilter); filter chayfilter = new filter(); chayfilter.prefilter((MWCharArray)tenfile1, (MWCharArray)outputlinkFilter); btnRun.Text = "Done"; btnRun.Refresh(); } if (loc == "EMG") { btnRun.Text = "Running"; btnRun.Refresh(); string path = AppDomain.CurrentDomain.BaseDirectory; string dauvaoEMG = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\PreFilter\\EEGData"; MWCharArray inputlinkEMG = null; inputlinkEMG = new MWCharArray(dauvaoEMG); var forderEMG = Directory.CreateDirectory(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EMG\\"); string dauraEMG = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EMG\\EEGData"; MWCharArray outputlinkEMG = null; outputlinkEMG = new MWCharArray(dauraEMG); MWNumericArray channel1EMG; MWNumericArray channel2EMG; MWNumericArray channel3EMG; MWNumericArray channel4EMG; MWNumericArray sampleEMG; if (frmConfig.check == 1) { string[] lines = File.ReadAllLines(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EMG\\EMG.txt"); sampleEMG = Convert.ToInt32(lines[lines.Length channel1EMG = Convert.ToInt32(lines[lines.Length channel2EMG = Convert.ToInt32(lines[lines.Length channel3EMG = Convert.ToInt32(lines[lines.Length channel4EMG = Convert.ToInt32(lines[lines.Length MessageBox.Show("Run with text file"); } else { channel1EMG channel2EMG channel3EMG channel4EMG sampleEMG = = 4; = 6; = 8; = 1; 1000; } SOBIEMG EMG = new SOBIEMG(); 5]); - 4]); - 3]); - 2]); - 1]); 57 //MWArray test.ReadProFusionEEG=((MWCharArray)tenfile, (MWNumericArray)duration); EMG.SOBInhieuco((MWCharArray)inputlinkEMG, (MWCharArray)outputlinkEMG, (MWNumericArray)channel1EMG, (MWNumericArray)channel2EMG, (MWNumericArray)channel3EMG, (MWNumericArray)channel4EMG, (MWNumericArray)sampleEMG); btnRun.Text = "Done"; btnRun.Refresh(); } if (loc == "EOG") { btnRun.Text = "Running"; btnRun.Refresh(); string path = AppDomain.CurrentDomain.BaseDirectory; string dauvaoEOG = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\PreFilter\\EEGData"; MWCharArray inputlinkEOG = null; inputlinkEOG = new MWCharArray(dauvaoEOG); var forderEOG = Directory.CreateDirectory(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EOG\\"); string dauraEOG = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EOG\\EEGData"; MWCharArray outputlinkEOG = null; outputlinkEOG = new MWCharArray(dauraEOG); MWNumericArray channel1EOG; MWNumericArray channel2EOG; MWNumericArray channel3EOG; MWNumericArray channel4EOG; MWNumericArray sampleEOG; if (frmConfig.check == 2) { string[] lines = File.ReadAllLines(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EOG\\EOG.txt"); sampleEOG = Convert.ToInt32(lines[lines.Length channel1EOG = Convert.ToInt32(lines[lines.Length channel2EOG = Convert.ToInt32(lines[lines.Length channel3EOG = Convert.ToInt32(lines[lines.Length channel4EOG = Convert.ToInt32(lines[lines.Length MessageBox.Show("Run with text file"); } else { channel1EOG = 1; channel2EOG = 4; channel3EOG = 5; channel4EOG = 11; sampleEOG = 1000; 5]); - 4]); - 3]); - 2]); - 1]); } SOBIEOG EOG = new SOBIEOG(); //MWArray test.ReadProFusionEEG=((MWCharArray)tenfile, (MWNumericArray)duration); EOG.SOBInhieumat((MWCharArray)inputlinkEOG, (MWCharArray)outputlinkEOG, (MWNumericArray)channel1EOG, (MWNumericArray)channel2EOG, (MWNumericArray)channel3EOG, (MWNumericArray)channel4EOG, (MWNumericArray)sampleEOG); btnRun.Text = "Done"; btnRun.Refresh(); } if (loc == "Final") { 58 btnRun.Text = "Running"; btnRun.Refresh(); string path = AppDomain.CurrentDomain.BaseDirectory; string dauvaoFinal = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EMG\\EEGData"; MWCharArray inputlinkFinal = null; inputlinkFinal = new MWCharArray(dauvaoFinal); var forderEOG = Directory.CreateDirectory(path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGFinal\\"); string dauraEOG = path + Convert.ToString(txtStudyID.Text) + "\\EEGData\\EEGFinal\\EEGData"; MWCharArray outputlinkEOG = null; outputlinkEOG = new MWCharArray(dauraEOG); MWNumericArray channel1EOG = 4; MWNumericArray channel2EOG = 6; MWNumericArray channel3EOG = 8; MWNumericArray channel4EOG = 1; MWNumericArray sampleEOG = 1000; SOBIEOG EOG = new SOBIEOG(); //MWArray test.ReadProFusionEEG=((MWCharArray)tenfile, (MWNumericArray)duration); EOG.SOBInhieumat((MWCharArray)inputlinkFinal, (MWCharArray)outputlinkEOG, (MWNumericArray)channel1EOG, (MWNumericArray)channel2EOG, (MWNumericArray)channel3EOG, (MWNumericArray)channel4EOG, (MWNumericArray)sampleEOG); string local = AppDomain.CurrentDomain.BaseDirectory + Convert.ToString(txtStudyID.Text) + "\\EEGData\\"; btnRun.Text = "Done"; btnRun.Refresh(); } } 59 Code thuật toán SOBI viết Matlab % sobi() - Second Order Blind Identification (SOBI) by joint diagonalization of % correlation matrices THIS CODE ASSUMES TEMPORALLY CORRELATED SIGNALS, % and uses correlations across times in performing the signal separation % Thus, estimated time delayed covariance matrices must be nonsingular % for at least some time delays % Usage: % >> winv = sobi(data); % >> [winv,act] = sobi(data,n,p); % Inputs: % data - data matrix of size [m,N] ELSE of size [m,N,t] where % m is the number of sensors, % N is the number of samples, % t is the number of trials (here, correlations avoid epoch boundaries) % n - number of sources {Default: n=m} % p - number of correlation matrices to be diagonalized {Default: min(100, N/3)} % Note that for noisy data, the authors strongly recommend using at least 100 % time delays % % Outputs: % winv - Matrix of size [m,n], an estimate of the *mixing* matrix Its % columns are the component scalp maps NOTE: This is the inverse % of the usual ICA unmixing weight matrix Sphering (prewhitening), % used in the algorithm, is incorporated into winv i.e., % >> icaweights = pinv(winv); icasphere = eye(m); % act - matrix of dimension [n,N] an estimate of the source activities % >> data = winv * act; % [size m,N] [size m,n] [size n,N] % >> act = pinv(winv) * data; % % Authors: A Belouchrani and A Cichocki (papers listed in function source) % % Note: Adapted by Arnaud Delorme and Scott Makeig to process data epochs function [H,S,D]=sobi(X,n,p), [m,N,ntrials]=size(X); if nargin help sobi elseif nargin==1, n=m; % Source detection (hum ) p=min(100,ceil(N/3)); % Number of time delayed correlation matrices to be diagonalized % Authors note: For noisy data, use at least p=100 the time-delayed covariance matrices elseif nargin==2, p=min(100,ceil(N/3)); % Default number of correlation matrices to be diagonalized % Use < 100 delays if necessary for short data epochs end; 60 % % Make the data zero mean % X(:,:)=X(:,:)-kron(mean(X(:,:)')',ones(1,N*ntrials)); % % Pre-whiten the data based directly on SVD % [UU,S,VV]=svd(X(:,:)',0); Q= pinv(S)*VV'; X(:,:)=Q*X(:,:); % % % % % % % % % % % % % % Alternate whitening code Rx=(X*X')/T; if m

Ngày đăng: 05/12/2020, 11:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w