Você está na página 1de 21

1

DESENVOLVIMENTO DE UM SISTEMA DE CAPTURA E PROCESSAMENTO DE SINAIS ELETROENCEFALOGRFICOS QUANTITATIVO NO-INVASIVO

MACHADO, SAULO JESIEL SIQUEIRA SOARES, ALCIMAR BARBOSA

Resumo - O eletroencefalograma um registro da atividade eltrica do crebro, obtido atravs de eletrodos posicionados no escalpo. Quando o eletroencefalograma gravado em computador, denominado de Eletroencefalograma Digital. Um Eletroencefalograma Quantitativo (qEEG) caracterizado se mtodos matemticos so aplicados nos dados digitais armazenados para estudos de freqncia, tempo-freqncia ou amplitude. Apesar de haver opinies controversas quanto ao uso do qEEG em diagnstico (pois a interpretao digital automatizada passiva de erros e a anlise de especialistas ainda requerida) , a quantificao do EEG til na obteno de informao mais objetiva e detalhada. No-invasiva, a tcnica do qEEG de grande uso no diagnstico de epilepsia, por exemplo, ajudando a prever crises. Discutem-se ento, as tecnologias envolvidas no processo de criao de um software de aquisio de sinais eletroencefalogrficos.

Palavras-Chave - eletroencefalograma quantitativo, qEEG, deteco de picos, design pattern.

_________________________________________________ (1) Universidade Federal de Uberlndia CEP 38400-000, Av. Joo Naves de vila, Uberlndia MG - Brasil e-mail: jsmsaulo@yahoo.com.br
(2) Orientador: alcimar@ufu.br

Abstract The Electroencephalogram is a record of the electrical activity of the brain, by means of electrodes placed on the scalp. If mathematical methods are applied in the digital records of the signal for frequency, time-frequency or amplitude analysis, a Quantitative Electroencephalogram (qEEG) is characterized. Many approaches are used in the mathematical analysis, focusing on characteristics of the EEG signal. Although there are controversial opinions about its use in diagnosis (since the automated digital interpretation may undergo errors and an expert analysis is still required), the evalutation of the EEG is useful in obtaining more objective and detailed information. The qEEG technique is used in diagnosys of epilepsy, for example, helping in the prediction of seizures.The number of pixels a PCs monitor can show is limited. A refinement can be obtained to minimize the number of points to be plotted when plotting the EEG signal. So, techniques for the creation of an acquisition software for electroencephalographic signals are discussed. i

Keywords qEEG analysis, quantitative electroencephalogram, spike detection, design pattern.

I. INTRODUO O desenvolvimento tecnolgico da eletrnica, acoplado ao crescimento no conhecimento cientfico sobre as causas orgnicas das doenas humanas neste final de sculo, possibilitou um grande desenvolvimento de novos equipamentos e tcnicas diagnsticas e teraputicas na Medicina. Pode-se citar o eletrocardigrafo e eletroencefalgrafo, nas dcadas de 20 e 30 respectivamente. Em engenharia entendido como sinal qualquer evento que carregue informao. Os sinais biolgicos no so diferentes. Em Medicina entende-se como sinal qualquer indicador objetivo de alteraes patolgicas de natureza fisiolgica ou morfolgica por exemplo, um aumento na fora de um reflexo, uma variao da temperatura corporal,

etc. O termo sinal biolgico usado no contexto presente se refere s variaes temporais que ocorrem em alguma forma de energia no corpo humano, como resultado de seu funcionamento. A partir do estudo da eletricidade no corpo humano, observaram-se variaes rtmicas em um crebro. Por volta dos anos 1920, Hans Berger publicou uma srie de trabalhos contendo as primeiras descries dos ritmos cerebrais humanos e suas modificaes em distintas condies fisiolgicas e patolgicas. Ele denominou os dados registrados de eletroencefalograma [1].

V). Desta forma facilmente afetado por diversos rudos eltricos e fisiolgicos. Apesar de que modelos lineares so aplicados em pequenos pedaos do sinal, o EEG de natureza no-linear [2]. As tcnicas de qEEG possibilitam o tratamento do sinal EEG em diversos domnios fsicos, como o da freqncia, tempo, tempo-freqncia. Cada abordagem foca certas caractersticas do sinal, e
Figura 1 exemplo de Eletroencefalograma [8]

no h padronizao de mtodos de anlise. Apesar do desenvolvimento atual de tcnicas nolineares, estatsticas que se baseiam no fato de que o EEG um sinal com propriedades estocsticas (quase aleatrio), a anlise no domnio da freqncia ainda a abordagem mais comumente utilizada por pesquisadores e desenvolvedores de sistemas de qEEG [2]. Mtricas foram definidas atravs do estudo do sinal EEG no domnio da freqncia. Bandas de freqncia com caractersticas prprias, como alpha (8~13 Hz), theta (4~7 Hz), gamma (>40 Hz), beta (14~26 Hz), associadas a estados da mente durante o sono, por exemplo, constituem um na suas importante foco de estudo no domnio da freqncia. Dependendo do estado de conscincia de um indivduo, uma dessas faixas destaca-se mais que as outras [5]. Artefatos no sinal EEG so dados coletados de origem no-cerebral. So rudos, como sinais musculares, batimentos cardacos ou mesmo o movimento dos olhos. O tratamento (minimizao do efeito dos mesmos) desses rudos faz parte da anlise do qEEG.

