Processamento de imagem digital -Digital image processing

O processamento digital de imagens é o uso de um computador digital para processar imagens digitais por meio de um algoritmo . Como uma subcategoria ou campo de processamento de sinal digital, o processamento de imagem digital tem muitas vantagens sobre o processamento de imagem analógico . Ele permite que uma gama muito maior de algoritmos seja aplicada aos dados de entrada e pode evitar problemas como o acúmulo de ruído e distorção durante o processamento. Como as imagens são definidas em duas dimensões (talvez mais), o processamento digital de imagens pode ser modelado na forma de sistemas multidimensionais. A geração e o desenvolvimento do processamento digital de imagens são afetados principalmente por três fatores: primeiro, o desenvolvimento dos computadores; segundo, o desenvolvimento da matemática (especialmente a criação e aperfeiçoamento da teoria da matemática discreta); terceiro, a demanda por uma ampla gama de aplicações em meio ambiente, agricultura, militar, indústria e ciências médicas aumentou.

História

Muitas das técnicas de processamento digital de imagens , ou processamento digital de imagens, como muitas vezes era chamado, foram desenvolvidas na década de 1960, nos Laboratórios Bell, no Laboratório de Propulsão a Jato , no Instituto de Tecnologia de Massachusetts , na Universidade de Maryland e em algumas outras instalações de pesquisa, com aplicação para imagens de satélite , conversão de padrões de foto com fio , imagens médicas , videofone , reconhecimento de caracteres e aprimoramento de fotografia. O objetivo do processamento de imagem inicial era melhorar a qualidade da imagem. Destinava-se a seres humanos para melhorar o efeito visual das pessoas. No processamento de imagem, a entrada é uma imagem de baixa qualidade e a saída é uma imagem com qualidade melhorada. O processamento de imagem comum inclui aprimoramento, restauração, codificação e compactação de imagem. A primeira aplicação bem-sucedida foi o American Jet Propulsion Laboratory (JPL). Eles usaram técnicas de processamento de imagem como correção geométrica, transformação de gradação, remoção de ruído, etc. nas milhares de fotos lunares enviadas pelo Space Detector Ranger 7 em 1964, levando em consideração a posição do sol e o ambiente da lua. O impacto do mapeamento bem-sucedido do mapa da superfície da lua pelo computador foi um enorme sucesso. Mais tarde, um processamento de imagem mais complexo foi realizado nas cerca de 100.000 fotos enviadas de volta pela espaçonave, de modo que foram obtidos o mapa topográfico, o mapa de cores e o mosaico panorâmico da lua, que alcançaram resultados extraordinários e estabeleceram uma base sólida para o pouso humano na Lua. lua.

O custo de processamento era bastante alto, no entanto, com o equipamento de computação daquela época. Isso mudou na década de 1970, quando o processamento digital de imagens proliferou à medida que computadores mais baratos e hardware dedicado se tornaram disponíveis. Isso fez com que as imagens fossem processadas em tempo real, para alguns problemas dedicados, como conversão de padrões de televisão . À medida que os computadores de uso geral se tornaram mais rápidos, eles começaram a assumir o papel de hardware dedicado para todas as operações, exceto as mais especializadas e com uso intensivo de computadores. Com os computadores rápidos e os processadores de sinal disponíveis na década de 2000, o processamento digital de imagens tornou-se a forma mais comum de processamento de imagens e geralmente é usado porque não é apenas o método mais versátil, mas também o mais barato.

Sensores de imagem

A base para os sensores de imagem modernos é a tecnologia de semicondutores de óxido de metal (MOS), que se originou da invenção do MOSFET (transistor de efeito de campo MOS) por Mohamed M. Atalla e Dawon Kahng nos Laboratórios Bell em 1959. desenvolvimento de sensores de imagem semicondutores digitais , incluindo o dispositivo de carga acoplada (CCD) e posteriormente o sensor CMOS .

O dispositivo de carga acoplada foi inventado por Willard S. Boyle e George E. Smith nos Laboratórios Bell em 1969. Enquanto pesquisavam a tecnologia MOS, eles perceberam que uma carga elétrica era a analogia da bolha magnética e que poderia ser armazenada em um minúsculo Capacitor MOS . Como era bastante simples fabricar uma série de capacitores MOS em sequência, eles conectaram uma voltagem adequada a eles para que a carga pudesse passar de um para o outro. O CCD é um circuito semicondutor que mais tarde foi utilizado nas primeiras câmeras de vídeo digitais para transmissão de televisão .

