LabVIEW  –  IMAQ   USB Aquisição de Imagens com câmeras USB  no  LabVIEW  parte 1 - Snap João Kögler Escola Politécnica Universidade de São Paulo Agosto 2008 TM   National Instruments
Objetivos Neste primeiro exemplo ilustraremos como capturar um quadro de vídeo com a  webcam  e processá-lo em um programa no seu computador, utilizando o  LabVIEW . O  quadro  de vídeo é uma  imagem  que se forma no  sensor  da câmera Os quadros são transferidos ao computador via comunicação  USB USB  consiste de um  protocolo  de comunicação e de uma  interface  de comunicação O  protocolo  descreve como os dados são empacotados e codificados para serem transferidos A  interface  padroniza a maneira de se construir fisicamente o laço de comunicação que obedece a esse protocolo
Câmera USB  (  Web cam  ) A camera possui um sensor cuja resolução é especificada por: H pixels  na direção horizontal V pixels  na direção vertical Cada  quadro  terá uma  resolução   H x V A taxa de transmissão do vídeo será dada pelo parâmetro FPS FPS  =  frames per second     quadros por segundo lente sensor Cabo USB H   pixels V   pixels
Câmera USB  (  Web cam  ) Os quadros serão capturados com uma taxa dada por FPS e enviados ao computador via cabo USB  Cada quadro que chega é armazenado antes em um buffer de chegada Depois o quadro deve ser transferido a uma área de memória acessível ao programa FPS  =  frames per second     quadros por segundo Buffer de chegada das imagens Memória acessível a programas Cabo USB computador Display  na tela do computador
Requisitos Você deve ter uma webcam instalada no seu computador Essa webcam dispõe de um driver que é instalado juntamente com o restante do software da câmera Esse driver é identificado pelo LabVIEW pelo nome da câmera Você deve dispor do LabVIEW instalado em seu computador Ele deve ter instalado também as bibliotecas de processamento de imagens e visão de máquina, identificadas por NI Vision NI IMAQ  ( IM = Image , AQ = Aqcuisition    aquisição de imagens)
Etapas Neste exemplo  mostraremos como se faz um SNAPSHOT (foto) usando o LabVIEW Etapas: 1. Achar qual a webcam acessar via LabVIEW 2. Criar uma sessão nessa webcam 3. Configurar a webcam para capturar imagens 4. Capturar uma imagem (foto) com a webcam 5. Armazenar essa foto no espaço de memória do programa 6. Exibir a foto no painel frontal do LabVIEW 7. Encerrar a sessão na webcam 8. Salvar e executar o programa
Abrindo o LabVIEW Preliminares Lembrando, os programas construidos com o LabVIEW são denominados VI’s (isto é,  Virtual Instruments ) Ao executar o LabVIEW, você irá se deparar com esse painel Há 2 possibilidades para começar a construir seu programa: Como um novo VI Como novo Projeto (lvproj) Obs – ainda há uma 3ª  possibilidade, o projeto Realtime, porém com requisito de hardware Realtime Selecione:  Blank VI Esta será nossa opção neste exemplo .
Abrindo o LabVIEW Ao selecionar Blank VI aparecerão 2 janelas como essas: Painel frontal  destinado à construção da interface gráfica de usuário Diagrama de   blocos  – é onde vai o seu algoritmo Painel frontal Diagrama de blocos
Paletas de funções para imagens no LabVIEW As funções da biblioteca  de  Visão de Máquina  (aquisição e processamento de imagens) aparecem na paleta  Vision and Motion , acessível na janela do diagrama de blocos com o botão direito do mouse
1. Identificando a câmera USB Começando no diagrama de blocos (isto não é o usual) Use  CTRL-H  ou  Help >> Display contex help  para mostrar a janela de auxilio imediato Use o botão direito do mouse no diagrama para mostrar as  paletas de ferramentas Selecione a paleta Vision and motion >> IMAQ USB
1. Identificando a câmera USB Utilizaremos a função  IMAQ USB Enumerate Cameras  para identificar quais são as câmeras USB que estão conectadas ao seu computador. Arraste esse bloco da paleta para a área vazia da janela de  diagrama de blocos do LabVIEW
1. Identificando a câmera USB O bloco anterior produzirá como saída um array com os nomes (strings) das diversas câmeras instaladas Para acessar um deles use a função de array  chamada  index array
O botão direito do mouse colocado no terminal  index 0  produz o menu ao lado. Selecione: Create >> Constant
O botão direito do mouse no terminal  element or subarray   produz o menu  ao lado Selecione: Create >> Indicator
1. Identificando a câmera USB Renomeie o indicador assim criado com o rótulo  “camera” Como resultado dessas operações, no painel frontal foi criado um  indicador  com esse nome
1. Identificando a câmera USB Executando-se o LabVIEW (botão “RUN”    seta na toolbar), o indicador mostrará o nome da câmera instalada No meu caso é uma Logitech QuickCam Express RUN
2. Criando sessão na Webcam Procurar na paleta IMAQ USB a função  IMAQ USB Init Essa função inicia uma  sessão  na webcam Iniciar uma sessão em um hardware significa reservar o hardware para uso pelo seu programa Conectar a saída do bloco  Index array  à entrada  USB Camera Name  do bloco  IMAQ USB Init . Essa função fornece como saída um identificador que indica o número da sessão no hardware camera) dado no terminal  IMAQ USB Session Out
3. Configurando a webcam para capturar imagens Insira a função  IMAQ USB Property Page  no diagrama de blocos e a conecte à saída do bloco anterior Esse bloco fará aparecer a caixa de diálogo de configuração da câmera quando você executar o programa, mais adiante.
4. Capturando uma imagem (foto) = snap shot Ligue a função  IMAQ USB Snap  à saída da anterior
Espaço de endereçamento do programa Cada programa quando é carregado na memória do computador possui seu espaço de endereçamento privativo O sistema operacional (no caso o Windows) é quem aloca esse espaço para o programa Cada programa só consegue acesso direto ao seu espaço de endereçamento Para ter acesso a outras regiões da memória, o programa precisa valer-se de chamadas a funções do sistema operacional que lhe darão esse acesso, mediado por uma função específica O buffer de chegada das imagens (frame buffer) pertence ao espaço de endereçamento do controlador de comunicação USB Para que seu programa leia uma imagem guardada ali é necessário que ele transfira essa imagem para seu próprio espaço de endereçamento Isso é feito através da chamada de uma função específica No LabVIEW isso é feito pela função  IMAQ USB SNAP  que você acabou de colocar em seu programa Falta agora determinar uma região de memória para que essa função deposite a imagem transferida ao frame buffer
5. Armazenando a imagem capturada na memória  As funções da biblioteca  de  Visão de Máquina  (aquisição e processamento de imagens) aparecem na paleta  Vision and Motion Localize nela a paleta  Vision Utilities Vision Utilities
5. Armazenando a imagem capturada na memória A partir da  paleta de Vision and Motion, abra a paleta Vision Utilities, indicada ao lado. Selecione nela a paleta  Image Management
5. Armazenando a imagem capturada na memória Arraste a função  IMAQ Create  par o diagrama de blocos. Crie uma  constante  no terminal  Image Name  e chame-a de  Imagem_Input  (ou qualquer outro nome) Crie uma  constante  no terminal  Image Type  e selecione o tipo  RGB (U32)
5. Armazenando a imagem capturada na memória Conecte agora o terminal  Image Out  do bloco  IMAQ Create  ao terminal  Image In  do bloco  IMAQ USB  Snap
6. Exibindo a imagem no painel frontal Vá ao  painel frontal  e procure na paleta  Vision  o indicador  Image Display  e arraste-o ao painel frontal para criar uma área para exibição da imagem Chame-a de SNAPSHOT (ou outro nome qualquer)
6. Exibindo a imagem no painel frontal Volte ao diagrama de blocos e procure o  terminal do indicador  de display que acabou de criar no painel frontal (ele deverá ter o mesmo nome que você deu a ele) Conecte-o à saída  Image Out  do bloco  IMAQ USB Snap Seu programa está quase pronto. Só falta um ítem
7. Encerrando a sessão na webcam Assim como você iniciou uma sessão na webcam, deve agora fechar essa sessão, liberando o hardware pare uso posterior por outros programas (ou o seu próprio). Use a função  IMAQ USB Close , que deverá ser ligada ao bloco  IMAQ USB Snap .
8. Salvando e executando o programa Vá agora ao painel frontal e salve o programa: File >> Save As...  Escolha um nome para o mesmo Por exemplo: IMAQ Snapshot.vi Execute a seguir o programa, clicando no botão de execução (seta RUN) Ao executar, aparecerá a caixa de diálogo para configurar sua câmera USB (diferente conforme a marca e o modelo da câmera) Veja o resultado a seguir....
8. Executando o programa