Atravs de eletrodos criteriosamente colocados sobre o escalpo, a atividade eltrica cerebral era medida e registrada em papel. Com o avano da instrumentao, e a incluso de microcomputadores no processo de registro do sinal eletroencefalogrfico (EEG), configurou-se o eletroencefalograma digital (dEEG). Por meio da tcnica dEEG, os dados podem ser armazenados de forma digital, e apresentados em monitor de vdeo. Os avanos tecnolgicos possibilitaram ainda, a partir do final da dcada de 1970, incio dos anos 1980, o desenvolvimento do eletroencefalograma quantitativo (qEEG). O forma mesmo a consiste, claras principalmente, algumas de modelagem e anlise matemtica do sinal EEG, de deixar caractersticas, como o espectro de freqncia. Uma diversidade de tcnicas e modelos foi ento desenvolvida para caracterizar o sinal EEG, e facilitar o trabalho de especialistas no diagnstico de condies neurolgicas como crises epilpticas (atravs do estudo de picos no sinal, por exemplo). O eletroencefalograma caracteriza-se como um processo estocstico de baixa amplitude (10~300

qEEG de grande valor clnico quando executado com EEG padro e analisado por clnicos com competncia demonstrada em EEG padro e treinamento especializado em qEEG. Mas uma ferramenta auxiliar, no substituindo o diagnstico mdico. Estudos comprovam a utilidade do qEEG na mensurao de efeitos farmacolgicos no sistema nervoso central, ajudando na prescrio de medicamentos [3]. Em computao, concorrncia quer dizer compartilhar recursos em um mesmo espao de tempo. Assim pode-se exemplificar situaes concorrentes como sendo processos de um Sistema Operacional compartilhando a mesma CPU, ou compartilhando a mesma rea de memria ou ainda compartilhando dispositivos de entrada e sada como uma impressora ou disco. O poder computacional tem crescido em razo geomtrica nos ltimos 50 anos com o aumento da velocidade computacional, de capacidade de memria, de capacidade de armazenamento de dados, de complexidade de circuitos entre outros. A ltima dcada foi marcada por um maior avano na forma de tratar instrues enfileiradas para uma nica CPU no lugar de computadores multiprocessados. Esses avanos computacionais tm causado mudanas fundamentais nos softwares comerciais. Grandes sistemas de Banco de Dados e outras aplicaes que antes eram executadas em Mainframes agora so distribudas em verses cada vez menores e para serem executadas em mquinas cada vez mais baratas. Terminais

comearam a ser trocados por Workstation com interface grfica e capacidade multimdia e por outro lado aplicaes stand alone (aplicaes que funcionam sem necessidade de comunicao com outros computadores que no sejam o local onde so executadas) comearam a se transformar em aplicaes distribudas passando a envolver o uso de redes de comunicao. Sendo assim, no mundo computacional de hoje, com computadores cada vez mais poderosos e com capacidade de interconexo cada vez mais veloz um aplicativo de planilha eletrnica tende a no ser mais um programa isolado suportando apenas um usurio porque agora uma alterao nessa planilha poder causar alteraes em outros aplicativos os quais estavam ligados a essa planilha como um aplicativo de projeo de vendas ou um aplicativo que gerador de relatrios. Dessa forma, nos tempos de hoje, o desenvolvimento de programas sempre estar esbarrando em comunicao e concorrncia. Comunicao por que os programas devero ser capazes de se comunicarem entre si trocando informaes. Concorrncia porque os sistemas operacionais e as maquinas atuais permitem que mais de um processo execute ao mesmo tempo em um mesmo CPU, e ainda permitem que um mesmo processo tenha linhas de execuo diferentes e independentes (threads). De fato, o maior trabalho dos sistemas operacionais atuais o gerenciamento de operaes concorrentes [15]. Na etapa inicial do projeto foi realizada uma pesquisa bibliogrfica com o intuito de reunir conhecimentos sobre a construo de um

equipamento de qEEG, software de aquisio e tcnicas de anlise computacional do sinal eletroencefalogrfico. Iniciou-se ento o trabalho no sentido de confeccionar o software para o sistema de qEEG, pesquisando e sobre as tecnologias envolvidas desenvolvendo

tcnicas lineares (atravs da escolha de trechos do sinal) e no-lineares podem ser utilizadas nessa fase do processo. Dentre os mtodos lineares h aqueles para anlise no domnio da freqncia, tempo e tempo freqncia . No domnio do tempo, h mtodos paramtricos, como o Modelo Autoregressivo (AR autoregressive model), que modela o sinal EEG atravs de um com somatrio de expresses a no serem sinal, matemticas estudam coeficientes de amplitude

concorrentemente. II. MTODOS DE ANLISE MATEMTICA DO QEEG O processo de coleta do sinal qEEG envolve o posicionamento armazenagem. Ento, podem ser aplicadas as tcnicas matemticas e computacionais para visualizao de aspectos relevantes do sinal, como faixas de freqncia especficas ou variaes em amplitude. Apesar da no-linearidade caracterstica do EEG, tcnicas lineares atravs da escolha de trechos do sinal (modelo AutoRegressivo, ou modelos senoidais como a FFT) e no-lineares podem ser utilizadas nessa fase do processo. Encontram-se em estudo as tcnicas utilizadas para o processamento dos sinais biolgicos. Um breve resumo de tcnicas comuns segue. O processo de coleta do sinal qEEG envolve o posicionamento dos eletrodos, aquisio, tratamento (filtragem, eliminao de rudos), e armazenagem. Ento, podem ser aplicadas as tcnicas matemticas e computacionais para visualizao de aspectos relevantes do sinal, como faixas de freqncia especficas ou variaes em amplitude. Apesar da no-linearidade caracterstica do EEG, dos eletrodos, aquisio, tratamento (filtragem, eliminao de rudos), e

aproximados. E h mtodos no-paramtricos, que variaes diretamente. A seguir, so apresentadas algumas tcnicas de anlise de sinais biomdicos, em pesquisa para possvel implementao no sistema de qEEG do Laboratrio de Engenharia Biomdica da Faculdade de Engenharia Eltrica da UFU. Modelo Auto Regressivo: um pequeno pedao do sinal EEG pode ser considerado como um processo estacionrio. Baseando-se nisso, pode-se aplicar o modelo AR, que representa a srie EEG:
a(n)=a x(n-1)+a x(n-2)+...+a x(n-p)+w(n) ,
1 2 p

(1)

onde x(n) o sinal EEG {ai} so os parmetros AR, p a ordem do modelo e w(n), erro residual da srie x(n). A escolha do critrio p e o tamanho do sinal EEG a ser aproximado so questes importantes na modelagem AR Modelo Senoidal: mtodos que aproximam o sinal EEG por uma somatria de termos senoidais. A transformada de Fourier, base da anlise no domnio da freqncia, o mais utilizado.

domnios
(2)

do

tempo,

freqncia

tempo

freqncia. Uma das mtricas adotadas pelos modelos baseados na teoria da informao a entropia, que mede o grau de ordem/desordem de uma srie no tempo. A informao mtua (MI Mutual Information) uma medida que auxilia no estudo das interaes entre diferentes regies do crebro. Matematicamente, a MI entre duas variveis de atividade cortical X e Y definida com sua funo de densidade de probabilidade conjunta p(x,y), e funes de densidade de probabilidade marginal, p(x) e p(y). MI(X;Y) a entropia relativa entre p(x,y) e a distribuio de produtos p(x)p(y):
(4)

onde 0 = 2/N. A modelagem de o consiste Fourier sinal, em X(k) encontrar que a os coeficientes aproximam melhor fora

representando

(amplitude) do mesmo para cada freqncia. A anlise no domnio da freqncia permite a anlise da amplitude do sinal em cada faixa de freqncia, viabilizando o estudo das faixas j definidas como alpha, beta, gamma, theta e delta. A FFT (fast fourier transform) a ferramenta mais comumente utilizada para a anlise no domnio da freqncia, apesar de possuir limitaes quanto a resoluo. A FFT assume que o sinal estacionrio e varia lentamente. A anlise tempo-freqncia do EEG pode fornecer dados sobre freqncia relacionada ao tempo.O mtodo mais simples a STFT (short time fourier transform), que possui desvantagens quanto resoluo. A transformada Wavelet (WT) permite janelamento varivel atravs de uma funo que por sua vez possibilita mudana de escala, resolvendo outro problema da STFT: o janelamento fixo.
(3)

MI uma medida geral das dependncias estatsticas entre duas srie no tempo. Durante crises de epilepsia, por exemplo, sinais EEG apresentam oscilaes de freqncia e relacionamentos de fase complexos. O sincronismo (acoplamento) entre componentes em freqncia do sinal EEG tem um papel importante nas atividades cerebrais. Estatsticas de alta-ordem (high order statistics - HOS) so mtodos nolineares que descrevem o acoplamento de fase. O ndice de HOS mais popular o biespectro B(1, 2). Matematicamente, B(1, 2) de uma srie no tempo definido como:
(5)

onde a e b so os parmetros de escala e transio, respectivamente e a funo wavelet me Mtodos no-lineares incluem uma srie de mtodos estatsticos para analisar o EEG nos

onde X(1) o coeficiente de Fourier complexo do espectro do EEG e X , seu complexo conjugado [2]. Anda h as medidas caticas, baseadas em dinmica no-linear. As motivaes para o uso de dinmicas no-lineares so a alta complexidade e limitada previsibilidade dos sinais neurolgicos. Um desses mtodos o das dimenses fractais, que mede o grau de caos no sistema. Entretanto, a anlise de sinais biolgicos com esse mtodo tem encontrado alguns problemas: vrios parmetros so designados arbitrariamente e podem resultar em distoro e erro. III. DETECO DE PICOS Um pico foi definido por Gloor (1975) [6] como um transiente restrito facilmente identificvel no sinal e tendo uma amplitude de pelo menos duas vezes a dos 5 segundos precedentes do sinal em qualquer canal do EEG, com uma durao 200 ms, e incluindo a presena de um campo, como definido pelo envolvimento de um segundo eletrodo adjacente [6]. As definies dos especialistas so muito simplistas, no coincidem: dois especialistas muitas vezes no marcam o mesmo evento como um pico. A morfologia de um pico varia muito entre pacientes. Tudo isso dificulta a deteco automtica de picos, til no diagnstico de epilepsia, por exemplo. Outro problema que ocorre, mesmo com a utilizao de poderosos modelos computacionais, a alta taxa de deteco de picos falsos, ou a no deteco de picos.
*

Os algoritmos de deteco so comumente classificados como mimetic (copiam o especialista humano), linear predictive (usam tcnicas de processamento de sinal para distinguir entre o a atividade de background e os transientes), e os baseados em moldes (template based encontram eventos por comparao com picos selecionados). A tcnica mimtica de Gotman e Gloor, que baseada no clculo de parmetros como amplitude relativa, quo agudo o sinal, e durao das ondas EEG mostra uma performance altamente varivel, dependente da alterao do sinal por artefatos. Kurth et al prope um sistema baseado em um KFM (Kohonen feature map) auto-organizacional para treinamento supervisionado. Mas rudo e artefatos ainda interferem no sinal, impedindo a deteco de alguns picos [7]. Deteco digital de picos pode identificar eventos que podem ser picos ou crises epilpticas. O uso clnico de qualquer algoritmo de deteco de pico deve balancear sensitividade e especificidade [8]. IV. ARTEFATOS O sinal EEG comumente est na faixa 10~300V e afetado por diversos rudos de origem fisiolgica e eltrica. Eletrodos no diferenciam atividade eltrica gerada pelo crtex cerebral de outras geradas por fontes extracerebrais. Potenciais gerados por movimentos dos olhos, lngua, face ou msculos do pescoo, ou mudanas na condutncia da pele, podem contaminar a atividade cortical. Filtros passa alta e passa baixa minimizam a maioria dos artefatos

gerados por msculos, mudanas na condutncia da pele, e batimentos cardacos, mas o problema do artefato ocular permanece. O processamento de artefatos envolve trs estgios fundamentais: (i) deteco do artefato (ii) classificao do artefato, e (iii) remoo do artefato. A deteco do artefato estabelece a existncia de artefatos no EEG. Classificao de artfatos envolve o reconhecimento do tipo de artefatos detectados. Remoo de artefatos procura remover a contaminao causada pelos artefatos no sinal EEG com perda mnima ou a menor contaminao possvel de informaes clnicas importantes [12]. O piscar de olhos pode durar de 200 a 400 ms e produzir amplitudes eltricas de at 10 vezes a amplitude de sinais corticais. Um dos primeiros mtodos de remoo de artefato ocular era baseado no uso de potencimetros para balancear o efeito dos movimentos dos olhos na vertical e na horizontal. Ajustes eram feitos observando o EEG e eram subjetivos. A subtrao de EOG (EOG subtraction) um mtodo facilmente implementado via software, mas distorce o EEG. Filtros digitais adaptativos, e estatstica de alta ordem (PCA, ICA) tambm j foram usados para a remoo do artefato ocular [13]. Outras tcnicas para reduzir artefatos fisiolgicos incluem instruir o paciente e paradas para descanso. Pacientes podem ser instrudos a tentar reduzir o nmero de piscadas do olho, especialmente durante eventos crticos. Cadeiras

confortveis e paradas para descanso reduzem artefatos musculares e oculares [9]. Outra forma comum de artefato pode ser atribuda a anlise dos dados. Anlise espectral do sinal EEG pode ser alcanada atravs de FFT de trechos do sinal. Cada trecho um segmento truncado do EEG que consiste de 2n pontos. O truncamento de um sinal em andamento resulta em bordas afiadas (valores inicial ou final no-zero) no comeo ou fim de cada trecho. FFT de bordas no-zero gera o chamado problema do leakage (escapamento) [10]. Funes matemticas chamadas janelas ou frames podem ser aplicadas aos valores dos trechos para atarraxar os dados nas bordas dos trechos e reduzir o efeito de leakage. Apesar dos vrios procedimentos desenvolvidos para reduzir os artefatos no EEG, nenhuma dessas solues resolve definitivamente o problema. Coletar uma quantidade de amostrar suficiente para construo de mapas confiveis, mantendo a validade da amostragem, eliminando transientes e mudanas de estado uma das tarefas mais importantes da eliminao de artefatos. Estratgias sugeridas para certificar a seleo de dados EEG apropriados incluem deteco estatstica da contaminao por artefatos e o uso de procedimentos de estatstica multivariada, alm do uso de profissionais da remoo de artefatos (artifactors) para revisar o sinal EEG e remover seqncias contaminadas por artefatos. H muitos anos existe a preocupao quanto a variabilidade da interpretao do EEG por revisores de EEG. Decises sobre quais segmentos

do EEG excluir como artefatos so dependentes de cada profissional [11]. Lawson et al desenvolveu um trabalho que demonstrou a pequena diferena que h entre a avaliao de especialistas quanto aos artefatos no EEG, e uma aproximao mnima (remoo dos artefatos de maior amplitude apenas). Isso sugere que a excluso de artefatos mais sutis faz pouca diferena no produto final. V. SOFTWARE DE ANLISE DE QEEG Sistemas em tempo real so aqueles em que a corretude do sistema depende no apenas dos resultados lgicos da computao, mas tambm do tempo em que os resultados so produzidos. Tais sistemas possuem tempos de resposta previsveis e que estejam de acordo com determinadas limitaes. O sistema a ser desenvolvido tem a responsabilidade de executar as seguintes tarefas em tempo real: Aquisio dos sinais e armazenamento dos dados; Anlise estatstica dos dados coletados; Plotagem de grficos dos dados e resultantes da anlise computacional; Ento, o sofware de anlise do qEEG consiste em mdulos de coleta, armazenamento, plotagem e anlise, conforme diagrama de blocos a seguir. A anlise orientada a objeto vem sendo utilizada de forma consistente e confivel h vrios anos. Linguagens que implementam a orientao a objeto tornam a programao e desenvolvimento de sistemas em software mais lgica, por meio da abstrao natural que oferece aos programadores e desenvolvedores. No mundo real, pensamos em

objetos, caractersticas de objetos e funes de objetos. Nada mais natural que modelar sistemas assim. Programao concorrente o paradigma para a construo de programas para a execuo concorrente (simultnea) interativas, de vrias tarefas ser computacionais que podem

implementadas como programas separados ou como um conjunto de processos (threads) criadas por um nico programa.

Figura 2 Diagrama do software de qEEG

Essas tarefas tambm podem ser executadas por um nico processador, vrios processadores em um nico equipamento por uma ou rede. processadores Programao distibudos

concorrente relacionada com programao paralela, mas foca mais na interao entre as tarefas. A interao e a comunicao correta entre as diferentes tarefas, alm da coordenao do acesso concorrente aos recurso computacionais so as principais questes discutidas durante o desenvolvimento de sistemas concorrentes.

10

As linguagens de programao concorrente so linguagens de programao que usam construes para a concorrncia. tais construes podem envolver multi-tarefa, suporte para sistemas distribudos, troca de mensagens e recursos compartilhados. Atualmente, as linguagens mais utilizadas para tais construes so Java e C# [23]. Ambas utilizam o modelo de memria compartilhada, com o bloqueio sendo fornecido por monitores. Apesar disso, o modelo de troca de mensagens pode ser implementado sobre o modelo de memria compartilhada. Entre linguagens que utilizam o modelo de troca de mensagens, Erlang possivelmente a mais utilizada pela indstria atualmente [23]. Um processo nada mais do que uma abstrao de um programa em execuo. Os computadores atuais so capazes de fazer vrias coisas ao mesmo tempo, a saber: ler de um disco, executar um programa, imprimir na impressora e etc. Num sistema de multiprogramao, a CPU (Central Processing Unit em ingls, ou Unidade Central de Processamento) tambm chaveia de programa para programa, executando cada um deles durante algumas dezenas ou centenas de milisegundos, esse montante de tempo que a CPU d para cada processo denominado de quantum. Isto significa que em um determinado espao de tempo (por exemplo, 1 segundo), a CPU pode ceder o processador para vrios programas, dando aos usurios a iluso de paralelismo. O termo pseudo-paralelismo usado para definir este chaveamento rpido da CPU entre programas, para contrastar com o verdadeiro paralelismo de

hardware da CPU em sistemas multiprocessadores. Sendo assim pode-se concluir que um sistema multiprogramado no necessariamente um sistema multiprocessado porque existe a tcnica do pseudo-paralelismo que capaz de compartilhar o tempo de processamento do processador ente vrios processos. Um processo consiste, resumidamente, do programa executvel, os dados e pilha do programa, seu contador de programa, ponteiro de pilha, e outros registradores, alm de todas as outras informaes necessrias para executar o programa. Uma forma intuitiva de entender o que um processo pensar nos sistemas de tempo compartilhado (timesharing). Num sistema de tempo compartilhado, vrios processos compartilham uma mesma CPU. Periodicamente, o S.O. decide parar de executar um processo e comear a executar outro porque o primeiro j teve a poro que lhe cabe da CPU. Quando um processo suspenso temporariamente da forma acima descrita, ele tem que ser reinicializado mais tarde, exatamente no mesmo estado em que se encontrava quando foi interrompido. Isto significa que toda a informao sobre o processo tem que ser explicitamente salva durante a suspenso deste processo [15]. Como no possvel que todos os processos necessrios para executar todos os programas dos usurios fiquem na memria principal do computador ao mesmo tempo, so necessrias criaes e destruies de processos de forma dinmica. Um processo pode estar em um de trs

11

estados: em execuo, pronto para executar ou bloqueado, como mostra a figura 3. Um outro conceito importante o de Thread. Thread nada mais que um outro mecanismo para execuo de tarefas concorrentes. So linhas de controle de um mesmo processo com fluxo de execuo executados independentes e que podem mas ser que concorrentemente,

A. Ferramentas escolhidas para a confeco do

software Linguagens orientadas a objeto aumentam a produtividade e diminuem a quantidade de erros cometidos por programadores e projetistas. O produto final mostra-se em linguagem clara, limpa e semelhante ao algoritmo elaborado os objetos e atores do projeto concretizam-se atravs de classes e instncias de classes nas linguagens em que so implementados os projetos. As linguagens orientadas a objeto mais conhecidas e utilizadas so C++, Java e C#. Das trs, C++ uma modificao na tradicional linguagem C, de forma a oferecer sintaxe de implementao que abstrasse a orientao a objetos.

compartilham o mesmo espao de endereamento

Figura 3 Diagrama de estados de um processo [15]

. Uma thread tambm pode ser chamada de processo leve porque ela muito parecida com um processo, contudo pode-se dizer que ela um sub processo que roda dentro de um processo, ou seja, com o conceito de thread o sistema operacional mantm vrias linhas de execuo diferente dentro de um mesmo processo (veja figura 4).

Um dos grandes problemas do C++ a utilizao de ponteiros, responsveis por grandes erros lgicos e de sintaxe (ponteiros selvagens, por exemplo). A linguagem Java soluciona o problema dos ponteiros, deixando implcita sua implementao. As instncias de classe so implementadas via ponteiros, mas o programador no os enxerga. Anunciada pela Microsoft em junho de 2000, C# uma linguagem fortemente tipada (consiste os tipos utilizados pelo programador em seu cdigo, no permitindo, por exemplo que um inteiro do tipo int de 32 bits seja atribudo a um inteiro do tipo short de 16 bits). C# fundamentada na orientao a objetos, e desenvolvida para permitir mxima simplicidade, expressividade e performance em sua sintaxe.

Figura 4 Threads executando dentro de um mesmo processo [15]

12

A linguagem C# baseada na .NET Framework, uma plataforma de desenvolvimento que visa a integrao de diversas linguagens (C++, J#, Delphi, LabView, etc), atravs da utilizao de cdigo pr-compilado, a ser interpretado pela framework .NET. Isso significa que cdigo produzido em C++.NET ou em J# pode interagir com cdigo C# ou LabView.NET. A conseqncia uma maximizao do reaproveitamento de cdigo, uma das leis no paradigma da orientao a objetos. A sintaxe do C#, lembra Java e C++, linguagens em que foi baseada, e apresenta simplificaes quanto a elas, visando maior clareza e simplicidade, que tm como conseqncia maior produtividade e menor nmero de erros. Foi ento escolhida para a confeco do software a linguagem C#: por ser reconhecida e utilizada no mercado, suas qualidades quanto ao desenvolvimento de sistemas em orientao a objetos e disponibilidade de ambiente de desenvolvimento no laboratrio BioLab, onde o projeto realizado.
B. Mdulo de plotagem

A soluo deveria atender a requisitos de performance como flicker (quando a tela parece piscar durante o processo de rasterizao), gerenciamento de memria (no travar o programa durante a aquisio), tudo isso a uma alta taxa de amostragem do sinal (3 KHz aproximadamente). .

Figura 5 Exemplo de grfico na janela do controle ZedGraph

Abaixo, um exemplo de grfico cientfico utilizando a biblioteca gratuita NPlot.

Foram avaliadas diversas alternativas para a plotagem correta dos sinais biolgicos coletados para o sistema de qEEG. Dentre os mdulos encontrados durante a pesquisa, dois se destacaram: ZedGraph [24], e NPlot [25]. Os quesitos observados para a escolha das bibliotecas foi a implementao slida, fidelidade entre os dados fornecidos e mostrados na janela grfica, e gratuidade da soluo.
Figura 6 Exemplo de grfico na janela do controle NPlot

A plotagem de grficos usando NPlot segue um esquema bastante simples. O namespace NPlot fornece a interface IDrawable, e as classes que a implementam podem ser fornecidas ao controle PlotSurface2D, que herda das classes

13

System.Windows.Forms Framework.

nativas

da

.NET

Dentre as implementaes de IDrawable, h grficos de barras (histogramas), ponto a ponto, ligados por retas (LinePlot), e eixos em escala logartmica, por exemplo. Todas as
Figura 7 Plotagem do sinal codificado no NPlot

funcionalidades tornam a NPlot um candidato ideal para a implementao de um slido software cientfico. O cdigo abaixo, por exemplo, produz a sada mostrada na Figura 7.
// Cria a curva LinePlot lp = new LinePlot(); lp.DataSource = makeDaub(256); lp.Color = Color.Green; lp.Label = "Daubechies Wavelet"; // Grade da rea do grfico Grid myGrid = new Grid(); myGrid.VerticalGridType = Grid.GridType.Fine; myGrid.HorizontalGridType = Grid.GridType.Coarse; // Adiciona ao controle PlotSurface2D this.plotSurface.Add(myGrid); this.plotSurface.Add( lp ); this.plotSurface.Title = "Reversed / Upside down Daubechies Wavelet"; // Configurao dos eixos LinearAxis myAxis = new LinearAxis( this.plotSurface.YAxis1 ); myAxis.NumberOfSmallTicks = 2; this.plotSurface.YAxis1 = myAxis; this.plotSurface.XAxis1.WorldMax = 100.0f; this.plotSurface.PlotBackColor = Color.OldLace; this.plotSurface.XAxis1.Reversed = true; this.plotSurface.YAxis1.Reversed = true; // Atualiza o controle. this.plotSurface.Refresh(); C. Aquisio

A biblioteca de classes da .NET Framework disponibiliza primitivas de programao concorrente ao programador, que pode criar aplicaes com threads de execuo, cada uma designando uma parte do programa que deve executar concorrentemente com outras threads. Essa capacidade, conhecida como multithreading, est disponvel para todas as linguagens de programao .NET, inclusive C#, atravs do namespace System.Threading [14]. A parte de aquisio envolve a comunicao com o hardware de aquisio e a coleta de dados. Envolve ento classes para comunicao com o PIC atravs do DLP-2232M, e uma estrutura de dados que viabilize a coleta na taxa recebida sem perda de dados. Em C++.NET foi criada a biblioteca de funes para comunicao com o DLP-2232M baseada em documentao encontrada no stio do fabricante (http://www.dlpdesign.com). Em cincia da computao, buffer uma regio de memria temporria utilizada para escrita e leitura de dados. Os dados podem ser originados

14

de dispositivos (ou processos) externos ou internos ao sistema. Os buffers podem ser implementados em software ou hardware, mas a maioria deles implementada em software. Normalmente, os buffers so utilizados quando existe uma diferena entre a taxa em que os dados so recebidos e a taxa em que eles podem ser processados, ou no caso em que essas taxas so variveis.

do problema, e as conseqncias e o impacto de sua soluo. Patterns so dispositivos que permitem que os programas compartilhem conhecimento sobre o seu desenho. Quando se programa, so encontrados muitos problemas que ocorrem, ocorreram e iro ocorrer novamente. A questo que surge : como solucionar este problema desta vez? Documentar um padro (pattern) uma maneira de possibilitar a reusabilidade e possivelmente compartilhar informao que aprendida sobre a melhor maneira de se resolver um problema de desenho de software. Um catlogo de padres foi criado por 4 pessoas conhecidas como Gang of

Figura 8 Desenho esquemtico de um Buffer Circular

Buffer Circular um tipo de buffer onde os dados vo sendo inseridos seqencialmente em uma estrutura de dados de tamanho fixo (que pode ser uma lista, ou uma fila, por exemplo), e h dois ponteiros de leitura: um marca onde so lidos os dados; outro marca onde so inseridos. Os dados j lidos so descartados (os dados subseqentes ocupam seus lugares, para que novos dados sejam inseridos nas posies finais da estrutura de dados). A Figura 8 ilustra este processo. O ponteiro head aponta para onde os dados so lidos, o ponteiro tail, para onde so inseridos. Os Design Patterns so uma coleo de padres de desenho de software, que so solues para problemas conhecidos de e recorrentes Um no desenvolvimento

Four (GoF) e contm 23 padres basicamente, divididos em trs sees: creational (criacional), structural (estrutural) e behavioral (comportamental). Todos os padres criacionais (Creational) lidam com a melhor forma de se criar instncias dos objetos. Isto importante porque um programa no deveria depender de como os objetos so criados e arranjados. No entanto, isto torna a criao de objetos no seu programa um tanto quanto imalevel, inflexvel. Em muitos casos, a natureza dos objetos que so criados pode variar com as necessidades do programa e a abstrao do processo de criao de objetos para uma classe especial de "criao" pode fazer seu programa mais flexvel e geral. Dois dos padres criacionais foram utilizados para a modelagem da classe do gravador de PIC: Factory Method prov uma classe de deciso, na qual retorna uma das muitas possveis

software.

Pattern

descreve uma soluo comprovada para um problema de desenho recorrente, dando nfase particular no contexto e forando a aproximao

15

subclasses

de

uma

classe

base

abstrata,

Internamente na implementao das classes do gravador, o padro Factory Method usado para invocar a DLL adequada para a gravao de determinado PIC, em tempo de execuo decidindo sobre os tipos das classes envolvidas. Assim, obtm-se independncia de interface de gravao, seguindo o conceito da orientao a objeto, que prega a independncia entre diferentes.

dependendo do dado fornecido. No esquema da Figura 9, uma interface criada, ICommand. Esta fornece o modelo em que devem se basear classes de comandos de bancos de dados. As classes SQLCommand, OleDBCommand e OdbcCommand seguem o modelo e podem ser usadas como ICommand. Um possvel acesso a banco poderia ento ser realizado atravs de ICommand e qualquer uma de suas implementaes pode ser passada para a classe de acesso a banco. Em tempo de criao, o programador escolhe qual comando usar. Independente de sua escolha, o mtodo que pedir ICommand como parmetro, aceitar a classe escolhida, desde que implemente ICommand.

Figura 10 Esquema exemplo da fbrica abstrata

Em C#, cria-se uma thread atravs da classe Thread, passando para seu construtor um delegate
Figura 9 - Esquema exemplo de fbrica

do tipo ThreadStart e chamando o mtodo Start() da thread. A nova thread iniciar sua execuo assincronamente invocando o mtodo do delegate. Quando o mtodo retorna, a thread pra. Tambm pode-se chamar o mtodo Join() da thread, para fazer com que a mesma espere at que a thread passada como argumento termine. Por exemplo, o fragmento de programa a seguir executa o mtodo foo.A() e foo.B() em paralelo, e

Abstract Factory Method prov uma interface para se criar e retornar uma de muitas famlias de objetos relacionados [16]. No esquema mostrado na Figura 10, exemplificando o padro de projeto h uma Fbrica Abstrata DAQFactory, que modela a criao classes que implementam interfaces com diferentes tipos de sistemas de gerenciamento de bancos de dados, como Oracle, Sysbase e Cloudscape.

16

s termina quando os dois mtodos terminarem de executar: Thread t=newThread(new ThreadStart(foo.A)); t.Start(); foo.B(); t.Join(); VI. MDULO DE AQUISIO (HARDWARE) A aquisio dos dados via porta USB pode ser realizada atravs de um dispositivo DLP2232-M ligado a um PIC16F877, que j possui conversor AD. O desenho esquemtico criado no OrCad 9.2, ilustrando a ligao como mostrado na Figura 11. O cristal do circuito funciona a uma freqncia de 20 MHz.

Uma verso mais refinada do hardware de aquisio foi confeccionada no laboratrio, usando o mdulo da Figura 11. VII. RESULTADOS OBTIDOS Para a plotagem, aps a realizao dos testes, NPlot foi a biblioteca escolhida, pois apresentou melhores resultados em testes com elevada quantidade de dados, fornecido pelo Buffer Circular O namespace FastPlot com as classes Sinal e Scope foram implementados para a definio do mdulo de plotagem. A classe FastPlot.Scope consiste em um controle do NPlot, onde foram feitas melhorias quanto performance. A classe FastPlot.Sinal mantm os dados a serem plotados. Um dos problemas na plotagem de grficos na tela do computador que trabalhamos com pixels. Quando os pontos so plotados, ocorre uma transformao de suas coordenadas (coordenadas de mundo para coordenadas fsicas, ou, as coordenadas da tela). No h tantos pixels na tela quanto h unidades no eixo real, ento, no processo de transformao das coordenadas dos pontos, pode ocorrer de vrios pontos carem no mesmo pixel. Se por

Figura 11 Diagrama esquemtico da ligao DLP2232-M e PIC16F877

exemplo, mais de 10 pontos caem na mesma coordenada de pixel horizontal, e o que ocorre a sobreposio de traos. Tempo de processamento e memria podem ser economizados se o processo de plotagem for otimizado. Com apenas 4 pontos por pixel, consegue-se o mesmo resultado que se forem plotados mais pontos/pixel. Os 4 pontos pontos representam no

A recepo e transmisso de dados do DLP2232-M pode ser realizada via software em C# atravs de biblioteca fornecida pelo fabricante. O conversor AD do PIC, ser utilizado para a conexo com os outros mdulos de hardware que realizaro a aquisio do sinal no paciente.

17

caso, o primeiro ponto (onde o grfico chega na coordenada de pixel horizontal), os pontos de mximo e de mnimo em cada coordenada, e o ponto por onde o grfico deixa a coordenada (ltimo ponto). Foi implementado ento, um algoritmo de seleo de pontos para plotagem, de forma a manter a taxa 4 pontos/pixel horizontal e preservar o grfico sem perda de qualidade. O algoritmo do cdigo consiste em:
1) Transformar as coordenadas a serem plotadas para coordenadas fsicas; 2) Dentre as coordenadas que carem na mesma coordenada de pixel horizontal, selecionar os 4 pontos importantes: primeiro, mximo, mnimo e ltimo; 3) Montar nova lista de pontos com os pontos a serem plotados.