O sensor de pixel ativo NMOS (APS) foi inventado pela Olympus no Japão em meados da década de 1980. Isso foi possibilitado pelos avanços na fabricação de dispositivos semicondutores MOS , com o dimensionamento MOSFET atingindo níveis menores de mícrons e sub-mícrons . O NMOS APS foi fabricado pela equipe de Tsutomu Nakamura na Olympus em 1985. O sensor CMOS de pixel ativo (sensor CMOS) foi posteriormente desenvolvido pela equipe de Eric Fossum no Laboratório de Propulsão a Jato da NASA em 1993. Em 2007, as vendas de sensores CMOS haviam superou os sensores CCD.

Compressão de imagem

Um importante desenvolvimento na tecnologia de compressão de imagem digital foi a transformação discreta de cosseno (DCT), uma técnica de compressão com perdas proposta pela primeira vez por Nasir Ahmed em 1972. A compressão DCT tornou-se a base para JPEG , que foi introduzida pelo Joint Photographic Experts Group em 1992. JPEG compacta imagens em tamanhos de arquivo muito menores e se tornou o formato de arquivo de imagem mais usado na Internet . Seu algoritmo de compressão DCT altamente eficiente foi o grande responsável pela ampla proliferação de imagens digitais e fotos digitais , com vários bilhões de imagens JPEG produzidas todos os dias a partir de 2015.

Processador de sinal digital (DSP)

O processamento eletrônico de sinais foi revolucionado pela ampla adoção da tecnologia MOS na década de 1970. A tecnologia de circuito integrado MOS foi a base para os primeiros microprocessadores e microcontroladores de chip único no início da década de 1970 e, em seguida, os primeiros chips de processador de sinal digital (DSP) de chip único no final da década de 1970. Os chips DSP têm sido amplamente utilizados no processamento de imagens digitais.

O algoritmo de compressão de imagem de transformação discreta de cosseno (DCT) foi amplamente implementado em chips DSP, com muitas empresas desenvolvendo chips DSP baseados na tecnologia DCT. Os DCTs são amplamente utilizados para codificação , decodificação, codificação de vídeo, codificação de áudio , multiplexação , sinais de controle, sinalização , conversão analógico-digital , luminância de formatação e diferenças de cor e formatos de cores como YUV444 e YUV411 . As DCTs também são usadas para operações de codificação, como estimativa de movimento, compensação de movimento , previsão entre quadros , quantização , ponderação perceptual, codificação de entropia, codificação de variável e vetores de movimento e operações de decodificação, como a operação inversa entre diferentes formatos de cores ( YIQ , YUV e RGB ) para fins de exibição. DCTs também são comumente usados ​​para chips codificadores/decodificadores de televisão de alta definição (HDTV).

Imagens médicas

Em 1972, o engenheiro da empresa britânica EMI Housfield inventou o aparelho de tomografia computadorizada de raios X para diagnóstico da cabeça, que é o que se costuma chamar de TC (tomografia computadorizada). O método do núcleo de TC é baseado na projeção da seção da cabeça humana e é processado por computador para reconstruir a imagem em corte transversal, que é chamada de reconstrução de imagem. Em 1975, a EMI desenvolveu com sucesso um aparelho de TC para todo o corpo, que obteve uma imagem tomográfica clara de várias partes do corpo humano. Em 1979, esta técnica de diagnóstico ganhou o Prêmio Nobel. A tecnologia de processamento de imagem digital para aplicações médicas foi introduzida no Hall da Fama da Tecnologia Espacial da Fundação Espacial em 1994.

Tarefas

O processamento digital de imagens permite o uso de algoritmos muito mais complexos e, portanto, pode oferecer tanto um desempenho mais sofisticado em tarefas simples, quanto a implementação de métodos que seriam impossíveis por meios analógicos.

Em particular, o processamento digital de imagens é uma aplicação concreta e uma tecnologia prática baseada em:

Algumas técnicas que são usadas no processamento digital de imagens incluem:

Transformações da imagem digital

Filtrando

