Objetivos
Explorar a utilização do LabVIEW para captura de imagens utilizando uma câmera USB, apresentando-se tutoriais passo-a-passo para fazê-lo.
Introdução
Nos últimos dez a doze meses repeti muitas vezes, em diversas ocasiões, a demonstração de como utilizar o LabVIEW para obter e processar imagens de câmeras USB, em particular webcams. Em vista disso, resolvi então despender algum tempo para produzir este tutorial. Nossos alunos na Escola Politécnica da USP têm utilizado esse recurso em pequenos projetos desenvolvidos no curso de engenharia elétrica. Embora a terminologia aqui utilizada seja direcionada para eles, creio que muito deste material será útil para interessados de diversas formações. Evidentemente, este material pressupõe a utilização da plataforma LabVIEW. Ela está disponível para utilização em todo o campus da Universidade de São Paulo, na cidade de São Paulo. Todavia, interessados que queiram obtê-la de alguma forma, devem contactar o serviço de relações acadêmicas da National Instruments (NI). No caso de usuários industriais ou de outros setores profissionais, devem procurar os diversos canais de contacto da NI no Brasil.
Características do LabVIEW
O LabVIEW é tanto uma linguagem de programação, quanto uma plataforma de desenvolvimento de aplicações baseadas em processamento digital de dados. Para mais informações a esse respeito, sugiro um post que publiquei recentemente (Introdução ao LabVIEW) , no qual apresentam-se de forma resumida as características mais relevantes do LabVIEW.
Aquisição e processamento de imagens via LabVIEW – IMAQ
Entre os dispositivos de hardware que podem ser acessados via LabVIEW, encontram-se as câmeras de vídeo. O acesso é feito através de funções disponíveis em uma biblioteca de aquisição de imagens denominada NI – IMAQ (National Instruments Image Aquisition). A aquisição de imagens via câmeras USB, usando-se o LabVIEW, pode ser feita empregando-se a biblioteca NI IMAQ for USB cameras.
A IMAQ suporta diversos tipos de formatos de comunicação com câmeras: analógicas e digitais (USB, Firewire, Gigabit-Ethernet, Camera Link, etc). O modelo genérico de acesso às câmeras encontra-se esquematizado na figura 1. As interfaces de acesso podem ser placas conectadas ao barramento do computador, ou podem fazer parte diretamente da placa-mãe (motherboard).
Figura 1 – Modelo genérico de um software de aquisição de imagens
Deve-se primeiramente identificar a interface eletrônica por onde as imagens chegarão ao computador. Se a câmera for analógica, esta interface será a chamada placa de aquisição, que é uma placa ligada ao barramento do computador onde se encontram os circuitos de captura e digitalização do sinal de vídeo. Se for digital, usualmente haverá uma placa com decodificador do protocolo (ex. Firewire, GigE, USB, Camera Link) utilizado pela câmera para enviar o vídeo , e os buffers de vídeo que recebem os dados assim que vão chegando.
Feita essa identificação, o programa deve ter uma instrução para ativar o hardware, preparando-o para fazer a aquisição das imagens. Esse procedimento recebe o nome de abertura de uma sessão (de trabalho) com o hardware. Esse procedimento “reserva” o hardware para a aplicação desenvolvida.
Neste momento, pode-se configurar os parâmetros de aquisição a serem usados (por exemplo, o tamanho da imagem, o tipo da imagem e a taxa de aquisição). Alguns exemplos disso:
- Tamanho : 640 x 480 ; Tipo: Colorida ; Taxa de aquisição: 60 quadros por segundo
- Tamanho: 1280 x 1024; Tipo: Monocromática (Greyscale) ; Taxa: 15 quadros por segundo
Em seguida deve-se preparar uma região na memória pertencente ao espaço de endereçamento a ser ocupado programa, realizando-se a alocação de memória específica para as imagens capturadas.
Uma vez feito isso, realiza-se a captura das imagens através da interface eletrônica, armazenando-as na memória alocada. Há dois tipos de captura:
- Snap – captura de imagens individuais, como fotografias (snapshots).
- Grab – captura contínua de vídeo, produzindo uma sequência de imagens (quadros = frames )
Terminado o procedimento, em qualquer momento antes do final do programa, a sessão com o hardware deve ser encerrada (fechamento de uma sessão), liberando-o para uso em outras aplicações.
.
Tutoriais
Apresentamos a seguir tutoriais passo-a-passo sobre como realizar essas etapas utilizando-se o LabVIEW para capturar imagens de uma câmera USB (por exemplo, uma web cam) usando-se a biblioteca de funções de aquisição de imagens NI IMAQ.
LabVIEW USB SNAP-I
Mostra como utilizar as funções da biblioteca IMAQ USB para capturar uma imagem individual via web cam (ou qualquer outra câmera USB) , como se faz em uma máquina fotográfica – “tirando-se uma foto” (SNAP SHOT).
.
.
LabVIEW USB SNAP-II
Complementa o exemplo anterior, mostrando como acrescentar um botão para selecionar a abertura de uma janela (dialog box) para configurar os parâmetros da câmera USB. Também mostramos como salvar a imagem capturada a partir da câmera para um arquivo permanente.
.
.
LabVIEW USB GRAB-I
Mostra como realizar a captura de vídeo, primeiramente utilizando a função SNAP anteriormente apresentada, o que traz sérias limitações quanto à continuidade do vídeo. A seguir apresenta-se sua substituição pela função GRAB, que proporciona qualidade mais adequada para captura de vídeo.
.
.
Video capturado com a opção LabVIEW USB SNAP em um laço while
O video a seguir ilustra o método SNAP no laço while, apresentado no tutorial acima. Observe atentamente as descontinuidades no movimento (é possível observar as diferentes posições “instantâneas” da caneta vermelha em movimento). Há uma certa impressão de que neste vídeo a caneta é movimentada sempre mais rapidamente que no vídeo do exemplo mais adiante. Entretanto, em ambos a caneta é movimentada aproximadamente da mesma maneira, porém a perda de quadros provoca essa sensação de maior rapidez neste caso.
.
Figura 2 – vídeo: captura com SNAP repetido – configuração da câmera: 160 x 120 pixels a 30 fps
.
A crítica que podemos fazer ao método com que o vídeo foi gravado é que, como somente os quadros adquiridos são gravados, e supondo-se uma taxa constante de 30 quadros por segundo nas gravações, produz-se uma ilusão sobre a velocidade do movimento. Portanto, dados dois quadros em sequência, que efetivamente estão gravados no arquivo, o intervalo de tempo suposto entre eles é de 1/30 segundos (quando deveria ser maior, dependendo de quantos quadros foram perdidos entre os dois que foram gravados).
Video capturado com a opção LabVIEW USB GRAB em um laço while
O video a seguir ilustra o método GRAB no laço while, apresentado no tutorial acima. Note que neste caso o vídeo oferece uma sensação de continuidade melhor no movimento, que no caso anterior (embora possamos notar a perda de dois quadros em diferentes momentos nesse vídeo, ocorrem menos perdas do que notado no vídeo anterior).
.
Figura 3 – vídeo: captura com GRAB – configuração da câmera: 160 x 120 pixels a 30 fps
.
LabVIEW USB GRAB-II
Acrescenta ao exemplo anterior (usando GRAB) a opção de gravar o vídeo em um arquivo no formato AVI.
.
.
Observação – modifique esse programa para executar a mesma gravação, porém com a opção SNAP no while. Não esqueça de retirar o bloco IMAQ USB Grab Setup que está fora do while.
34 comentários
Comments feed for this article
outubro 12, 2008 às 6:01 pm
mayckon
Parabéns, ótimo site com iformações úteis e básicas sobre aquisição de imagens no Labview.
março 19, 2009 às 7:57 pm
joão
Bom post.
O meu problema e que não tenho as bibliotecas imaq usb. Sabe onde a poderei arranjar?
obrigado
março 30, 2009 às 1:17 am
Joao Kogler
Você poderá obter a biblioteca IMAQ USB procurando no website da National Instruments ou seguindo o link abaixo, que conduz à pagina mantida pela National Instruments acerca do uso de câmeras USB com o LabVIEW (naturalmente você deve ter o LabVIEW e o NI IMAQ instalados antes de instalar a biblioteca a seguir):
http://zone.ni.com/devzone/cda/epd/p/id/5030
maio 6, 2009 às 4:00 pm
Ricardo
Boa tarde
Prof. João, necessito de uma ajuda no meu trabalho de dissertação que envolve a programação em Labview.
Voce poderia ou entao teria alguem para me indicar, que pudesse me ajudar.
Desde já obrigado
Prof. Ricardo
maio 6, 2009 às 4:24 pm
Marcia Harumi Yoshihiro
Oi Kogler,
Vc já utilizou o Labview em aplicações para aquisição somente de áudio?
Além disso, vc ainda ministra o curso de Labview?
Gde Abraço,
Harumi
maio 14, 2009 às 6:36 pm
Joao Kogler
Oi Harumi,
Já fiz aquisição de áudio através de placa DSP executando LabVIEW. Utilizamos o LabVIEW em nossos cursos na USP. Também temos cursos específicos sobre o uso do LabVIEW em aplicações científicas, usualmente oferecido para alunos de graduação, porém algumas vezes temos professores e pesquisdores na platéia.
Abraços,
João
maio 13, 2009 às 7:21 pm
João BH
Xará (João),
Com uma web cam, eu consigo manipular a imagem utilizando imaq vision + a bilbioteca do USB Cam? Eu consegui somente mudar o background de cor. Estou com algumas aplicações interessante usando imagem… e se funcionar com web, daí iria ficar super bacana!
valew
maio 14, 2009 às 6:43 pm
Joao Kogler
Sim é possível fazer isso tudo. Procure a documentação da biblioteca IMAQ contida na instalação. Há uma boa explicação ali. Entretanto, para funcionar via web existem não só requisitos técnicos, como também de licença, para publicar sua interface ativa de LaBVIEW.
maio 22, 2009 às 6:39 pm
Luiz - SP
Caro Prof. João,
Site excelente! Parabéns!
Por favor, professor, seria possível utilizar a webcam usb com vídeo e áudio? Gravarmos o vídeo com audio em .avi?
Seria um WebLab em plataforma LabVIEW com dados, audio e vídeo.
Muito Agradecido!
Abraços
maio 31, 2009 às 7:54 pm
Joao Kogler
Caro Luiz,
ainda não tentei fazer isso com o LabVIEW. Verifique a possibilidade na documentação da função de gravação de AIVs da biblioteca NI-IMAQ. Se houver uma opção para se gravar o áudio, o ícone dessa função deverá ter uma entrada para os dados do áudio. Todavia, há uma questão que provavelmente você mesmo teria de resolver com programação extra que é a da sincronização do áudio com o vídeo, que não é um problema trivial.
junho 26, 2009 às 6:50 pm
Celia Lourenço
Caro João,
Possuo uma câmera que está filmando um processo e que envia o sinal via rádio para um receptor cujas saídas são audio e vídeo. Esta saída de vídeo é conectada a um conversor de vídeo para USB ligada ao microcomputador. Desenvolvi um aplicativo em LabView que entre outras coisas mostra a imagem adquirida pela câmera (com a ajuda de seus ótimos tutoriais), porém ainda tenho um problema: A imagem só aparece se o objeto Imaq Usb PropertyPage for utilizado, nesse caso quando a janela de configuração se abre clicando-se em Cancelar ou OK, não há nenhuma difereça, a imagem aparece na tela. Ou seja ao “rodar” esse objeto, deve ser realizada alguma configuração “default” que faz com que tudo funcione. Gostaria de retirar esse objeto para que a janela de configuração não ficasse entrando, mas não sei o que fazer. Alguma idéia?
Gostaria de dar download em seus tutoriais, mas a página do SlideShare não está permitindo porque não mostra a imagem a ser reproduzida mesmo dando refresh. Existe alguma outra forma?
Desde já agradeço.
Um abraço,
Celia
agosto 11, 2009 às 12:28 am
Francisco Antonio
Prof. João Kogler,
Uso o Labview 8.5 e não estou conseguindo instalar o Imaq USB, quando tento instalar ele pede o Vision Assistant 7.1, porém o unico Vision Assistant disponível no site da NI é um update que quando tento instalar ele pede o vision Assistant 7.0, eu ja procurei muito e não consigo encontrar. Estou precisando para implementar em um TCC e quando vi este site que o senhor fez achei muito bom, mas por causa deste problema ainda não pude tentar fazer como vc ensina nos slides, se vc puder me ajudar e me informar como conseguir essas bibliotecas ficarei muito grato.
Abraços.
agosto 13, 2009 às 12:45 am
Joao Kogler
O IMAQ USB é uma biblioteca que depende do NI IMAQ, que não vem com a distribuição básica do LabVIEW. Possivelmente poderia encontrar uma versão “trial”, provavelmente válida por 30 dias no website da National Instruments, caso você ou sua instituição não possuam a biblioteca NI IMAQ. Ela vem dentro do pacote NI Vision, a partir do LabVIEW 8.2. Na USP dispomos de todas essas bibliotecas para o uso de alunos, pesquisadores e professores e, se este for o seu caso, contacte-me diretamente no campus.
outubro 18, 2009 às 1:28 pm
André Pereira da Silva
Gostaria de saber se é possível conseguir esse tutorial em pdf e se autoriza a publicação em outros sites ?
Obrigado !
outubro 25, 2009 às 12:33 am
Joao Kogler
Não pretendo publicar ainda esse conteúdo em pdf pois ele será parte de meu futuro livro.
Por ora você pode incluir o link para o post em outros sites, creio que atingirá o objetivo.
março 8, 2010 às 8:25 pm
Fernando Doreto
Prof. João Kogler,
Em uma aplicação que estou trabalhando devo fazer o seguinte: Tenho 3 sinais adquiridos de uma placa. Quero utilizar um menu para mostrar os sinais da seguinte forma: A primeira opção mostra apenas o sinal 1, a segunda opção mostra os sinais 2 e 3, e a última opção mostra o sinal 3. Como posso fazer isto?
Desde já agradeço.
Abraços,
Fernando.
abril 9, 2010 às 5:32 pm
Lucas
Professor, o NI Imaq já vem integrado ao labview 8.5 ou eu tenho que compra-lo separado para poder instalar o IMAQ USB?
abril 17, 2010 às 2:18 am
Rodrigo
Ótimo site!
Gostaria de saber se é possível reconhecer uma imagens no labview e tirar sua medida automaticamente.
Obrigado desde já,
Rodrigo
fevereiro 8, 2011 às 2:23 pm
Marcus Raele
Grande professor Kogler,
Sds do pessoal Física/IPEN
maio 19, 2011 às 8:22 pm
Pablo JP
Prof. João Kogler,
Estou me aventurando no mundo da imagem digital e sei alguns conceitos sobre medelos de cor. Atualmente busco informações sobre o processamento de imagens digitais a partir de diferentes modelos de cor (RGB, CMKY, HSV, Lab, etc) utilizando o Labview, porém pouco tenho encontrado. Gostaria de saber se existem bibliotecas ou subVI´s para tal tarefa.
junho 26, 2011 às 12:08 am
Joao Kogler
O LabVIEW possui uma biblioteca para processamento de imagens e visão de máquina que oferece funções de conversão de sistemas de cor RGB e HSV,I,L. Para realizar transformação para CMYK ou Lab deverá suprir suas próprias funções.
Veja em:
http://zone.ni.com/reference/en-XX/help/370281M-01/TOC22.htm
http://zone.ni.com/reference/en-XX/help/372916H-01/nivisionconcepts/color_spaces/
agosto 9, 2011 às 12:50 am
mailson
Ok ! gostaria de saber se vc tem um tutotrial completo sobre tratamento de imagens com o Labview.
obrigado pela atenção!
agosto 14, 2011 às 2:17 pm
Joao Kogler
Ao instalar a biblioteca de processamento de imagens (NI Vision) do LabVIEW, encontrará um manual online sobre as funções. Se você não possui o NI Vision, as alternativas são: usar alguma biblioteca cujas funções possam ser compiladas como biblioteca de ligação dinâmica (dll) – p.ex. OpenCV, ou então desenvolver suas proóprias funções para processar as imagens (possivelmente apoiado por algum bom livro sobre o assunto – p.ex. Gonzalez & Woods – Processamento de Imagens – trad. da 1a edição em inglês, ou 2a,3a ed em inglês)
setembro 6, 2012 às 11:41 am
clayton
Instalei as versoes 8.6 do Labview instalei os Vision aparece uma mensagem de erro .
Erro -1074396024 ocorreu em IMAQ USB Grab Setup.vi
Erro do sistema.
IMAQ Vision:
(Hex 0xBFF60488) coberturas mínimos de valor deve ser maior que zero
setembro 8, 2012 às 12:01 am
Joao Kogler
http://brasil.ni.com/suporte
setembro 13, 2012 às 8:09 pm
claytongalles@gmail.com
Gostaria de saber se tem alguma maneira , usando Web cam com o Labview , montar um sistema de visão, Usando Labview ?
setembro 15, 2012 às 11:17 pm
claytongalles@gmail.com
Gostaria de saber consigo fazer uma aquisição de imagem usando lab view e uma webcam , exemplo : capturo uma o foto de um codigo de barras se passar mais algum codigo igual acende uma luz verde caso passe diferente acenda uma luz vermelha .
Estou com Duvida estou Montando esse projeto
novembro 20, 2012 às 10:33 pm
Gianini Leoni Donatiello
Prof. João kogler , ótimo site, sou iniciante no Labview, abraços
novembro 21, 2012 às 5:50 pm
Gianini Leoni Donatiello
OK! ótimo site.
janeiro 2, 2013 às 4:32 pm
Adriano Celso
Olá João, Boa tarde. Estou montando um sistema para aquisição de imagens por uma placa de captura easy cap no lab view. Montei uma vi igual a sua descrita no tutorial eo meu problema é o seguinte: Quando exeuto a vi, por default ela utiliza como dispositivo de aquisição a webcam do laptop e faz a aquisição de imagens normalmente. Mas quandomudo para a placa de captura o sistema da um erro dizendo que o formato de imagem no momento nãoé suportado. o que poderia estar acontecendo?
Agradeço pela atenção
fevereiro 28, 2013 às 10:33 pm
Gian
Professor adorei o site e a materia.Eu gostaria de saber se tem como medir altura ou nivel de tanque com labview. Se for possivel quais bibliotecas seria necessario ?
maio 27, 2014 às 2:29 pm
Ivan Perazzoli
Prof João, bom dia. Gostaria de saber se todas webcam conseguem se comunicar com o labview, ou teria que ter uma câmera específica. Quais são os requisitos? Abraços
junho 13, 2014 às 5:44 pm
Joao Kogler
Todas as USB. Entretanto esse post está desatualizado. A biblioteca IMAQ USB está obsoleta e atualmente se usa a biblioteca IMAQ dx. Contudo esta não é free.
janeiro 16, 2015 às 2:22 pm
Cameras De Video Images | Actual Percentil
[…] Imagens de webcam e câmeras USB com LabVIEW | Videlicet – Objetivos. Explorar a utilização do LabVIEW para captura de imagens utilizando uma câmera USB, apresentando-se tutoriais passo-a-passo para fazê-lo. […]