A comunicao com o hardware (DLP2232-M ligado ao PIC16F877 foi realizada com sucesso atravs do software de teste do fabricante, mostrado na figura 10. O namespace desenvolvido para fornecer a funcionalidade de gravar e ler o PIC permite que o sistema de aquisio em desenvolvimento torne-se verstil em termos de independncia do PIC e do sistema de interfaceamento PIC / PC.

Figura 13 Software de teste do DLP2232-M

Trabalhando com ndices (valores int) de arrays em vez de valores em ponto flututante, o algoritmo consegue ser bem sucedido no quesito performance e apresenta resultados satisfatrios, mantendo o mesmo grfico, com nmero reduzido de pontos. A figura 4 mostra um comparativo entre o resultado de plotagem com o algoritmo de seleo ( esquerda) e com todos os pontos (sem refinamento direita).

Uma biblioteca de classes, consistindo de uma classe para gravar e ler dados de um microcontrolador PIC, estrutura de dados baseada em buffer circular, e classes Wrapper para encapsular a comunicao com o mdulo DLP2232M foi criada. O Buffer 1 da Figura 2 implementado como um Buffer Circular, em uma classe BufferCircular, sob o namespace Biolab.Collections. A Figura 4 mostra o diagrama de classe para o Circular Buffer. As classes de excees fornecem tratamento de erro para a classe BufferCircular, identificando o um limite de tempo excedido para que uma operao ocorra (estipulado pelo usurio) e uma exceo para indicar que o Buffer est vazio.

Figura 12 Esquerda: grfico plotado com seleo de pontos, ireita: grfico plotado sem algoritmo de seleo de pontos

18

classe

GravadorDLP

herda

da

classe
Abstract Class

GravadorPIC18FXX2 todos os mtodos que deve implementar, conforme ilustrado na Figura 14 a seguir. Foram implementados diversos mdulos de teste para as classes desenvolvidas. Em um estgio ainda inicial, o software simples ProducerConsumer testa classes e threading em C#, utilizando a classe FastScope definida .
Buffer
Class

GravadorDLP
Class GravadorPic18FXX2

Figura 15 classes do Gravador de PIC

Consumer
Class

Fields available buffer Properties Bufferx

Fields acc buffer random text Methods Consume Consumer

Form1
Class Form

Producer
Class

Fields

Fields buffer random Methods Produce Producer

Figura 14 Classe BufferCircular e suas classes de Exceptions

button1 components textBox1 Methods button1_Click Dispose Form1 InitializeCompon Main

O programa ProducerConsumer explora uma bsica implementao de threading em C#, com duas classes, Producer (simulando a fonte de dados, ou o sistema de aquisio) e Consumer (explorando plotagem ou anlise dos dados coletados).

Figura 16 ProducerConsumer

Utilizando

implementao

prpria

para

plotagem da FFT, o software Relchment realiza a captura de sinal pelo mdulo desenvolvido em paralelo ao software, e mostragem via NPlot. Os

19

buffers so implementados de maneira diferente, entretanto. VIII. DISCUSSES Apesar do grande avano que as tcnicas de EEG quantitativo vem alcanando, sua aplicao contnua considerada limitada, por no ser diagnstica. Diversas ferramentas para a anlise do qEEG tm sido desenvolvidas atravs de tcnicas matemticas domnios do que manipulam os dados e em tempo, freqncia tempo

de mtodos e uma listagem oficial de quais artefatos remover. Quanto aos mdulos estudados e trabalhos realizados, foi possvel concluir que, conhecendo o funcionamento do hardware do computador e sistema de vdeo, possvel mostrar o mesmo grfico com nmero de pontos bastante reduzido. O conhecimento da limitao do hardware possibilitou a elaborao do algoritmo de seleo de pontos baseado no nmero de pixels na tela. Os conhecimentos adquiridos com a linguagem C# viabilizaram a construo de vrias partes do mdulo de aquisio, incluindo estrutura de dados para gerenciar coleta de dados, Buffer Circular, e classes para comunicao com o hardware. De grande valia tambm sero os conhecimentos e maturidade em desenvolvimento de software desenvolvidos para a etapa final do projeto que se inicia em agosto/2006 com padres de projeto, e a linguagem escolhida. A confeco do mdulo de aquisio e futura conexo com o mdulo de plotagem esto em desenvolvimento. Testes com fidelidade a taxas de aquisio ainda devem ser realizados, entretanto, em laboratrio, o buffer do mdulo DLP-2232M em conjunto com o BufferCircular demonstrou conseguir aquisicionar dados a taxas fiis. Mais testes devero ser realizados para publicao. AGRADECIMENTOS Ao aluno do Laboratrio de Engenharia Biomdica da FEELT/UFU, Thiago Finotti de

freqncia. Cada domnio favorece a anlise de um aspecto do sinal, e encontra aplicao em um campo, como o do diagnstico de crises epilpticas atravs da deteco de picos (crises). A deteco de picos no sinal qEEG tambm envolve o desenvolvimento de algoritmos computacionais. A definio formal de pico ainda um tanto quanto nebulosa. O que muito se discute a limitao de tais algoritmos, que, por uma falta de definio especfica, no identificam alguns picos ou encontram picos inexistentes. Apesar disso, esses algoritmos facilitam o trabalho de anlise dos especialistas, ainda indispensvel no diagnstico. Artefatos constituem outro grande problema dos sistemas de qEEG. Diversos mtodos para identificao e remoo de artefatos, via hardware como filtros digitais, e via software como anlise computacional (FFT) foram propostos. Embora obtenham relativo sucesso na remoo da maioria dos artefatos, ainda no existe uma padronizao

20

Moraes, pela dedicao na construo do hardware do projeto de qEEG. Ao aluno de mestrado do Biolab, Ailton, por todo o trabalho duro ao desenvolver as bibliotecas de software. Aos colegas do laboratrio de engenharia biomdica Biolab, da FEELT/UFU, pela ajuda em pesquisa e desenvolvimento. Ao Prof. Joo Batista Destro do corpo docente da FEELT/UFU, pela orientao na pesquisa sobre artifacting e qEEG. Priscila Crisfir Almeida Diniz, pelo apoio e motivao em todas as etapas do projeto. REFERNCIAS BIBLIOGRFICAS 1. CARDOSO, R, R, "Uma estratgia para modelagem tridimensional para mapeamento de EEG de superfcie", Tese de Mestrado, Brazil, Universidade Federal de Uberlndia, June 2005. 2. NITISH, V, T, TONG, S, "Advances in Quantitative Electroencephalogram Analysis Methods", Annu. Rev. Biomed. Eng, April 2004. 3. MACHADO, D, BASTOS, V, H, CUNHA, M et al. Effects of Bromazepam in qEEG by typingwriting, Arq. Neuro-Psiquiatr., Vol. 63, No 2b, June 2005, p. 452-458. 4. GEOCADIN, R, G, GHODADRA, R, KIMURA, T et al. A novel quantitative EEG injury measure of global cerebral ischemia, Clinical Neurophysiology, June 2000. 5. BIO-MEDICAL INSTRUMENTS INC.. EEG or electroencephalography. Disponvel em: <http://www.biomedical.com/news_display.cfm?mode=EEG& newsid=5>. Acesso em: 13 out. 2005. 6. WILSON, S, B, EMERSON, R, Spike detection: a review and comparison of algorithms, Clinical Neurophysiology, No. 113, August 2002.

7. KURTH, C, GILLIAM, F, STEINHOFF, B, J, EEG Spike Detection With a Kohonen Feature Map, Annals of Biomedical Engineering, Vol. 28, October 2000, pp. 13621369. 8. AMERICAN ACADEMY OF NEUROLOGY, Assesment of digital EEG, quantitative EEG, and EEG brain mapping, Neurology, 49, 1997, pp. 277-292. 9. TORELLO, M. .Topographic mapping of EEG and evoked potentials in psychiatry: Delusions, illusions, and realities. Brain Topography, 1, 157-174. 10. JERVIS, B, W., COELHO, M., Morgan, G, W. Spectral analysis of EEG responses. Medical and Biological Engineering and Computing, 27, 230-238. 11. LAWSON, J, S, GALIN, H, ADAMS, S, J et al. Artefacting reliability in QEEG topographic maps, Clinical Neurophysiology, Vol. 114, Issue 5, May 2003, pp. 883-888. 12. WU, J, Ifeachor, E, c, Allen, E, M, et al. Inteligent artefact identification in electroencephalography signal processing, IEE Proc.-Sci. Meas. Technol.. Vol. 144, No. 5, September 1997. 13. VIGON, L, SAATCHI, M, R, MAYHEW, J, E, W, et al. Quantitative evaluation of techniques for ocular artifact, IEE Proc -Sei. Metis Terclinol., Vol. 147. No. 5, September 2000 14. DEITEL, H, M, DEITEL, P, J, LITSFIELD, J, A et all, C#: How to program, Prentice Hall, (December 14, 2001). 15. MARTINS, M. D. C. Programao Concorrente, Apostila Aula 1, http://www.dc.ufscar.br/~mdchiodi/Programac aoConcorrente/Pc.html, acessado em 29/07/2006. 16. DESTRO, D.. Implementando Design Patterns com Java. Disponvel em: <http://www.guj.com.br/user.article.get.chain? article.id=137&page=1>. Acesso em: 29 jul. 2006. 17. BOSCH, P.. A begginers guide to threading in C#. Disponvel em:

21

<http://builder.com.com/5100-63731044970.html>. Acesso em: 29 jul. 2006. 18. CHAND, Mahesh. Creating your first multithreading application. Disponvel em: <http://www.csharpcorner.com/2/mt_beginner1.asp>. Acesso em: 10 jul. 2006. 19. WICKRAMANAYAKE, I.. Graphical C# Thread Example. Disponvel em: <http://www.csharphelp.com/archives2/archive 397.html>. Acesso em: 28 jul. 2006. 20. BIRREL, A. D.. An introduction to programming with C# threads. Disponvel em: <http://www.only4gurus.net/microsoft/threads csharp.pdf>. Acesso em: 28 jul. 2006. 21. HINRICHS, R.. Circular Buffer. Disponvel em: <http://www.codeproject.com/csharp/circularb uffer.asp>. Acesso em: 28 jul. 2006. 22. COOKE, S.. The Bip Buffer The circular buffer with a twist. Disponvel em: <http://www.codeproject.com/internet/bipbuffe r.asp>. Acesso em: 27 jul. 2006.. 23. WIKIPEDIA. Programao concorrente. Disponvel em: <http://pt.wikipedia.org/wiki/Programa%C3% A7%C3%A3o_concorrente>. Acesso em: 29 jul. 2006. 24. ZEDGRAPHWIKI. ZedGraph. Disponvel em: <http://zedgraph.org/wiki/index.php?title=Mai n_Page>. Acesso em: 29 jul. 2006. 25. MATT HOWLETT. NPlot. Disponvel em: <http://netcontrols.org/nplot/wiki/index.php?n =Main.HomePage>. Acesso em: 29 jul. 2006.

Você também pode gostar