Os filtros digitais são usados ​​para desfocar e tornar as imagens digitais mais nítidas. A filtragem pode ser realizada por:

  • convolução com kernels especificamente projetados (filtro array) no domínio espacial
  • mascarar regiões de frequência específicas no domínio de frequência (Fourier)

Os exemplos a seguir mostram os dois métodos:

Tipo de filtro Kernel ou máscara Exemplo
Imagem original Transformação Afim Original Checkerboard.jpg
Passa-baixa espacial Filtro de Média Espacial Checkerboard.png
Passa-alta espacial Filtro Espacial Laplaciano Checkerboard.png
Representação de Fourier Pseudo-código:

imagem = tabuleiro de damas

F = Transformada de Fourier da imagem

Mostrar imagem: log(1+Valor Absoluto(F))

Fourier Space Checkerboard.png
Passa-baixa de Fourier Lowpass Butterworth Checkerboard.png Lowpass FFT filtrado checkerboard.png
Passa-alta de Fourier Highpass Butterworth Checkerboard.png Highpass FFT Filtrado checkerboard.png

Preenchimento de imagem na filtragem de domínio Fourier

As imagens são normalmente preenchidas antes de serem transformadas no espaço de Fourier, as imagens filtradas passa -altas abaixo ilustram as consequências de diferentes técnicas de preenchimento:

Zero acolchoado Borda repetida acolchoada
Highpass FFT Filtrado checkerboard.png Highpass FFT Replicate.png

Observe que o filtro passa-alta mostra bordas extras quando preenchido com zero em comparação com o preenchimento de borda repetido.

Filtrando exemplos de código

Exemplo MATLAB para filtragem highpass de domínio espacial.

img=checkerboard(20);                           % generate checkerboard
% **************************  SPATIAL DOMAIN  ***************************
klaplace=[0 -1 0; -1 5 -1;  0 -1 0];             % Laplacian filter kernel
X=conv2(img,klaplace);                          % convolve test img with
                                                % 3x3 Laplacian kernel
figure()
imshow(X,[])                                    % show Laplacian filtered
title('Laplacian Edge Detection')

Transformações afins

As transformações afins permitem transformações básicas de imagem, incluindo dimensionamento, rotação, translação, espelhamento e cisalhamento, conforme mostrado nos exemplos a seguir:

Nome da transformação Matriz Afim Exemplo
Identidade Identidade do tabuleiro de damas.svg
Reflexão Reflexão do tabuleiro de damas.svg
Régua Escala do tabuleiro de damas.svg
Girar Rotação do tabuleiro de damas.svgonde θ = π/6=30°
Cisalhamento Checkerboard shear.svg

Para aplicar a matriz afim a uma imagem, a imagem é convertida em matriz na qual cada entrada corresponde à intensidade do pixel naquele local. Então a localização de cada pixel pode ser representada como um vetor indicando as coordenadas daquele pixel na imagem, [x, y], onde xey são a linha e a coluna de um pixel na matriz da imagem. Isso permite que a coordenada seja multiplicada por uma matriz de transformação afim, que fornece a posição em que o valor do pixel será copiado na imagem de saída.

No entanto, para permitir transformações que requerem transformações de translação, são necessárias coordenadas homogêneas tridimensionais . A terceira dimensão geralmente é definida como uma constante diferente de zero, geralmente 1, para que a nova coordenada seja [x, y, 1]. Isso permite que o vetor de coordenadas seja multiplicado por uma matriz 3 por 3, permitindo deslocamentos de translação. Assim, a terceira dimensão, que é a constante 1, permite a tradução.

Como a multiplicação de matrizes é associativa, várias transformações afins podem ser combinadas em uma única transformação afim multiplicando a matriz de cada transformação individual na ordem em que as transformações são feitas. Isso resulta em uma única matriz que, quando aplicada a um vetor de ponto, dá o mesmo resultado que todas as transformações individuais realizadas no vetor [x, y, 1] em sequência. Assim, uma sequência de matrizes de transformação afins pode ser reduzida a uma única matriz de transformação afim.

Por exemplo, as coordenadas bidimensionais só permitem rotação em torno da origem (0, 0). Mas as coordenadas homogêneas tridimensionais podem ser usadas para primeiro traduzir qualquer ponto para (0, 0), depois realizar a rotação e, por último, traduzir a origem (0, 0) de volta ao ponto original (o oposto da primeira tradução). Essas 3 transformações afins podem ser combinadas em uma única matriz, permitindo assim a rotação em torno de qualquer ponto da imagem.

