• Artigos
  • Build 2016
  • Busca no site
  • Conio Soluções em Tecnologia
  • Currículum
  • Fotos
  • Home
  • Home
  • Índice de séries
  • Insights sobre Azure
  • Livro: ASP.NET MVC
  • Microsoft Virtual Academy
  • Most Valuable Professional
  • Papo Tech
  • Série – Arda
  • Série – Kubernetes
  • Sobre
    • Certificações
    • Prêmios e Títulos
    • Publicações
    • Resumo
    • Projetos de Pesquisa
    • Atuação Profissional
    • Formação Complementar
    • Formação Acadêmica
  • Todos os posts
  • Virtual Developer Day
  • Web Dev Camp 2012
  • Web Dev Camps 2012
  • Séries
    • ASP.NET 5 (vNext)
    • Série – Diário de uma pequena empresa
    • Série – LESS CSS
    • Série – PDS
    • Série – Windows Azure
    • Série – ASP.NET MVC
    • Série – WebMatrix e Razor
    • Série – Orientação a Objetos
    • Série – HTML 5
    • Série – Arquitetura
    • Série – jQuery
  • Alunos
  • Publicações
  • Vídeos
  • Orientações
  • Congressos
  • Contato
Fabrício Sanchez
  • Sobre
    • Resumo
    • Prêmios e Títulos
    • Certificações
    • Publicações
    • Projetos de Pesquisa
    • Atuação Profissional
    • Complementar
    • Formação Acadêmica
  • Artigos
  • Papo Tech
  • Vídeos
  • Channel 9
  • Contato
  • Séries
    • Série – Kubernetes
    • Série – Arda
    • Série – Insights sobre Azure
    • Série – ASP.NET Core
    • Série – ASP.NET MVC
    • Série – Arquitetura
    • Série – Windows Azure
    • Série – Diário de uma pequena empresa
    • Série – LESS CSS
    • Série – PDS
    • Série – WebMatrix e Razor
    • Série – Orientação a Objetos
    • Série – HTML 5
    • Série – jQuery
  • Facebook

  • Twitter

  • Instagram

  • LinkedIn

  • RSS

Desenvolvimento

Processamento digital de sinais: do desktop para a internet – Teorema de Nyquist

Processamento digital de sinais: do desktop para a internet – Teorema de Nyquist
Fabrício Sanchez
27/08/2012

Este é o terceiro artigo da série sobre processamento digital de sinais de áudio para a internet. Nos dois primeiros artigos, você foi apresentado há alguns conceitos fundamentais relacionados ao tema, a saber: sinais, grandezas matemáticas, sinais unidimensionais, sinais multidimensionais, sinais discretos e analógicos e sinais periódicos e a-periódicos. Estes conceitos são chave para o entendimento dos assuntos que virão a seguir, inclusive o de hoje.

Relembrando…

No artigo anterior, você teve a oportunidade de saber um pouco mais sobre a classificação dos sinais. Naquela oportunidade, você pôde aprender que um dos parâmetros utilizados para classificar sinais é a “continuidade”. Neste contexto, um sinal pode assumir uma entre duas classificações: “contínuo” ou “discreto”.

Trazendo este cenário para um nível mais alto, se um sinal é dito contínuo, ele pode ser dito também analógico. Isto se dá por um fato em específico: ambas as denotações fazem menção ao número infinito de amostras presentes em um sinal, fato este que implica na precisão máxima do mesmo. A Figura 1 apresenta um sinal de áudio contínuo.

Figura 1. Exemplo de sinal contínuo

Se um sinal pode ser reproduzido em sua forma ótima, ele deve ser reproduzido em estado analógico/contínuo. Existe entretanto, uma grande limitação: sinais contínuos não podem ser tratados computacionalmente. Isto porque estes sinais trazem consigo a ideia de “infinitas amostras” e, como computadores executam processos de forma numérica (se você chegou a estudar métodos numéricos para a resolução de problemas, está familiarizado com esta ideia), tal tratamento torna-se impossível de ser realizado.

É de fundamental importância entender também que, para certos tipos de aplicações manipuladoras de sinais, apenas algoritmos computacionais resolvem os problemas. Um exemplo clássico de operação que só pode ser realizada através de tratamento computacional é o processo de compressão de sinais (áudio, imagem ou vídeo). Seria impossível, por exemplo, gerar um arquivo de áudio como o MP3 (um dos formatos resultantes de um forte processo de compactação) de um sinal analógico/contínuo apenas com circuitos elétricos no estado analógico. Lógico, compactação exige “perda consciente de informação” enquanto sinais analógicos. exigem naturalmente resolução máxima.

A pergunta que pode surgir aqui é: “Fabrício, se computadores não entendem sinais com infinitas amostras (como um sinal de áudio em seu estado original na natureza), como podemos reproduzi-lo através dos computadores?”

O teorema da amostragem ou Nyquist

Existe um teorema matemático que “dita” uma regra simples para a discretização de sinais: o teorema da amostragem ou Nyquist (ambos os nomes são aceitos na literatura).

Segundo este teorema, se é fato que para que um sinal possa ser tratado computacionalmente ele precisa ser discreto, logo, este deve ser submetido há um processo de discretização, seguindo a seguinte regra:

  1. Deve-se saber qual a maior frequência que compõe o sinal que se pretende discretizar
  2. As amostras deve estar igualmente espaçadas
  3. O número de amostras preservadas deve ser o dobro da máxima frequência mencionada no ítem 1

