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

Xây dựng hệ thống phân tích thông tin điện não đồ 04

67 27 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

ĐẠ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 1.1 KHÁI QUÁT VỀ ĐIỆN NÃO ĐỒ 1.1.1 Điện não đồ 1.1.2 Các đặc điểm Điện não đồ 1.1.2 Vai trị EEG chẩn đốn bệnh động kinh 1.2 CÁC VẤN ĐỀ VỀ NHIỄU 1.2.1 Nhiễu mắt ( Electroocugram – EOG) 1.2.2 Nhiễu (Electromyogram – EMG) 1.3 GIỚI THIỆU MỘT SỐ PHẦN MỀM XỬ LÝ EEG CHƢƠNG THUẬT TỐ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 TOÁN LOẠI NHIỄU MẮT NHIỄU CƠ ĐÃ CÓ 2.1.1 Loại nhiễu EOG phƣơng pháp lọc thích nghi 2.1.2 Phƣơng pháp tách nguồn mù 2.2 TÁCH NGUỒN MÙ VÀ THUẬT TOÁN SOBI 2.2.1 Phƣơng án đề xuất 2.2.1.1 Kết mô 2.2.1.2 Kết thực nghiệm 2.2.1.3 Đánh giá kết CHƢƠNG HỆ THỐNG PHÂN TÍCH THÔNG TIN ĐIỆN NÃO ĐỒ 3.1 BÀI TOÁN 3.2 DỮ LIỆU MÁY ĐO 3.2.1 Đo liệu 3.2.2 Các kênh liệu 3.2.3 Dữ liệu ổ cứng 3.2.4 Tiền xử lý liệu điện não 3.3 LỰA CHỌN GIẢI PHÁP 3.3.1 Nhiệm vụ 3.3.2 Khó khăn 3.3.3 Lựa chọn giải pháp 3.3.4 Môi trƣờng tảng phát triển 3.4 CHƢƠNG TRÌNH 3.4.1 Mơ hình chức 3.4.2 Giao diện 3.4.3 Cơ sở liệu KẾT LUẬN 50 TÀI LIỆU THAM KHẢO PHỤ LỤC 55 DANH MỤC HÌNH VẼ Hình 1-1: Phân chia thùy vỏ não [17] Hình 1-2: Dạng sóng tín hiệu điện não Hình 1-3: Bản chất pha trộn sóng – Kênh Cz Hình 1-4: Ví dụ gai động kinh Hình 1-5: Phổ nhiễu EOG Hình 1-6: Dạng nhiễu mắt gây nháy mắt [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] 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 đồ Hình 1-10: Phần mềm Profusion Hình 1-11: Phần mềm mã nguồn mở Hình 2-1: Mơ hình lọc thích nghi thông thƣờng Hình 2-2: Phƣơng pháp tối thiểu hóa nguồn nhiễu Hình 2-3: Tín hiệu chƣa có nhiễu mắt Hình 2-4: Tín hiệu nguồn nhiễu mắt mô Hình 2-5: Tín hiệu trộn EEG EOG (SNR = 0,208) Hình 2-6: Tín hiệu lọc sử dụng thuật toán Zhou Hình 2-7: Tín hiệu lọc sử dụng thuật toán TV Hình 2-8: Tín hiệu lọc phƣơng pháp đề xuất Hình 2-9: Tín hiệu trƣớc sau sử dụng thuật tốn đề xuất Hình 2-10: Tín hiệu kênh bị tác động EOG Hình 2-11: Tín hiệu kênh sau lọc Zhou Hình 2-12: Tín hiệu kênh sau lọc thuật toán đề xuất Hình 2-13: Tín hiệu kênh có tác động nhiễu EMG Hình 2-14: Tín hiệu kênh lọc phƣơng pháp đề xuất Hình 3-1: Đo EEG sử dụng hệ thống chuyên dụng Hình 3-2: Vị trí điện cực theo tiêu chuẩn 10-20 [13] Hình 3-3: Dữ liệu bệnh nhân Hình 3-4: Một đoạn liệu điện não đƣợc đo hiển thị Profusion Hình 3-5: Đoạn liệu điện não sau chuyển sang file mathlab Hình 3-6: Tín hiệu điện não sau qua ba lọc Hình 3-7: Cơng cụ tạo Matlab DLL Hình 3-8: Mơ hình hệ thống Hình 3-9: Mơ hình chức Hình 3-10: Giao diện hệ thống Hình 3-11: Bảng liệu bệnh nhân DANH MỤC BẢNG BIỂU Bảng 2-1: Giá trị RRMSE theo SNR sử dụng TV Bảng 2-2: Giá trị RRMSE theo SNR sử dụng Zhou Bảng 2-3: Giá trị RRMSE theo SNR sử dụng SOBI kĩ thuật nhận dạng nguồn Danh sách thuật ngữ viết tắt Ký hiệu T BSS – Blind Signal Se CCA Correlation Ana ECG Electrocardiogra EEG Electroencephal EMG Electromyogram EOG Electrooculogra EMD Empirical Mode EW Exponentially W FFT Fast Fourier Tra IDE Integrated Deve HPF High pass filter LPF Low pass filter LMS Least mean squa RMS Root Mean Squ RRMSE Relative Root M SOBI Second-Order B SNR Signal to Noise 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 đố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 toá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 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 Processing-Letters 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 - 5]); channel1EMG = Convert.ToInt32(lines[lines.Length - 4]); channel2EMG = Convert.ToInt32(lines[lines.Length - 3]); channel3EMG = Convert.ToInt32(lines[lines.Length - 2]); channel4EMG = Convert.ToInt32(lines[lines.Length - 1]); MessageBox.Show("Run with text file"); } else { channel1EMG = 4; channel2EMG = 6; channel3EMG = 8; channel4EMG = 1; sampleEMG = 1000; } SOBIEMG EMG = new SOBIEMG(); 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 - 5]); channel1EOG = Convert.ToInt32(lines[lines.Length - 4]); channel2EOG = Convert.ToInt32(lines[lines.Length - 3]); channel3EOG = Convert.ToInt32(lines[lines.Length - 2]); channel4EOG = Convert.ToInt32(lines[lines.Length - 1]); MessageBox.Show("Run with text file"); } else { channel1EOG = 1; channel2EOG = 4; channel3EOG = 5; channel4EOG = 11; sampleEOG = 1000; } 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 % % % 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 % % % % % 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: 11/11/2020, 22:27

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w