Denoising de imagem com morfologia

A morfologia matemática é adequada para imagens sem ruído. Os elementos estruturantes são importantes na morfologia matemática .

Os exemplos a seguir são sobre elementos estruturantes. A função denoise, imagem como I e elemento estruturante como B são mostrados abaixo e na tabela.

por exemplo

Defina Dilatação(I,B)(i,j) = . Seja Dilatação(I,B) = D(I,B)

D(I', B)(1,1) =

Defina Erosão(I, B)(i,j) = . Seja Erosão(I,B) = E(I,B)

E(I', B)(1,1) =

Após dilatação Após erosão

Um método de abertura é simplesmente a erosão primeiro e depois a dilatação, enquanto o método de fechamento é vice-versa. Na realidade, o D(I,B) e E(I,B) podem ser implementados por Convolution

Elemento estruturante mascarar Código Exemplo
Imagem original Nenhum Use o Matlab para ler a imagem original
original = imread('scene.jpg');
image = rgb2gray(original);
[r, c, channel] = size(image);
se = logical([1 1 1 ; 1 1 1 ; 1 1 1]);
[p, q] = size(se);
halfH = floor(p/2);
halfW = floor(q/2);
time = 3;           % denoising 3 times with all method
Lótus original
Dilatação Use Matlab para dilatação
imwrite(image, "scene_dil.jpg")
extractmax = zeros(size(image), class(image));
for i = 1 : time
    dil_image = imread('scene_dil.jpg');
    for col = (halfW + 1): (c - halfW)
        for row = (halfH + 1) : (r - halfH)
            dpointD = row - halfH;
            dpointU = row + halfH;
            dpointL = col - halfW;
            dpointR = col + halfW;
            dneighbor = dil_image(dpointD:dpointU, dpointL:dpointR);
            filter = dneighbor(se);
            extractmax(row, col) = max(filter);
        end
    end
    imwrite(extractmax, "scene_dil.jpg");
end
Denoising imagem com método de dilatação
Erosão Use Matlab para erosão
imwrite(image, 'scene_ero.jpg');
extractmin = zeros(size(image), class(image));
for i = 1: time
    ero_image = imread('scene_ero.jpg');
    for col = (halfW + 1): (c - halfW)
        for row = (halfH +1): (r -halfH)
            pointDown = row-halfH;
            pointUp = row+halfH;
            pointLeft = col-halfW;
            pointRight = col+halfW;
            neighbor = ero_image(pointDown:pointUp,pointLeft:pointRight);
            filter = neighbor(se);
            extractmin(row, col) = min(filter);
        end
    end
    imwrite(extractmin, "scene_ero.jpg");
end
Erosão livre de lótus.jpg
Abertura Use o Matlab para abrir
imwrite(extractmin, "scene_opening.jpg")
extractopen = zeros(size(image), class(image));
for i = 1 : time
    dil_image = imread('scene_opening.jpg');
    for col = (halfW + 1): (c - halfW)
        for row = (halfH + 1) : (r - halfH)
            dpointD = row - halfH;
            dpointU = row + halfH;
            dpointL = col - halfW;
            dpointR = col + halfW;
            dneighbor = dil_image(dpointD:dpointU, dpointL:dpointR);
            filter = dneighbor(se);
            extractopen(row, col) = max(filter);
        end
    end
    imwrite(extractopen, "scene_opening.jpg");
end
Lotus abrindo grátis.jpg
Fechamento Use o Matlab para fechar
imwrite(extractmax, "scene_closing.jpg")
extractclose = zeros(size(image), class(image));
for i = 1 : time
    ero_image = imread('scene_closing.jpg');
    for col = (halfW + 1): (c - halfW)
        for row = (halfH + 1) : (r - halfH)
            dpointD = row - halfH;
            dpointU = row + halfH;
            dpointL = col - halfW;
            dpointR = col + halfW;
            dneighbor = ero_image(dpointD:dpointU, dpointL:dpointR);
            filter = dneighbor(se);
            extractclose(row, col) = min(filter);
        end
    end
    imwrite(extractclose, "scene_closing.jpg");
end
Denoising imagem com método de fechamento

Para aplicar o método de remoção de ruído a uma imagem, a imagem é convertida em escala de cinza. Uma máscara com método de redução de ruído é uma matriz lógica com . Os métodos de redução de ruído começam no centro da imagem com metade da altura, metade da largura e terminam com o limite da imagem do número da linha, número da coluna. Vizinho é um bloco na imagem original com o limite [o ponto abaixo do centro: o ponto acima, o ponto à esquerda do centro: o ponto à direita do centro]. Convolução Vizinho e elemento estruturante e, em seguida, substituir o centro por um mínimo de vizinho.

Tome o método de fechamento por exemplo.

Dilatação primeiro

  1. Leia a imagem e converta-a em tons de cinza com o Matlab.
    1. Obter o tamanho de uma imagem. Os números de linha e de coluna do valor de retorno são os limites que usaremos mais tarde.
    2. elementos estruturantes dependem da sua função de dilatação ou erosão. O mínimo do vizinho de um pixel leva a um método de erosão e o máximo de vizinho leva a um método de dilatação.
    3. Defina o tempo para dilatação, erosão e fechamento.
  2. Crie uma matriz zero do mesmo tamanho que a imagem original.
  3. Dilatação primeiro com janela de estruturação.
    1. janela de estruturação é 3*3 matriz e convolução
    2. Para loop, extraia o mínimo com janela do intervalo de linhas [2 ~ altura da imagem - 1] com intervalo de coluna [2 ~ largura da imagem - 1]
  4. Preencha o valor mínimo para a matriz zero e salve uma nova imagem
    1. Para o limite, ainda pode ser melhorado. Como no método, um limite é ignorado. Elementos de preenchimento podem ser aplicados para lidar com limites.

Então Erosion (Tome a imagem de dilatação como entrada)

  1. Crie uma matriz zero do mesmo tamanho que a imagem original.
  2. Erosão com janela estruturante.
    1. janela de estruturação é 3*3 matriz e convolução
    2. Para loop, extraia o máximo com janela do intervalo de linhas [2 ~ altura da imagem - 1] com intervalo de coluna [2 ~ largura da imagem - 1]
  3. Preencha o valor máximo para a matriz zero e salve uma nova imagem
    1. Para o limite, ainda pode ser melhorado. Como no método, o limite é ignorado. Elementos de preenchimento podem ser aplicados para lidar com limites.
  4. Os resultados são como a tabela acima mostrada

Formulários

Imagens de câmeras digitais

As câmeras digitais geralmente incluem hardware de processamento de imagem digital especializado – chips dedicados ou circuitos adicionados em outros chips – para converter os dados brutos de seu sensor de imagem em uma imagem com correção de cor em um formato de arquivo de imagem padrão . Técnicas adicionais de pós-processamento aumentam a nitidez das bordas ou a saturação da cor para criar imagens com aparência mais natural.

Filme

Westworld (1973) foi o primeiro longa-metragem a usar o processamento digital de imagens para pixelizar a fotografia para simular o ponto de vista de um andróide. O processamento de imagem também é amplamente utilizado para produzir o efeito chroma key que substitui o fundo dos atores por cenários naturais ou artísticos.

Detecção de rosto

Processo de detecção de rosto

A detecção de face pode ser implementada com morfologia matemática , transformada discreta de cosseno , que geralmente é chamada de DCT, e projeção horizontal (matemática) .

Método geral com método baseado em recursos

O método de detecção de rosto baseado em recursos usa tom de pele, detecção de borda, formato de rosto e características de um rosto (como olhos, boca etc.) para obter a detecção de rosto. O tom de pele, o formato do rosto e todos os elementos únicos que só o rosto humano possui podem ser descritos como características.

Explicação do processo

  1. Dado um lote de imagens de rosto, primeiro extraia o intervalo de tons de pele por amostragem de imagens de rosto. A gama de tons de pele é apenas um filtro de pele.
    1. A medida do índice de similaridade estrutural (SSIM) pode ser aplicada para comparar imagens em termos de extração do tom de pele.
    2. Normalmente, os espaços de cores HSV ou RGB são adequados para o filtro de pele. Por exemplo, modo HSV, a faixa de tom de pele é [0,48,50] ~ [20,255,255]
  2. Depois de filtrar as imagens com tom de pele, para obter a borda da face, a morfologia e o DCT são usados ​​para remover ruídos e preencher áreas de pele ausentes.
    1. O método de abertura ou o método de fechamento podem ser usados ​​para preencher a pele ausente.
    2. DCT é evitar o objeto com pele parecida com tom. Já que os rostos humanos sempre têm textura mais alta.
    3. O operador Sobel ou outros operadores podem ser aplicados para detectar a borda da face.
  3. Para posicionar recursos humanos como olhos, usar a projeção e encontrar o pico do histograma de projeção ajuda a obter o recurso de detalhes como mouse, cabelo e lábio.
    1. A projeção é apenas projetar a imagem para ver a alta frequência que geralmente é a posição do recurso.

Melhoria do método de qualidade de imagem

A qualidade da imagem pode ser influenciada pela vibração da câmera, superexposição , distribuição de níveis de cinza muito centralizada e ruído, etc.

Método de suavização

No desenho, se houver alguma cor insatisfeita, tomar alguma cor em torno da cor insatisfeita e fazer a média. Esta é uma maneira fácil de pensar no método de suavização.

O método de suavização pode ser implementado com mask e Convolution . Pegue a pequena imagem e máscara, por exemplo, como abaixo.

imagem é

máscara é

Após a convolução e suavização, a imagem é

Observando imagem[1, 1], imagem[1, 2], imagem[2, 1] e imagem[2, 2].

O pixel da imagem original é 1, 4, 28, 30. Após a máscara de suavização, o pixel se torna 9, 10, 9, 9 respectivamente.

nova imagem[1, 1] = * (imagem[0,0]+imagem[0,1]+imagem[0,2]+imagem[1,0]+imagem[1,1]+imagem[1,2 ]+imagem[2,0]+imagem[2,1]+imagem[2,2])

nova imagem[1, 1] = andar( * (2+5+6+3+1+4+1+28+30)) = 9

nova imagem[1, 2] = andar({ * (5+6+5+1+4+6+28+30+2)) = 10

nova imagem[2, 1] = andar( * (3+1+4+1+28+30+73+3+2)) = 9

nova imagem[2, 2] = andar( * (1+4+6+28+30+2+3+2+2)) = 9

Método de histograma de nível de cinza

Geralmente, dado um histograma de nível de cinza de uma imagem como abaixo. Alterar o histograma para uma distribuição uniforme de uma imagem geralmente é o que chamamos de equalização do histograma .

figura 1
Figura 2

Em tempo discreto, a área do histograma de nível de cinza é (veja a figura 1) enquanto a área de distribuição uniforme é (veja a figura 2). É claro que a área não vai mudar, então .

Da distribuição uniforme, a probabilidade de é enquanto a

Em tempo contínuo, a equação é .

Além disso, com base na definição de uma função, o método do histograma do nível de Gray é como encontrar uma função que satisfaça f(p)=q.

Método de melhoria Questão Antes da melhoria Processar Após a melhoria
Método de suavização ruído

com Matlab, sal e pimenta com parâmetro 0,01 é adicionado
à imagem original para criar uma imagem com ruído.

Capacete com noise.jpg
  1. leia a imagem e converta a imagem em tons de cinza
  2. convolução da imagem graysale com a máscara
  3. imagem denoisy será o resultado da etapa 2.
Capacete sem ruído.jpg
Equalização do histograma Distribuição de nível de cinza muito centralizada
Cena da caverna antes da melhoria.jpg
Consulte a equalização do histograma
Cena da caverna após melhorias.jpg

Tecnologias de detecção e monitoramento de fadiga

Houve avanços significativos na tecnologia de monitoramento de fadiga na última década. Essas soluções de tecnologia inovadoras já estão disponíveis comercialmente e oferecem benefícios reais de segurança para motoristas, operadores e outros trabalhadores por turnos em todos os setores.

Desenvolvedores de software, engenheiros e cientistas desenvolvem software de detecção de fadiga usando várias pistas fisiológicas para determinar o estado de fadiga ou sonolência. A medição da atividade cerebral (eletroencefalograma) é amplamente aceita como padrão no monitoramento da fadiga. Outra tecnologia usada para determinar o comprometimento relacionado à fadiga inclui medições de sintomas comportamentais, como; comportamento dos olhos, direção do olhar, microcorreções na direção e uso do acelerador, bem como variabilidade da frequência cardíaca.

Veja também

Referências

Leitura adicional

links externos