Imaq Usb Snap P1

  • 1.
    LabVIEW – IMAQ USB Aquisição de Imagens com câmeras USB no LabVIEW parte 1 - Snap João Kögler Escola Politécnica Universidade de São Paulo Agosto 2008 TM National Instruments
  • 2.
    Objetivos Neste primeiroexemplo ilustraremos como capturar um quadro de vídeo com a webcam e processá-lo em um programa no seu computador, utilizando o LabVIEW . O quadro de vídeo é uma imagem que se forma no sensor da câmera Os quadros são transferidos ao computador via comunicação USB USB consiste de um protocolo de comunicação e de uma interface de comunicação O protocolo descreve como os dados são empacotados e codificados para serem transferidos A interface padroniza a maneira de se construir fisicamente o laço de comunicação que obedece a esse protocolo
  • 3.
    Câmera USB ( Web cam ) A camera possui um sensor cuja resolução é especificada por: H pixels na direção horizontal V pixels na direção vertical Cada quadro terá uma resolução H x V A taxa de transmissão do vídeo será dada pelo parâmetro FPS FPS = frames per second  quadros por segundo lente sensor Cabo USB H pixels V pixels
  • 4.
    Câmera USB ( Web cam ) Os quadros serão capturados com uma taxa dada por FPS e enviados ao computador via cabo USB Cada quadro que chega é armazenado antes em um buffer de chegada Depois o quadro deve ser transferido a uma área de memória acessível ao programa FPS = frames per second  quadros por segundo Buffer de chegada das imagens Memória acessível a programas Cabo USB computador Display na tela do computador
  • 5.
    Requisitos Você deveter uma webcam instalada no seu computador Essa webcam dispõe de um driver que é instalado juntamente com o restante do software da câmera Esse driver é identificado pelo LabVIEW pelo nome da câmera Você deve dispor do LabVIEW instalado em seu computador Ele deve ter instalado também as bibliotecas de processamento de imagens e visão de máquina, identificadas por NI Vision NI IMAQ ( IM = Image , AQ = Aqcuisition  aquisição de imagens)
  • 6.
    Etapas Neste exemplo mostraremos como se faz um SNAPSHOT (foto) usando o LabVIEW Etapas: 1. Achar qual a webcam acessar via LabVIEW 2. Criar uma sessão nessa webcam 3. Configurar a webcam para capturar imagens 4. Capturar uma imagem (foto) com a webcam 5. Armazenar essa foto no espaço de memória do programa 6. Exibir a foto no painel frontal do LabVIEW 7. Encerrar a sessão na webcam 8. Salvar e executar o programa
  • 7.
    Abrindo o LabVIEWPreliminares Lembrando, os programas construidos com o LabVIEW são denominados VI’s (isto é, Virtual Instruments ) Ao executar o LabVIEW, você irá se deparar com esse painel Há 2 possibilidades para começar a construir seu programa: Como um novo VI Como novo Projeto (lvproj) Obs – ainda há uma 3ª possibilidade, o projeto Realtime, porém com requisito de hardware Realtime Selecione: Blank VI Esta será nossa opção neste exemplo .
  • 8.
    Abrindo o LabVIEWAo selecionar Blank VI aparecerão 2 janelas como essas: Painel frontal destinado à construção da interface gráfica de usuário Diagrama de blocos – é onde vai o seu algoritmo Painel frontal Diagrama de blocos
  • 9.
    Paletas de funçõespara imagens no LabVIEW As funções da biblioteca de Visão de Máquina (aquisição e processamento de imagens) aparecem na paleta Vision and Motion , acessível na janela do diagrama de blocos com o botão direito do mouse
  • 10.
    1. Identificando acâmera USB Começando no diagrama de blocos (isto não é o usual) Use CTRL-H ou Help >> Display contex help para mostrar a janela de auxilio imediato Use o botão direito do mouse no diagrama para mostrar as paletas de ferramentas Selecione a paleta Vision and motion >> IMAQ USB
  • 11.
    1. Identificando acâmera USB Utilizaremos a função IMAQ USB Enumerate Cameras para identificar quais são as câmeras USB que estão conectadas ao seu computador. Arraste esse bloco da paleta para a área vazia da janela de diagrama de blocos do LabVIEW
  • 12.
    1. Identificando acâmera USB O bloco anterior produzirá como saída um array com os nomes (strings) das diversas câmeras instaladas Para acessar um deles use a função de array chamada index array
  • 13.
    O botão direitodo mouse colocado no terminal index 0 produz o menu ao lado. Selecione: Create >> Constant
  • 14.
    O botão direitodo mouse no terminal element or subarray produz o menu ao lado Selecione: Create >> Indicator
  • 15.
    1. Identificando acâmera USB Renomeie o indicador assim criado com o rótulo “camera” Como resultado dessas operações, no painel frontal foi criado um indicador com esse nome
  • 16.
    1. Identificando acâmera USB Executando-se o LabVIEW (botão “RUN”  seta na toolbar), o indicador mostrará o nome da câmera instalada No meu caso é uma Logitech QuickCam Express RUN
  • 17.
    2. Criando sessãona Webcam Procurar na paleta IMAQ USB a função IMAQ USB Init Essa função inicia uma sessão na webcam Iniciar uma sessão em um hardware significa reservar o hardware para uso pelo seu programa Conectar a saída do bloco Index array à entrada USB Camera Name do bloco IMAQ USB Init . Essa função fornece como saída um identificador que indica o número da sessão no hardware camera) dado no terminal IMAQ USB Session Out
  • 18.
    3. Configurando awebcam para capturar imagens Insira a função IMAQ USB Property Page no diagrama de blocos e a conecte à saída do bloco anterior Esse bloco fará aparecer a caixa de diálogo de configuração da câmera quando você executar o programa, mais adiante.
  • 19.
    4. Capturando umaimagem (foto) = snap shot Ligue a função IMAQ USB Snap à saída da anterior
  • 20.
    Espaço de endereçamentodo programa Cada programa quando é carregado na memória do computador possui seu espaço de endereçamento privativo O sistema operacional (no caso o Windows) é quem aloca esse espaço para o programa Cada programa só consegue acesso direto ao seu espaço de endereçamento Para ter acesso a outras regiões da memória, o programa precisa valer-se de chamadas a funções do sistema operacional que lhe darão esse acesso, mediado por uma função específica O buffer de chegada das imagens (frame buffer) pertence ao espaço de endereçamento do controlador de comunicação USB Para que seu programa leia uma imagem guardada ali é necessário que ele transfira essa imagem para seu próprio espaço de endereçamento Isso é feito através da chamada de uma função específica No LabVIEW isso é feito pela função IMAQ USB SNAP que você acabou de colocar em seu programa Falta agora determinar uma região de memória para que essa função deposite a imagem transferida ao frame buffer
  • 21.
    5. Armazenando aimagem capturada na memória As funções da biblioteca de Visão de Máquina (aquisição e processamento de imagens) aparecem na paleta Vision and Motion Localize nela a paleta Vision Utilities Vision Utilities
  • 22.
    5. Armazenando aimagem capturada na memória A partir da paleta de Vision and Motion, abra a paleta Vision Utilities, indicada ao lado. Selecione nela a paleta Image Management
  • 23.
    5. Armazenando aimagem capturada na memória Arraste a função IMAQ Create par o diagrama de blocos. Crie uma constante no terminal Image Name e chame-a de Imagem_Input (ou qualquer outro nome) Crie uma constante no terminal Image Type e selecione o tipo RGB (U32)
  • 24.
    5. Armazenando aimagem capturada na memória Conecte agora o terminal Image Out do bloco IMAQ Create ao terminal Image In do bloco IMAQ USB Snap
  • 25.
    6. Exibindo aimagem no painel frontal Vá ao painel frontal e procure na paleta Vision o indicador Image Display e arraste-o ao painel frontal para criar uma área para exibição da imagem Chame-a de SNAPSHOT (ou outro nome qualquer)
  • 26.
    6. Exibindo aimagem no painel frontal Volte ao diagrama de blocos e procure o terminal do indicador de display que acabou de criar no painel frontal (ele deverá ter o mesmo nome que você deu a ele) Conecte-o à saída Image Out do bloco IMAQ USB Snap Seu programa está quase pronto. Só falta um ítem
  • 27.
    7. Encerrando asessão na webcam Assim como você iniciou uma sessão na webcam, deve agora fechar essa sessão, liberando o hardware pare uso posterior por outros programas (ou o seu próprio). Use a função IMAQ USB Close , que deverá ser ligada ao bloco IMAQ USB Snap .
  • 28.
    8. Salvando eexecutando o programa Vá agora ao painel frontal e salve o programa: File >> Save As... Escolha um nome para o mesmo Por exemplo: IMAQ Snapshot.vi Execute a seguir o programa, clicando no botão de execução (seta RUN) Ao executar, aparecerá a caixa de diálogo para configurar sua câmera USB (diferente conforme a marca e o modelo da câmera) Veja o resultado a seguir....
  • 29.