tc galatasaray ¨un˙ivers˙ites˙im¨uhend˙isl˙ik ve teknoloj
Transkript
tc galatasaray ¨un˙ivers˙ites˙im¨uhend˙isl˙ik ve teknoloj
T.C. GALATASARAY ÜNİVERSİTESİ MÜHENDİSLİK VE TEKNOLOJİ FAKÜLTESİ EEG SİNYALLERİ İLE SANAL KLAVYE GERÇEKLENMESİ (REALISATION D’UN CLAVIER VIRTUEL AVEC LES SIGNAUX EEG) BİTİRME ÖDEVİ Ozan ÇAĞLAYAN Bölüm : BİLGİSAYAR MÜHENDİSLİĞİ Danışman : Yrd. Doç. Dr. R. Burak ARSLAN Mayıs 2008 Préface Cette thèse est le dernier travail de mes études de licence au Département de Génie Informatique, Faculté d’Ingénierie et de Technologie, Université Galatasaray. Elle consiste en une réalisation d’une interface cerveau-ordinateur grâce à laquelle il sera possible de construire des mots et des phrases en se concentrant sur un clavier virtuel dessiné par le logiciel écrit. La rédaction de cette thèse a été difficile mais cette période d’écriture m’a permis de construire une bonne connaissance sur les notions essentielles de la génie biomédicale et de comprendre comment les outils informatiques et mathématiques peuvent être utilisés pour augmenter la qualité de la vie humaine du point de vue de la santé. Je tiens à remercier M. Burak ARSLAN pour son support, son aide, sa patience et ses réponses satisfaisantes non seulement pendant ce projet mais pendant mes études de licence. Enfin, je remercie bien sûr mes parents et mes amis qui m’ont toujours encouragé pendant ma vie universitaire. À Istanbul, le 16 Mai 2008 Ozan Çağlayan ii Table des matières Préface ii Résumé vii Özet viii Introduction 1 1 Interfaces cerveau-ordinateur 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Système nerveux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.1 Le cerveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Les neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Imagerie cérébrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Electro-encéphalographie (EEG) . . . . . . . . . . . . . . . . . . . . . 8 1.4.1 Activité rythmique cérébrale . . . . . . . . . . . . . . . . . . . 8 1.4.2 Potentiels reliés à événements . . . . . . . . . . . . . . . . . . 10 1.4.3 Le paradigme d’oddball . . . . . . . . . . . . . . . . . . . . . 11 1.5 Acquisition de l’EEG . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 iii 2 Clavier virtuel 15 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Outils informatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 2.4 2.2.1 Matériels informatiques . . . . . . . . . . . . . . . . . . . . . . 15 2.2.2 Logiciels informatiques . . . . . . . . . . . . . . . . . . . . . . 16 Spécifications de l’expérience . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.1 Le clavier virtuel . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.2 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.3 Observation de l’ERP . . . . . . . . . . . . . . . . . . . . . . 19 Traitement des données . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4.1 Paramètres du jeu de données . . . . . . . . . . . . . . . . . . 20 2.4.2 Analyse des époques . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.3 Algorithmes de classification . . . . . . . . . . . . . . . . . . . 22 Conclusion 24 Bibliographie 25 Appendices 26 iv Table des figures 1.1 Schéma du système nerveux humain . . . . . . . . . . . . . . . . . . . 4 1.2 L’organisation du cerveau . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Les phases d’un potentiel d’action . . . . . . . . . . . . . . . . . . . . 6 1.4 Le premier électroencéphalogramme humain . . . . . . . . . . . . . . 8 1.5 Les tracés des rythmes EEG . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 Potentiel relié à événement . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7 L’EEG enregistré avec une seule électrode . . . . . . . . . . . . . . . 12 1.8 Les ERP produits par les stimuli apres le moyennage . . . . . . . . . 12 1.9 Le système 10-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1 Le kit de recherche de BIOPAC . . . . . . . . . . . . . . . . . . . . . 16 2.2 Deux claviers virtuels différents . . . . . . . . . . . . . . . . . . . . . 17 2.3 L’énumeration des stimuli . . . . . . . . . . . . . . . . . . . . . . . . 18 2.4 Example d’intensification déterminant un symbole . . . . . . . . . . . 18 2.5 Extraction d’une époque . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Comparaison des amplitudes P300 . . . . . . . . . . . . . . . . . . . . 22 v Liste des tableaux 1.1 Les fonctions des aires corticales . . . . . . . . . . . . . . . . . . . . . 5 1.2 La classification des rythmes EEG . . . . . . . . . . . . . . . . . . . . 8 2.1 Les mots du jeu de données . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Les résultats de l’algorithme oneshot . . . . . . . . . . . . . . . . . . 22 2.3 Les résultats de l’algorithme d’aire . . . . . . . . . . . . . . . . . . . 23 vi Résumé Même si les secrets du cerveau humain ne sont pas complètement révélés par les scientifiques, ce qui est compris jusqu’à maintenant forme une connaissance solide qui peut être utilisée pour assister à la vie humain du point de vue de la santé et de l’amusement. Une des connaissances intéressantes sur le fonctionnement du cerveau humain est la caractéristique des réponses qu’il produit après la présentation de certains stimuli. Des symboles infréquents présentés dans une séquence de symboles fréquents évoquent une réponse de caractéristique différente qui peut être utilisée comme un moyen de communication alternatif pour les personnes handicapées. Ce paradigme qui profite des stimuli infréquents présents dans une séquence de stimuli fréquents, peut être facilement exploité par une interface cerveau-ordinateur qui permet à l’utilisateur de construire des mots et des phrases en se concentrant sur un clavier virtuel dessiné par un logiciel. Ce projet vise à réaliser l’interface cerveau-ordinateur citée ci-dessus en écrivant un logiciel qui va visualiser un clavier virtuel et analyser l’activité cérébrale de l’utilisateur pour comprendre quel symbole a été choisi. L’acquisition de l’activité cérébrale se fait via un appareil appelé l’électroencéphalographe qui peut être facilement connecté à un ordinateur. vii Özet İnsan beyninin işleyişine dair bilim adamlarının halen açıklığa kavuşturamadığı noktalar olsa da, bugüne kadar keşfedilmiş ve anlaşılmış kısımlar bile mühendislerin engelli insanların yaşam kalitelerini arttırmak için gerekli araçları üretebilmesine yetmektedir. Bu araçlara örnek olarak hiçbir uzvunu kullanamayan bir hastanın düşünce gücüyle sürebileceği tekerlekli bir sandalyeyi ya da konuşma yetisini kaybetmiş bir hastanın görsel bazı uyaranlar vasıtasıyla seçtiği harflerle cümle kurabilmesini sağlayan bir beyin-bilgisayar arayüzünü verebiliriz. Beyin-bilgisayar arayüzlerinin gelişimi, işlem gücü yüksek bilgisayarların yaygınlaşmasıyla ivme kazansa da bu tasarımların çoğunluğu bilimsel araştırma niteliğinde olup günlük hayatta kullanılabilecek performansa henüz erişememiştir. Bu çalışmada, dış dünya ile iletişim olanakları kısıtlanmış engellilerin yazı yazmak için kullanabilecekleri bir beyin-bilgisayar arayüzünün geliştirilmesi için gerekli altyapı sağlanacak ve ilgili sanal klavye uygulaması geliştirilecektir. Bilindiği gibi insan beyninde çok sayıda sinir hücresi bulunmaktadır. İnsan beyninde 1010 ila 1013 adet sinir hücresi bulunduğu tahmin edilmektedir. Sinir hücreleri beynin bilginin iletiminden sorumlu olduğu için beynin işleyişinde kilit rol oynamaktadır. Sinir hücreleri arasındaki iletim, aksiyon potansiyeli adı verilen elektrik potansiyeller sayesinde gerçekleşir. Aksiyon potansiyeli, sinir hücresinin içi ve dışı arasındaki potansiyel farkından kaynaklanan, hücrenin dinlenme potansiyelindeki sert ve ani değişimle ifade edilir. Sinir hücreleri birbirleriyle aralarında bulunan ve sinaps adı verilen hücresel boşluklar vasıtasıyla haberleşirler. Yukarıda bahsi geçen aksiyon potansiyellerinin oluşması sonucu sinir hücresi bu boşluğa özel bir madde bırakır ve bu madde sinapsı geçerek diğer hücrenin alıcılarına yapışır. viii Sinir hücrelerinin yoğun olarak bulunduğu küçük alanlarda üstüste binen bu elektriksel aktiviteler kafa derisine bağlanan elektrodlar aracılığıyla izlenebilmekte ve kaydedilebilmektedir. İnsan beyninin elektriksel aktivitesinin izlenmesini sağlayan cihaza elektroensefalograf(EEG) adı verilir. EEG cihazı klinik uygulamalarda nörologlar tarafından sıkça kullanılmaktadır. Son zamanlarda bu cihazların sayısal olanları da üretilmiş olup izlenen sinyaller kolaylıkla bilgisayara aktarılabilmekte ve saklanabilmektedir. Uluslararası bir standart olan 10-20 sistemiyle belirlenen mesafelere göre kafa derisine yapıştırılan elektrodlarla yapılan kayıtlar, beynin anlık aktivitesini yansıtmaktadır. Bu anlık aktivitenin deneyimli bir EEG uzmanı tarafından yorumlanmasıyla kişinin uyanıklılık durumu, uyaranlara verdiği tepki gibi bazı önemli parametrelere ulaşılabilir. Bu çalışmada beynin anlık aktivitesinden ziyade uyarılmış potansiyel adı verilen farklı bir elektriksel aktiviteden faydalanılacaktır. Uyarılmış potansiyeller, beynin dış uyaranlara verdiği tepki sonucunda oluşan gerilim değişiklikleridir. Bu potansiyellerin iki karakteristik özelliği vardır : Gecikme ve değişimin yönü. Gecikme, dış uyaranın oluştuğu andan itibaren, uyarılmış potansiyelin üretilmesine kadar geçen süreyi temsil etmektedir. Bir uyarılmış potansiyel bileşeni, genliği 0’dan küçükse negatif, 0’dan büyükse pozitif olarak adlandırılır. Bu iki özellik, uyarılmış potansiyel bileşeninin adlandırılmasında kullanılır. Örneğin N400, negatif ve uyaranın oluşmasından 400 ms sonra üretilen bir bileşendir. Bu çalışmadan kullanılacak olan P300 cevabı ise pozitif ve 300 ms gecikmeye sahip bir uyarılmış potansiyel bileşenidir. P300 cevabı beyin-bilgisayar arayüzü tasarımlarında sıkça kullanılan bir uyarılmış potansiyel bileşenidir. P300 bileşeninin oluşmasına yol açan ve bu çalışmada kullanılacak olan deneysel düzeneğe oddball paradigması adı verilir. Bu paradigmaya göre, bir dizi uyaran arasında diğerlerine göre daha az sayıda olan uyaranlar P300 bileşeninin üretilmesine yol açmaktadır. Örneğin deneğe belirli aralıklarla, rastgele sırada X ve O sembolleri gösterilsin ve uyaran dizisinin 80%’ini X, 20%’sini ise O sembolü oluştursun. Bu durumda sıkça gözüken X sembolleri arasında nadiren gözükecek olan O sembolleri, X sembollerinin ürettiği P300 cevabına göre daha kaliteli ve güçlü bir P300 cevabı üretecektir. Beynin anlık aktivitesinin oldukça rassal ve karmaşık olduğu düşünüldüğünde, üretilen uyarılmış potansiyellerin bu gürültülü sinyallerin arasından ayrıştırılması oldukça zordur. ix Bu sebepten dolayı her deney, belirli bir sayıda tekrarlanarak sinyallerin ortalaması alınır. Gürültü diye nitelediğimiz rassal genlikler bu ortalama alma işlemi sonucunda birbirini söndürecek ve geriye sadece belirli uyaranlar karşısında oluşmuş olan uyarılmış potansiyeller kalacaktır. Bu çalışmada gerçeklenecek sanal klavye uygulamasının çalışma mantığı ise tamamen oddball paradigmasının bir sonucudur. Ekranda 6x6 matris şeklinde düzenlenmiş ve alfanümerik karakterlerden oluşan bir klavye bulunmaktadır. Klavyedeki harfler gri renkle boyanmıştır. Önce satırlar sonra sütunlar olmak üzere bu 12 satır/sütun rastgele yanıp sönmektedir(renkleri griden beyaza değişmektedir). Yazılmak istenen harfe odaklanan denek, her alt deneyde, seçtiği harfin 2 defa yandığını görecektir yani seçtiği harf genellikle gri kalacak ama 2 defa beyaza dönecektir. Bunun sonucunda eğer denek seçtiği harfe düzgün bir şekilde odaklanırsa, bu ”nadir” uyaranlar P300 cevabının oluşmasına neden olacaktır. Elde edilen sinyalin ortalaması alınacağı için, tek bir harfin seçilmesi için bile 12 yanıp sönmeyi içeren bir alt deney, belirli sayıda tekrarlanacaktır. Genellikle deneğin seçeceği harfe düzgün odaklanabilmesini sağlamak için, seçtiği harfin kaç defa yanıp söneceğini sayması söylenir. Geliştirilecek olan sanal klavye uygulaması MATLAB ’da yazılacaktır. MATLAB, teknik hesaplamalar ve matematiksel problemlerin çözüm ve analizi için tasarlanmış bir yazılım geliştirme aracıdır. MATrix LABoratory kelimesinin kısaltması olan MATLAB ’da, temel veri yapısı matrislerdir. Özellikle mühendislik alanındaki sistemlerin analizinde kullanılan MATLAB, görüntü işleme, yapay sinir ağlarının modellenmesi, sayısal işaret işleme, optimizasyon, veri toplama, filtre tasarımı gibi önemli alanlarda çok yetenekli araçlara ve kolaylıklara sahiptir. EEG sinyallerinin alınması için BIOPAC tarafından üretilmiş olan BSL Basic System eğitim seti kullanılacaktır. USB arabirimi üzerinden çalışan bu veri toplama ünitesi ve EEG aletiyle MATLAB üzerinden iletişime geçilmesini sağlayan BHAPI adında bir uygulama programlama arayüzü(API, Application Programming Interface) mevcut olup, elde edilmekte olan EEG sinyalleri gerçek zamanlı olarak MATLAB ’a aktarılabilmektedir. Sanal klayvenin temsili ve satır/sütun’ların yakıp söndürülmesinde ise oldukça başarılı bir MATLAB alet kutusu olan Psychophysics Toolbox kullanılacaktır. Bu alet kutusunun özelliği uyaranları oldukça hassas(mikrosaniye mertebesinde) bir zamanlamayla görüntüleyebilmesi ve görüntülenme zamanlarını programcıya sunmasıdır. x Bu sayede her rassal yakıp söndürme işleminin tam olarak ne zaman başladığı tutularak, aynı zamanda toplanmakta olan EEG verisiyle senkronize bir biçimde çalışılabilmektedir. Güncel çalışmalarda hangi harfin seçilmiş olduğunu tek deneyde belirlemeye çalışan algoritmalar denenmeye başlanmıştır. Ancak kişiden kişiye hatta kişinin kendi içinde elektrofizyolojik özellikler sıkça değişiklik gösterebildiği için bu yöntemler algoritmanın önceden yapılan deneylerle eğitilmesini gerektirmektedir. Her ne kadar birden fazla alt deney gerçekleştirilmesi, dakikada yazılabilecek harf sayısını düşürse de, pratik bir uygulamanın kolayca gerçekleştirilebilmesi için bu çalışmada tercih edilmiş ve makul sonuçlar elde edilmiştir. xi Introduction Les gens qui souffrent des paralysies sévères causées par des maladies comme la sclérose latérale amyotrophique(SLA), le locked-in syndrome(LIS), les dystrophies musculaires et les blessures de la moelle épinière, ont souvent des gros problèmes de communication avec le monde extérieur. Grâce aux recherches multidisciplinaires, les patients dont les capacités de communication ont été sérieusement affaiblies, possèdent la possibilité de restaurer leurs facultés perdues en utilisant les interfaces neuronales appelées plus souvent interfaces cerveau-ordinateur(ICO). Une ICO est un système composé d’un module d’acquisition ayant pour but d’enregistrer les signaux éléctrophysiologiques du cerveau et d’un ordinateur dédié à l’interprétation de ces signaux pour interagir avec l’utilisateur. Matthew Nagle, patient tetraplégique1 , a été un des premiers volontaires à essayer une neuroprothèse2 appelée BrainGate. Attaché à des ordinateurs, Nagle a pu déplacer un curseur pour accomplir des tâches différentes comme ouvrir ses courriers éléctroniques et éteindre la télévision [1]. A part leur importance dans les domaines médicaux, les ICO sont très populaires dans la domaine de la réalité virtuelle. Récemment, la compagnie américaine Emotiv a présenté son dernier produit Epoc qui est une casque dédiée à la détection des pensées et des sentiments de son utilisateur pendant un jeu vidéo. 1. Quelqu’un qui souffre de la tetraplégie. La tetraplégie est la paralysie des quatre membres causée généralement par une lésion de la moelle épinière. 2. Une neuroprothèse est une interface cerveau-ordinateur implantée dans le cerveau. 2 L’objectif de cette thèse est de développer une ICO qui va permettre à l’utilisateur de construire des phrases en se concentrant sur un écran qui visualise un clavier composé des caractères alphanumériques. L’acquisition et la discrétisation en temps réel des signaux éléctrophysiologiques du cerveau se fera grâce à une carte d’acquisition de données connectée à un groupe d’électrodes attachées au cuir chevelu de l’utilisateur. Ces signaux traités et interprétés par le fameux logiciel scientifique MATLAB dévéloppé par MathWorks, seront utilisés pour déterminer le caractère choisi par l’utilisateur. La partie visuelle sera programmé avec une boı̂te d’outils spéciale de MATLAB appelée Psychophysics Toolbox qui est fréquemment utilisée dans les applications psychophysiques pour représenter des stimuli visuels avec un timing bien précis. Pour atteindre cet objectif, le travail se divise en deux chapitres organisés de la façon ci-dessous : – Le premier chapitre introduit les notions essentiels du cerveau en bien précisant les différents signaux éléctrophysiologiques utilisés dans la conception d’une ICO et les technologies pour les enregistrer, – Le deuxième chapitre introduit et détaille le paradigme de ce travail et explique les composants principaux du logiciel et du matériel. L’acquisition, le traitement et l’interprétation des signaux sera traitée en parallèle avec la conception de l’interface graphique qui constitue le clavier virtuel. Chapitre 1 Interfaces cerveau-ordinateur 1.1 Introduction La conception d’une ICO nécessite une connaissance de base du cerveau humain et des signaux éléctrophysiologiques qu’il produit pendant son activité. Ce chapitre a donc pour but de fournir cette connaissance de base en décrivant le fonctionnement du cerveau humain, la classification des signaux éléctrophysiologiques générés par le cerveau humain, l’intérêt de ces signaux dans les ICO et les méthodes et les conventions utilisées pendant l’acquisition de ces signaux. 1.2 Système nerveux Le système nerveux (Figure 1.1) est le centre de décision et de communication du corps humain. Le système nerveux est divisé en deux sous systèmes : Le système nerveux central(SNC) et le système nerveux périphérique(SNP). Le SNC est composé du cerveau et de son prolongement naturel, la moelle épinière, qui traverse la colonne vertébrale. La colonne vertébrale, avec le crâne, constitue une véritable armure pour le système nerveux central. Le SNP est formé des nerfs capables de transmettre des informations du corps vers le cerveau (nerfs sensitifs) et du cerveau vers les effecteurs (nerfs moteurs). La moelle épinière, constitué d’un faisceau de nerfs, est semblable à une autoroute qui circule ces informations de et vers le cerveau. 4 Figure 1.1 – Schéma du système nerveux humain : Le SNC est représenté par le rouge tandis que le SNP par le bleu. 1.2.1 Le cerveau Le cerveau est l’organe central qui contrôle le système nerveux. Le cerveau peut être divisé en trois parties principales : Le cortex cérébral, le cervelet et le tronc cérébral. Le cortex cérébral est la couche externe du cerveau résponsable du traitement de l’information. Le cortex cérébral est divisé en deux hémisphères connectés par une structure appelée corpus callosum. Chaque hémisphère est constitué de quatre lobes : Le lobe frontal, le lobe occipital, le lobe pariétal et le lobe temporal(Figure 1.2(a)). Chaque lobe se partage encore en plusieurs aires(Figure 1.2(b)) résponsables du traitement des données différentes. 5 (a) L’organisation des lobes (b) L’organisation des aires Figure 1.2 – L’organisation du cerveau Aire Aire prémotrice Aire motrice Fonction Coordonne les mouvements complexes Transmets des instructions aux muscles pour initialiser les mouvements volontaires Aire somatosensorielle Reçoit des informations provenant des récepteurs de la peau Aire de Wernicke Interprète les informations tactiles Aire visuelle Détecte les différentes parties d’une scène visuelle Aire auditive Distingue les qualités sonores comme le volume et la tonalité Aire de Broca Représente le centre moteur de langage Table 1.1 – Les fonctions des aires corticales [2] 1.2.2 Les neurones Les neurones sont des cellules principales du système nerveux qui traitent et transmettent l’information. Le nombre de neurones qui se trouvent dans le cerveau varie d’une espèce à une autre mais les estimations pour le cerveau humain sont entre 1010 et 1013 [3]. 6 La communication entre les neurones se fait grâce à des potentiels électriques appelés plus précisement le potentiel d’action. Le potentiel d’action(Figure 1.3) est la variation brutale et rapide du potentiel de repos d’une cellule causée par la différence de potentiel entre l’extérieur et l’intérieur de cette cellule. Le potentiel de repos d’une neurone varie entre -60 mV et -70 mV. Figure 1.3 – Les phases d’un potentiel d’action Les potentiels d’action donnent naissance à la libération d’une substance spéciale neurotransmetteur. Cette substance traverse la synapse, l’espace qui se trouve entre les neurones, et se colle aux récepteurs d’un autre neurone. Ces chaı̂nes d’événements produisent l’activité électrique du cerveau observable par les différentes techniques d’enregistrement. 7 1.3 Imagerie cérébrale L’imagerie cérébrale définit l’ensemble des techniques issues de l’imagerie médicale permettant l’observation du cerveau, en particulier pendant une tâche cognitive. Les techniques plutôt intéressantes dans le contexte des ICO sont la magnétoencéphalographie(MEG), l’électro-encéphalographie(EEG), l’électrocorticographie(EcoG) et l’enregistrement unitaire d’un neurone avec des électrodes implantées. EEG C’est la mesure de l’activité électrique du cerveau par des électrodes placées sur le cuir chevelu. C’est la technique souvent utilisée dans la conception des ICO parce qu’elle a une résolution temporelle acceptable et elle est non-invasive. EcoG C’est une technique similaire à EEG qui mesure l’activité électrique à partir des électrodes implantées sous la surface du crâne, directement au niveau du cortex cérébral. C’est une technique partiellement invasive qui fournit une meilleure résolution spatiale et un meilleur rapport signal sur bruit(SNR, du terme anglais signal-to-noise ratio) que l’EEG. MEG Cette technique est utilisée pour mesurer des champs magnétiques induits par l’activité électrique du cerveau par l’intermédiaire des appareils extrêmement sensibles comme le Superconducting Quantum Interference Device(SQUID). MEG fournit une bonne résolution spatio-temporelle mais nécessite l’utilisation d’une chambre à blindage magnétique. La section suivante discute en détail les principes de l’EEG qui va être utilisée dans ce travail. 8 1.4 Electro-encéphalographie (EEG) L’EEG est la mesure de l’activité électrique du cerveau par des électrodes placées sur le cuir chevelu. Le signal électrique à la base de l’EEG résulte de la sommation des potentiels d’actions post-synaptiques issus d’un grand nombre de neurones. Le psychiatre allemand Hans Berger a été le premier à prouver l’existence des potentiels électriques dans le cerveau humain en utilisant un amplificateur appelé un électroencéphalographe(EEG). Il a enregistré le premier électroencéphalogramme(EEG) humain (Figure 1.4) en 1924. Figure 1.4 – Le premier électroencéphalogramme(EEG) humain enregistré en 1924 1.4.1 Activité rythmique cérébrale L’activité électrique quotidienne de l’homme est composée des oscillations multiples ayant des caractéristiques différentes dépendant de l’état du sujet(éveillé ou en sommeil). Il est possible de voir ces activités électriques cérébrales rythmiques sur un tracé EEG typique. Les rythmes EEG sont classés selon leur fréquence(Table 1.2). L’amplitude de ces signaux est environ 100µV quand mesurée sur le cuir chevelu et 1-2mV quand mesurée sur la surface du cerveau [4]. Rythme Delta (δ) Theta (θ) Alpha (α) Beta (β) Gamma (γ) Fréquence(Hz) < 3.5 4 - 7.5 8 - 13 14 - 30 > 30 Table 1.2 – La classification des rythmes EEG [5] 9 Rythme delta Les ondes EEG jusqu’à 3.5 Hz constituent le rythme delta. Le rythme delta chez les adultes est seulement observable pendant le sommeil profond et donc n’est pas intéressant dans la réalisation des ICO [6]. Rythme theta Le rythme theta à fréquence entre 4 et 7.5 Hz, joue un rôle important dans l’enfance et aussi dans les états de somnolence1 , et de sommeil [5]. Rythme alpha Rythme à fréquence 8-13 Hz qui se produit pendant l’éveil sur les régions postérieures de la tête, généralement à plus forte tension sur les zones occipitales. L’amplitude étant variable, est souvent inférieure à 50µV chez les adultes. Le rythme alpha est mieux observé quand la personne éveillée ferme les yeux et se détend. Il est bloqué ou attenué par l’attention, en particulier visuelle, et par l’effort mental [5]. Rythme beta L’activité rythmique beta est souvent rencontrée sur les zones frontales et centrales et généralement ne dépasse pas 35 Hz. Le rythme beta central est relié au rythme mu et peut être bloqué par une activité motrice ou une stimulation tactile [5]. Rythme mu Ayant une fréquence et une amplitude similaire au rythme alpha, le rythme mu est physiologiquement différent du rythme alpha. Mu désigne ”Moteur” et le rythme mu est fortement relié au fonctionnement de l’aire motrice et aussi de l’aire somatosensorielle. Le fait que les pensées sur la réalisation des mouvements et la préparation des mouvements peut bloquer le rythme mu, a augmenté son importance dans les recherches des ICO [6]. 1. La somnolence est l’état de quasi-sommeil représenté par un fort désir de dormir. 10 Figure 1.5 – Les tracés des rythmes EEG Les différents rythmes décrits ci-dessus sont issus des potentiels spontanés du cerveau. Ils ne sont pas produits par des stimuli externes mais par l’état interne du sujet(la détente, l’effort mentale, le sommeil, etc.). Les potentiels qui seront utiles dans ce travail sont ceux qui sont produits par des stimuli externes, en particulier visuels. 1.4.2 Potentiels reliés à événements Le potentiel relié à événement(ERP, du terme anglais Event-related potential ) est une réponse électrophysiologique du cerveau à un événement particulier ou un stimulus. Cette réponse est temps verrouillée à l’événement qui la provoque et caractérisée par la latence et la polarité de la déviation(Figure 1.6). 11 Par exemple, la composante N135 est décrite par une déviation négative(désignée par N) de la tension qui se produit 135 ms après la présentation du stimulus pendant que la composante P100 est décrite par une déviation positive de la tension qui se produit 100 ms après la présentation du stimulus. Figure 1.6 – Potentiel relié à événement L’amplitude des ERP est faible(de l’ordre des microvolts) quand comparée à l’activité spontanée enregistrée par l’EEG. Pour pouvoir distinguer ces potentiels de l’activité courante du cerveau et des autres signaux qui s’interfèrent, la moyenne des signaux enregistrés est calculée après un certain nombre de répétitions de l’expérience. Grâce à ce moyennage, les autres potentiels de caractéristique aléatoire sont attenués, ce qui augmente le SNR et rend les ERP plus visibles. 1.4.3 Le paradigme d’oddball Lorsque les sujets sont assignés une tâche qui demande ces derniers à déterminer auquel des 2 catégories possibles chaque élément d’une séquence présentée appartient, et une de ces catégories apparait rarement, ces rares éléments produisent un ERP avec une composante positive de latence d’environ 300 ms appelé P300. Cette disposition expérimentale est appelée le paradigme d’oddball. Ce paradigme est exploité par Farwell et Donchin dans une ICO qui permet d’écrire des mots en choisissant des symboles organisés sous forme d’une matrice [7]. Les détails de cette expérience sur laquelle ce projet de fin d’études est basé, seront discutés dans le chapitre suivant. 12 Une expérience simple Cette expérience [8], est une variaton du paradigme d’oddball dans laquelle les sujets doivent classifier une séquence de symboles constituée par X et O en appuyant un bouton pour les X et un autre pour les O. Les X constituent 80% de toute la séquence pendant que les O constituent 20%. Chaque symbole est présenté sur un écran pour 100 ms suivi d’un intervalle d’interstimulus(ISI, du terme anglais interstimulus interval ) de 1400 ms. Figure 1.7 – L’EEG enregistré avec une seule électrode [8] La figure 1.7 montre un morceau de 9 secondes de l’EEG d’un sujet participé à cette expérience. Une seule électrode placée sur la ligne médiane des lobes pariétaux est utilisée pendant l’acquisition de l’EEG. La difficulté de distinguer l’activité spontanée et les ERP produits est évidente mais il existe quand même une sorte de cohérence dans la réponse à chaque stimulus. Notez bien que le sens de l’axe des y est inversé dans les figures concernant cette expérience suivant la convention de [8]. Figure 1.8 – Les ERP produits par les stimuli apres le moyennage [8] 13 À la fin de chaque séance, une procédure simple de moyennage est appliquée aux données acquises pour pouvoir extraire les ERP produits par les stimuli. Supposons qu’une séance est constituée de 80 X et 20 O. L’EEG de cette séance est segmenté en 100 morceaux de 800ms chacun, représentant les périodes juste après chaque présentation de stimulus. La moyenne des segments concernant les X et les O est calculée séparement. Ces derniers signaux obtenus(Figure 1.8) montrent que l’amplitude de la composante P300 de l’ERP produit par les symboles rares est significativement élevée par rapport à celle de l’ERP produit par les autres. 1.5 Acquisition de l’EEG L’EEG est enregistré avec des électrodes placées sur le cuir chevelu. Les électrodes sont des petites plaques capables de conduire l’électricité. Une substance spéciale est appliquée entre les électrodes et la peau pour augmenter la conductivité électrique. La position des électrodes sur le cuir chevelu est déterminée suivant une convention standardisée appelée le système 10-20(Figure 1.9). Ce système est basé sur la relation qui se trouve entre la position d’une électrode et la région du cortex cérébral en dessous de cette électrode. La distance entre les repères spécifiques(L’inion et le nasion) est divisée de façon à ce que la distance entre les électrodes adjacentes soit 10% ou 20% de cette distance quand placées. Figure 1.9 – Le système 10-20 : Vue supérieure et latérale [9] 14 Chaque position d’électrode a une lettre correspondante qui désigne le lobe sousjacent et un nombre ou une autre lettre qui identifie son emplacement sur les hémisphères. Les lettres F, T, C, P et O représentent respectivement Frontal, Temporal, Central, Pariétal et Occipital. Même si il n’existe pas un lobe central dans le cerveau, la lettre C est utilisée pour des raisons d’identifications. La lettre Z représente les électrodes placées sur la ligne médiane. Les nombres paires(2,4,6,8) sont attribués aux positions sur l’hémisphère droite tandis que les nombres impaires(1,3,5,7) sont attribués aux positions sur l’hémisphère gauche. Il existe aussi une extension de ce système appelée la nomenclature combinatoriale modifiée(MCN) qui donne la possibilité d’ajouter des électrodes additionnelles pour une acquisition plus détaillée. Chapitre 2 Clavier virtuel 2.1 Introduction Ce chapitre se concentre sur l’implementation du clavier virtuel de façon à ce qu’il permet aux sujets de construire des mots et des phrases. Les matériels et les logiciels utilisés vont être expliqués en détail avec la spécification complète de l’expérience psychophysique qui exploite le paradigme d’oddball. À la fin de ce chapitre, une comparaison de performance sera faite pour bien distinguer les algorithmes de classification utilisés. 2.2 Outils informatiques 2.2.1 Matériels informatiques Pour l’acquisition des signaux EEG, un kit de recherche(Figure 2.1) produite par la compagnie BIOPAC sera utilisée. Ce kit est constitué d’une carte d’acquisition équipée d’un amplificateur, des cables nécessaires et des électrodes. La carte possède une interface USB qui permet de transférer les données acquises. Il existe aussi une bibliothèque écrite par BIOPAC qui sert à accèder aux données pendant l’acquisition. Grâce à cette bibliothèque de programmation, il sera possible d’analyser l’EEG pendant que l’expérience se déroule. 16 Figure 2.1 – Le kit de recherche de BIOPAC 2.2.2 Logiciels informatiques MATLAB MATLAB (MATrix LABoratory) est un logiciel interactif basé sur le calcul matriciel. Il est fréquemment utilisé dans les calculs scientifiques et les problèmes d’ingénierie car il permet de résoudre des problèmes complexes en moins de temps comparé aux langages de programmation grâce à une multitude de fonctions intégrées et aux boı̂tes d’outils. Le kit de recherche de BIOPAC offre une bibliothèque spécifique à MATLAB appelée BHAPI qui permet d’accèder aux données acquises par la carte en temps réel. Psychophysics Toolbox La partie visuelle du clavier virtuel sera programmé avec une boı̂te d’outils spéciale de MATLAB appelée Psychophysics Toolbox qui est fréquemment utilisée dans les applications psychophysiques pour représenter des stimuli avec un timing bien précis, de l’ordre des microsecondes. Cette boı̂te d’outils permet d’enregistrer le temps précis de la présentation d’un stimulus. Cette propriété est importante pour pouvoir synchroniser les expériences avec l’acquisition de l’EEG. 17 2.3 2.3.1 Spécifications de l’expérience Le clavier virtuel Le clavier virtuel proposé par ce travail(Figure 2.2(a)) est organisé sous forme d’une matrice à 6x6. Il contient 26 caractères alphabétiques et 10 chiffres. Le clavier qui était proposé par Farwell et Donchin(Figure 2.2(b)) contenait des commandes au lieu des chiffres pour accomplir des tâches différentes comme supprimer la dernière lettre écrite ou quitter le logiciel. (a) Le clavier virtuel de ce travail (b) Le clavier virtuel proposé par Farwell et Donchin [7] Figure 2.2 – Deux claviers virtuels différents Chaque état du clavier est représentée par une image jpeg. Quand le logiciel est lancé, ces images sont chargées à la mémoire vidéo pour une visualisation plus rapide. Psychophysics Toolbox contient une méthode flip qui dessine ces images à l’écran avec une latence de l’ordre des microsecondes, ce qui rend possible la représentation des stimuli avec une précision suffisante. 2.3.2 Principe L’expérience exploite les conséquences du paradigme d’oddball en observant la composante P300 de l’ERP évoqué par les stimuli du clavier virtuel. Dans le contexte de cette expérience, un stimulus est l’intensification d’une ligne ou d’une colonne du clavier virtuel. 18 Le clavier virtuel est constitué de 36 symboles(caractères et chiffres) colorés en gris. Une ligne ou une colonne est dite intensifiée quand tous les symboles qui la constituent sont colorés en blanc. Chaque intensification constitue un stimulus visuel pour le sujet qui pratique l’expérience. La période pendant laquelle toute les lignes et les colonnes du clavier sont intensifiées aléatoirement est appelé un essai. Puisqu’il existe 6 lignes et 6 colonnes, un essai contient exactement 12 stimuli visuels. Pour bien distinguer ces différents stimuli, les lignes et les colonnes du clavier virtuel sont numérotées(Figure 2.3). Figure 2.3 – L’énumeration des stimuli Pendant un essai, le sujet doit se concentrer sur un des symboles du clavier virtuel. Puisqu’un essai est constitué de 12 intensifications, le symbole concentré sera coloré en blanc 2 fois pendant chaque essai. Ces 2 intensifications vont produire un ERP contenant un composant P300 plus distinctif comparé à celui produit par les 10 autres intensifications, selon le paradigme d’oddball(cf. 1.4.3). Supposons que le sujet se concentre sur le symbole P, 2 intensifications déterminant le symbole P sont montrées sur la figure 2.4 : Figure 2.4 – Example d’intensification déterminant un symbole 19 2.3.3 Observation de l’ERP Puisque l’activité courante et l’activité événementielle(provenant de l’ERP) du cerveau sont superposées tout ensemble avec des autres interférences comme les mouvements des yeux, il n’est pas facile d’observer la réponse P300 de l’ERP en analysant un seul essai. Pour remédier à ce problème, la méthode de moyennage citée dans le chapitre précédent va être utilisé. Même si il existe des approches de détection avec un seul essai(Single-Trial Detection) [10][11], elles ne seront pas traitées dans le contexte de cette thèse à cause de leur complexité et du besoin d’entraı̂ner les algorithmes. 2.4 Traitement des données Pour concrétiser ce qui est expliqué jusqu’ici, un jeu de données MATLAB enregistré avec BCI20001 pour une compétition réalisée en 2002 sera utilisé [12]. Le jeu de données est constitué de l’EEG d’un sujet qui pratique l’expérience du clavier virtuel. Il existe 11 différents fichiers MATLAB représentant 11 pratiques de l’expérience. Dans chacun de ces expériences, le sujet construit un mot en se concentrant sur des symboles du clavier virtuel(Table 2.1). L’enregistrement est fait en deux séances différentes. Fichier AAS010R01 AAS010R02 AAS010R03 AAS010R04 AAS010R05 AAS011R01 AAS011R02 AAS011R03 AAS011R04 AAS011R05 AAS011R06 Séance 1 1 1 1 1 2 2 2 2 2 2 Mot Cat Dog Fish Water Bowl Hat Hat Glove Shoes Fish Rat Table 2.1 – Les mots du jeu de données 1. BCI2000 est une plate-forme flexible de recherche et de développement utilisée dans la réalisation des interfaces cerveau-ordinateur. Pour plus d’information, voir http ://www.bci2000.org. 20 2.4.1 Paramètres du jeu de données Chaque expérience du jeu de données est réalisé avec les mêmes paramètres. L’enregistrement est fait avec un taux d’échantillonage égal à 240 Hz ce qui veut dire que l’EEG du sujet est représenté avec 240 échantillons par seconde. Dans chaque expérience, le sujet se concentre sur une séquence de caractères construisant le mot qu’il veut écrire. Pour chaque caractère, le clavier vide(sans aucune intensifications) est affiché pendant 2.5 secondes. Après cette période vide, les essais commencent. Un essai contient 12 intensifications aléatoires de 100 ms. Entre chaque intensification, le clavier vide est affiché pendant 75 ms. Puisqu’un essai n’est pas suffisant pour distinguer les ERP, l’écriture de chaque caractère consiste en 15 essais successives, ce qui fait 180 intensifications pour chaque caractère. L’EEG est stocké dans la matrice signal. L’enregistrement est fait avec 64 électrodes donc la taille de cette matrice est Nx64 avec N égal au nombre d’échantillons dans une expérience. Le vecteur colonne trialnr associe les indices des échantillons aux nombres d’intensifications ce qui permet de trouver l’intervalle correspondant à une intensification spécifique. La variable StimulusCode qui est aussi un vecteur colonne, associe les indices des échantillons aux stimuli ce qui permet de déterminer la ligne ou la colonne qui est intensifié à un instant spécifique. La séance de MATLAB suivante clarifie la fonction des variables StimulusCode et trialnr : >> sample = 24*240 % echantillon correspondant à la 24ème seconde sample = 5760 >> StimulusCode(sample) ans = 10 >> trialnr(sample) % à la 24ème seconde, le stimulus 10 est produit % stimulus 10 = intensification de la 4ème ligne ans = 123 % l’intensification numéro 123 est en exécution % pendant la 24ème seconde. 21 2.4.2 Analyse des époques Après chaque intensification, un morceau d’EEG de 600 ms est extrait de la matrice signal pour analyser le composant P300 de cette intensification. Ce morceau est appelé une époque. Seul les données acquises par l’électrode Cz sont utilisées. Figure 2.5 – Extraction d’une époque Puisqu’il existe 180 intensifications par caractère, il y aura 180 époques. Ces époques sont stockées dans la matrice stimulusdata selon leurs stimuli correspondants. Avec un taux d’échantillonage de 240 Hz, une époque de 600 ms est représentée par 144 échantillons. Sachant qu’il existe 12 différents stimuli, la taille de la matrice stimulusdata est 12x144. À chaque extraction d’une nouvelle époque, celle-ci est ajoutée à la ligne correspondante de la matrice. À la fin de 180 intensifications, chaque ligne est remplacée par sa moyenne. Les 2 lignes ayant le composant P300 le plus élevé sont celles qui déterminent le symbole choisi dans les conditions idéales d’expérience. Une comparaison entre une époque finale d’un stimulus rare(oddball) et d’un stimulus fréquent(standard) est faite ci-dessous(Figure 2.6). 22 Figure 2.6 – Comparaison des amplitudes P300 2.4.3 Algorithmes de classification Une fois calculée la moyenne de toutes les époques correspondant aux différents stimuli, il faut les classifier et choisir les deux qui possèdent une réponse P300 plus élevée que les autres. Deux algorithmes simples seront introduits pour accomplir cette tâche de classification. Algorithme oneshot C’est l’algorithme le plus simple et inefficace qui trie les 12 époques finales selon l’amplitude d’un seul point. Le choix de ce point est important puisqu’il affecte la performance de l’algorithme. Une comparaison de trois choix différents est faite ci-dessous : Temps(ms) 300 310 320 Séance 1 21.05% 52.63% 36.84% Séance 2 17.39% 34.78% 21.74% Total 19.05% 42.86% 28.57% Table 2.2 – Les résultats de l’algorithme oneshot 23 Calcul d’aire au voisinage de P300 Cet deuxième algorithme calcule la somme des amplitudes du signal entre une intervalle donnée, ce qui revient à calculer l’aire qui reste entre ce morceau de la courbe et l’axe des x. Cet algorithme fait une classification plus correcte quand comparée à l’algorithme précédent. Intervalle(ms) 300-310 300-318 300-320 300-330 310-320 290-340 Séance 1 57.89% 68.42% 63.16% 63.16% 57.89% 63.16% Séance 2 34.78% 43.48% 39.13% 34.78% 26.09% 43.48% Total 45.24% 54.76% 50.00% 47.62% 40.48% 52.38% Table 2.3 – Les résultats de l’algorithme d’aire Conclusion Ce projet réalise une interface cerveau-ordinateur grâce à laquelle c’est possible d’écrire des mots et des phrases en se concentrant sur les symboles visualisés à l’écran de l’ordinateur. Même si les deux algorithmes utilisés pour déterminer le symbole sont inefficace, ils sont utiles pour aboutir à une démonstration pratique du clavier virtuel. Les résultats sont acceptables : Un taux de réussite de 68.42% est atteint dans une séance d’expérience. Il existe des algorithmes différents qui pouvaient être utilisés pour augmenter la performance de cette interface cerveau-ordinateur. Les méthodes basées sur la classification statistique et les machines à vecteurs supports(SVM) pouvaient être introduites pour diminuer le nombre d’essais nécessaires afin d’obtenir une bonne résultat. Mais pour conserver la simplicité, ils ne sont pas traités dans le contexte de cette thèse. Bibliographie [1] Alison Abbott, ”In search of sixth sense” Nature Vol. 442, 13 July 2006. [2] American Medical Association, ”The Brain-Effects of Stroke” http ://www.medem.com/medlb/articleslb.cfm ?sub cat=189 [3] R. Williams et K. Herrup, ”The Control of Neuron Number” http ://www.nervenet.org/papers/NUMBER REV 1988.html, 2001. [4] Jaakko Malmivuo, Robert Plansey, ”Bioelectromagnetism” http ://butler.cc.tut.fi/ malmivuo/bem/bembook [5] Ernst Niedermayer, Fernando Lopes Da Silva, ”Electroencephalography”, 2005. [6] Janne Lehtonen, ”EEG-based Brain Computer Interfaces”, 2002. [7] L. A. Farwell, E. Donchin, ”Talking off the top of your head : Toward a mental prosthesis utilizing event-related brain potentials” Electroencephalography and Clinical Neurophysiology, 1988. [8] Steven J. Luck, ”An Introduction to the Event-Related Potential Technique”, 2005. [9] Eric H. Chudler, ”The 10-20 system of electrode placement” http ://faculty.washington.edu/chudler/1020.html, 2000. [10] Teodoro Solis-Escalante, Gerardo Gabriel Gentiletti, Oscar Yañez-Suarez, ”Single Trial P300 detection based on the Empirical Mode Decomposition” Proceedings of the 28th IEEE EMBS Annual International Conference, 2006. [11] Loukianos Spyrou, Saeid Sanei, Clive Cheong Took, ”Estimation and location tracking of the P300 subcomponents from single-trial EEG” Centre of Digital Signal Processing, School of Engineering, Cardiff University. [12] Gerwin Schalk, ”2nd Wadsworth BCI Dataset” http ://ida.first.fraunhofer.de/projects/bci/competition ii, 2002. Appendice - Les codes sources % % % % % % % % % % % A simple set of prediction algorithms which does classification on BCI competition datasets: http://ida.first.fraunhofer.de/projects/bci/competition_ii/albany_desc/al bany_desc_ii.html Initial version of this program was written by Gerwin Schalk to demonstrate a very simple detection algorithm. (Dec 2002) The final version contains additional detection algorithms written by Ozan Caglayan for his undergraduate thesis work. (May 2008) function [stimulusdata, stimuluscount, word] = predict(subject, method, mparam1, mparam2) % load data file fprintf(1, ’Loading dataset %s..\n’, subject); loadcmd = sprintf(’load data/%s.mat’, subject); eval(loadcmd); % Sampling frequency of competition datasets samplefreq = 240; % One epoch is considered to be 600 ms triallength = round(600*samplefreq/1000); % Alphabet alphabet = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789-’; word = ’’; % Channel used in classification (11:Cz) electrode = 11; % Number of chars to be predicted nb_chars = round(max(trialnr)/180); fprintf(1, ’Number of chars to be detected in %s: %d\n’, subject, nb_chars); % this determines the first and last intensification to be used here % There exists 180(15x12) intensifications for one character. % intensification to start is the first intensification starttrial = min(trialnr)+1; % The last intensification is the last one for the first character endtrial = 180; for cur_char = 1:nb_chars % Preallocate space stimulusdata = zeros(12, triallength); stimuluscount = zeros(12); 27 for cur_trial = starttrial:endtrial % get the indeces of the samples of the current intensification trialidx = find(trialnr == cur_trial); % get the data for these samples, starting at time of stimulation and triallength sample trialdata = signal(min(trialidx):min(trialidx)+triallength-1, :); % stimuluscode: 1-6 defining the highlighted column, 7-12 the row cur_stimuluscode = max(StimulusCode(trialidx)); stimulusdata(cur_stimuluscode, :) = stimulusdata(cur_stimuluscode, :)+trialdata(:, electrode)’; stimuluscount(cur_stimuluscode) = stimuluscount(cur_stimuluscode)+1; end % Calculate average responses for each of the stimuli for stim = 1:12 stimulusdata(stim, :) = stimulusdata(stim, :)/stimuluscount(stim); end % % % % % We have stimulus data assigned to each one of the 12 intensification 2 of them represents oddball responses. Methods ’p300area’: Calculates the area near the p300 peak. ’oneshot’ : Takes the sample number (mparam1*samplefreq/1000). switch lower(method) case ’p300area’ s = round(mparam1*samplefreq/1000); e = round(mparam2*samplefreq/1000); avg = sum(stimulusdata(:, s:e), 2); case ’oneshot’ class_sample = round(mparam1*samplefreq/1000); avg = stimulusdata(:, class_sample); otherwise avg = sum(stimulusdata(:, 72:76), 2); end [savg, iavg] = sort(avg, ’descend’); iavg = sort(iavg(1:2)); if (iavg(1) > 6 || iavg(2) < 7) % Stimulus codes are out of range, wrong classification char = ’?’; else % Stimulus codes are ok but the predicted char may be false. char = alphabet((iavg(2)-7)*6+iavg(1)); end word = strcat(word, char); fprintf(1, ’(%d,%d)\tCharacter %d is %c\n’, iavg(2), iavg(1), cur_char, char); starttrial = starttrial + 180; endtrial = endtrial + 180; end fprintf(1, ’The word for %s is: %s\n’, subject, word); end 28 % BIOPAC MP35 Acquisition code function retval = mpacq(sample_rate) % Directory where mpdev.dll and mpdev.h lives path = pwd(); fprintf(1, ’Current path is: %s\n’, path); lib_name = ’mpdev’; % Generate full paths lib_path = strcat(path, ’\’, lib_name, ’.dll’); header_path = strcat(path, ’\’, lib_name, ’.h’); % Check the files if exist(lib_path, ’file’) ~= 3 error(’Check that mpdev.dll exists.’); end if exist(header_path, ’file’) ~= 2 error(’Check that mpdev.h exists.’); end % Check if the library is already loaded if libisloaded(lib_name) calllib(lib_name, ’disconnectMPDev’); unloadlibrary(lib_name); end % Load the library [notfound, warnings] = loadlibrary(lib_path, header_path); % Get function list and properties func_list = libfunctions(lib_name, ’-full’); % Connect to MP Device [retcode, sn] = calllib(lib_name, ’connectMPDev’, ’MP35’, ’MPUSB’, ’GSU’); % Check status if ~strcmp(retcode, ’MPSUCCESS’) calllib(lib_name, ’disconnectMPDev’); unloadlibrary(lib_name); error(’connectMPDev: Failed to connect!’); end fprintf(1, ’Return code is MPSUCCESS\n’); % Set sample rate retcode = calllib(lib_name, ’setSampleRate’, 1000.0/sample_rate); if ~strcmp(retcode,’MPSUCCESS’) calllib(libname, ’disconnectMPDev’); unloadlibrary(lib_name); error(’setSampleRate: Failed to set sample rate!’); end end 29 % PTB, Matlab % Ozan Caglayan, 2008 clear all; % Configure winsound acquisition ai = analoginput(’winsound’); addchannel(ai, 1); % Sampling frequency is 5000 Hz Fs = 5000; % Set sampling rate set(ai, ’SampleRate’, Fs); try % Fail if PTB isn’t using on OpenGL AssertOpenGL; % Open the screen window = Screen(0, ’OpenWindow’, 0, []); Screen(’Preference’, ’TextAntiAliasing’, 0); HideCursor; % Get flipinterval t_flip = Screen(’GetFlipInterval’, window)/2; fprintf(1, ’flip interval: %f\n’, t_flip); % Set priority Priority(MaxPriority(window)); % Get resolution, be verbose. resolution = Screen(’Resolution’, 0); % Init experimental parameters alphabet = char([65:90 48:57]); ITI = 2; t_flashing = 0.500; t_blank = 0.500; n_trial = 3; % Set recording duration set(ai, ’SamplesPerTrigger’, t_flashing*Fs); start(ai);getdata(ai); % Loading.. Screen(’DrawText’, window, ’Loading...’, 100, 100, 255); Screen(’Flip’, window); % Preallocate the texture ids vector w = zeros(13,1); % Make textures from jpg files, (w(13) is plain keyboard) for i=1:13 w(i) = Screen(’MakeTexture’, window, imread(strcat(’textures/keyboard_’, num2str(i), ’.jpg’))); end % Preload textures if possible resident = Screen(’PreloadTextures’, window, w); 30 % Draw the keyboard and flip Screen(’DrawTexture’, window, w(13)); Screen(’Flip’, window); n = 0;k = 0; stimuli = zeros(n_trial*12, 1); flashes = zeros(n_trial*12, 1); target = zeros(n_trial*12, 1); cvbl = GetSecs(); % Second try with flip timestamps while n < n_trial n = n + 1; % Subtrial begins with columns before rows for i=[randperm(6) randperm(6)+6] k = k + 1; Screen(’DrawTexture’, window, w(i)); % Start acquisition if rem(k-1, 12) ~= 0 stimuli(k) = Screen(’Flip’, window, (cvbl + t_blank - t_flip)); else stimuli(k) = Screen(’Flip’, window, (cvbl + ITI - t_flip)); end start(ai); target(k) = max(getdata(ai)) > 0.01; flashes(k) = i; % Clear the keyboard Screen(’DrawTexture’, window, w(13)); cvbl = Screen(’Flip’, window, (stimuli(k) + t_flashing - t_flip)); end end % Resolve the word word = ’You typed: ’; t = flashes(target == 1); for i=1:n_trial word = strcat(word, alphabet(6*t(2*i)-42+t(2*i-1))); end Screen(’DrawText’, window, word); Screen(’Flip’, window); % Wait for a keyboard event to quit PTB KbWait; Priority(0); delete(ai); clear ai; Screen(’CloseAll’); catch me Screen(’CloseAll’); Priority(0); delete(ai); clear ai; psychrethrow(psychlasterror); end