Para que esta ideia possa ficar mais clara, considere um sinal de áudio. Sabe-se de que o ouvido humano é um sensor de áudio com capacidade máxima de reprodução em 22.050 hertz (ou 22 Khz). A informação sobre a capacidade máxima de reprodução é importante, pois dá a ideia de que, quaisquer valores acima deste patamar, podem no mínimo ser irrelevantes e no máximo gerar problemas na reprodução. Veremos este conceito (aliasing) em um artigo mais adiante nesta série. Seguindo o teorema, se 22050 Hz é a frequência máxima em um sinal de áudio, o número de amostras a ser preservado no sinal é 44100 (2 x 22050) amostras por segundo (am/s).

Assim, o sinal apresentado pela Figura 1, assumiria um novo aspecto visual, semelhante à aquele apresentado pela Figura 2.

Figura 2. O sinal apresentado pela Figura 1 discretizado pelo teorema de Nyquist

 Como é possível perceber analisando a Figura 2, o teorema da amostragem atua no eixo do tempo. Entretanto, existe também, a continuidade em relação às amplitudes e evidentemente, uma discretização deve ocorrer também nesta esfera. Neste caso, como proceder? A metodologia a ser aplicada aqui é conhecida como “quantização”.

Quantização

Assim como é impossível armazenar todas as amostras no tempo para um sinal de áudio, é impossível também armazenar todos os infinitos valores de amplitudes. Para discretizar (quantizar) o eixo das amplitudes, são utilizados como padrão números inteiros que representam números de bits. Confuso?

Consideremos o mesmo exemplo do sinal de áudio apresentado anteriormente. No eixo das amplitudes (vertical), este sinal armazenará infinitas amostras, uma vez que o teorema de Nyquist atua apenas no eixo do tempo. Assim, pode-se utilizar os seguintes padrões:

  • 2^8 = 256 amostras
  • 2^12 = 4096 amostras
  • 2^14 = 16384 amostras
  • 2^16 = 65536 amostras
  • 2^n = dependendo da necessidade do sistema

É importante observar que, quanto maior o número de amostras preservadas no eixo das amplitudes, maior a resolução do sinal, entretanto, maior será também o sinal de áudio resultante (em bytes).

Bom pessoal, por hoje é isso. Não esqueça de deixar seu comentário.

Related Itemsaudio processingaudio signaldesktopPDSprocessamento de áudioprocessamento de sinaisprocessamento digital de sinaissinais de áudioweb
Comentários (1)

1 Comment

  1. Sistema ERP SBG

    22/11/2013 at 12:14

    Faço questão de colocar um comentário sobre este site, sempre me ajudando em minhas necessidades. Mais uma vez parabéns.

    Responder

Deixe seu comentário

Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Desenvolvimento
27/08/2012
Fabrício Sanchez

MS Technical Evangelist, (Ex) Azure MVP, startupeiro, arquiteto de software, professor universitário, marido e nas horas vagas, escritor. That's me!

Related Itemsaudio processingaudio signaldesktopPDSprocessamento de áudioprocessamento de sinaisprocessamento digital de sinaissinais de áudioweb

Mais em Desenvolvimento

Apresentando o conceito de Auto Rest

Fabrício Sanchez04/09/2017
Ver mais

DevXperience – Saiba como foi

Fabrício Sanchez03/09/2017
Ver mais

Terceirizando o envio de emails do Arda com Azure Functions

Fabrício Sanchez23/07/2017
Ver mais

Serverless Computing – É hora de falarmos sobre isso

Fabrício Sanchez18/07/2017
Ver mais

A carreira do profissional de cloud computing

Fabrício Sanchez21/04/2017
Ver mais

Arda Intelligence – Adicionando inteligência ao Arda

Fabrício Sanchez10/03/2017
Ver mais
Deslize para ver mais...
Tap

POSTS MAIS RECENTES

  • Distribuindo containers com Docker Swarm – Parte 2
    Azure20/05/2018
  • Distribuindo containers com Docker Swarm – Parte 1
    Azure06/05/2018
  • Um novo desafio pessoal e profissional à frente
    Carreira01/03/2018
  • Event Grid como agente de transformação de aplicações de nuvem
    Architecture06/02/2018
  • Construindo um servidor de Minecraft com Docker e Service Fabric no Azure
    Azure27/11/2017
  • Kubeless – Serverless everywhere com Kubernetes
    Cloud Computing21/09/2017
  • Apresentando o conceito de Auto Rest
    Desenvolvimento04/09/2017
  • DevXperience – Saiba como foi
    Application Gateway03/09/2017
  • Terceirizando o envio de emails do Arda com Azure Functions
    .NET Framework23/07/2017
  • Serverless Computing – É hora de falarmos sobre isso
    Azure18/07/2017
Fabrício Sanchez

Este site compartilha informações técnicas da área de tecnologia da informação, com foco no desenvolvimento de aplicações e cloud computing.

Feedbacks, críticas e/ou sugestões são muito bem vindas.

ÚLTIMAS POSTAGENS

  • Distribuindo containers com Docker Swarm – Parte 2
    Azure20/05/2018
  • Distribuindo containers com Docker Swarm – Parte 1
    Azure06/05/2018
  • Um novo desafio pessoal e profissional à frente
    Carreira01/03/2018
  • Event Grid como agente de transformação de aplicações de nuvem
    Architecture06/02/2018
  • Construindo um servidor de Minecraft com Docker e Service Fabric no Azure
    Azure27/11/2017

TAGS

azure Destaque Microsoft ASP.NET cloud computing WebMatrix windows azure nuvem cloud importante web ASP.NET MVC C# computação em nuvem evento mvp destaques Razor .NET JQuery web dev camp Webstandards Desenvolvimento IIS PHP docker Comunidade microservices Rede Host microserviços

Copyright © 2010 Fabrício Sanchez. Todos os direitos reservados.

Morte: copo meio vazio ou meio cheio?
Esta é minha nova vida, este é meu novo clube!