Daftar Isi:

Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android: 6 Langkah
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android: 6 Langkah

Video: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android: 6 Langkah

Video: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android: 6 Langkah
Video: 🌟 ENG SUB | Versatile Mage | Full Version EP37-48 | Yuewen Animation 2024, Juni
Anonim
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikasi Android

DESCRIO

Intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou pusat perbelanjaan dan aeroportos.

A locomoção em ambientes já mapeados pode ou não ser mempertimbangkan masalah masalah bem resolvido. Um aplikativo disponível na App Store para isso, ainda que sirva apenas para 3 ambientes dan apenas nos EUA, é o LowViz Guide. Lakukan limitado número de locais, tal aplicativo não detecta possíveis obstáculos dan pessoas que possam estar no caminho do usuário. Assim, a missão deste projeto é, através de visão computacional e processamento de imagem, identificar possíveis obstáculos que possam surgir ao longo do caminho do usuário e poder recalcular o caminho a ser seguido dando independncia o empoderancia. Na prática, o projeto, embora ainda incompleto, terdiri dari integrasi um aplicativo de onde se pode submeter ou desenhar uma planta baixa lakukan de interesse lokal, seja uma casa ou belanja. Com a placa integrada a uma câmera na cintura do usuário, e um fone de ouvido, o aplicativo calcula a posição no ambiente e permite o usuário definir para onde quer ir e dá comandos de voz para movimentação. Sebuah kamera, quando detecta um obstáculo a frente, pode recalcular o caminho do usuário. Como dizia Hugh Herr: “Nenhum indivíduo é incapaz, o que existe é falta de desenvolvimento tecnológico para capacitar e nos tornar iguais”.

Neste projeto usaremos a Dragonboard 410c, porque precisamos de um hardware que tenha capacidade de fazer o processamento de imagens em tempo real (sem ter de competir com outras aplicações como seria no celular) dan ao mesmo tempo seja de baixo custo.

Langkah 1: Materiais

Materi
Materi

Para este projeto vamos utilizar:

- uma placa Qualcomm Dragonboard 410c;

- biblioteca de processamento de imagem OpenCV (versi 3.1);

- kamera que se comunique com a placa (usaremos na verdade um seluler android com o aplicativo IP Webcan);

- sistem komunikasi seluler Android untuk aplikasi;

Langkah 2: Instalando OpenCV Na Dragonboard

Instalando OpenCV Na Dragonboard
Instalando OpenCV Na Dragonboard

Com linux instalado na placa, siga os prosedur padrões para se instal a biblioteca de processamento de imagem - OpenCV - tidak ada perangkat. Siga sebagai instruções deste link:

docs.opencv.org/3.0-beta/doc/tutorials/intr…

Langkah 3: Conectar a Câmera Com a Dragonboard

Conectar a Câmera Com a Dragonboard
Conectar a Câmera Com a Dragonboard

Precisamos conectar a camera que serão os olhos do deficiente com a placa de desenvolvimento Dragonboard 410c. Ada vários jeitos de fazer isso. Dragonboard possui entrada para flatcables, ou seja, é compatível com as câmeras usadas comumente em placas como a Raspberry pi.

Neste projeto, optamos usar como câmera um Moto G 3ª Geração com o aplicativo IP Webcam (disponível na Google Play) que permite que a imagem seja transferida pelo wifi.

Abaixo um programa que faz aquisição simples da imagem usando a biblioteca opencv. O link passado como parâmetro no construtor do objeto VideoCapture é o IP do celular (indicado no aplicativo) + “/videofeed”. Na imagem acima, você encontra onde está o IP do seu celular.

Aquisição pode ser difícil nas versões anteriores a 3.1 da opencv, caso você não tenha conseguido compilar. Se você conectar uma câmera pela entrada de câmeras da dragonboard basta colocar como parâmetro o valor zero ("0"), que significa que você quer procurar a camera default.

Langkah 4: Perangkat Lunak Desenvolver De Processamento De Imagens Que Toma Decisões

Image
Image
Perangkat Lunak Desenvolver De Processamento De Imagens Que Toma Keputusan
Perangkat Lunak Desenvolver De Processamento De Imagens Que Toma Keputusan
Perangkat Lunak Desenvolver De Processamento De Imagens Que Toma Keputusan
Perangkat Lunak Desenvolver De Processamento De Imagens Que Toma Keputusan

Pilih program sebagai anexo, atau identificadorDeObstáculos.cpp, atau MostraContornoWebcam.cpp dan VídeoCadeiraSlavo.cpp (estes dois ltimos para teste e entendimento da técnica do software).

Penjelasan: Ideia de identificação de obstáculo vem da determinação dos contornos mais drásticos nas imagens lakukan vídeo, ou seja, o código identifica mudanças drásticas de cores na imagem e conclui que iso seja um melangkah). Berdirilah kamera na barriga do usuário, levemente inclinada para o chão, conforme o usuário se locomove, o programa identifica a existência de um objeto (seja uma pessoa ou uma cadeira por exemplo) e manda o sinal de objeto região especificada (caminho do usuário) (vide imagem do contorno da cadeira - caso o usuário se aproxime da cadeira haverá pixels brancos na região verde que determinam condição de parada). Dessa forma, sem a adição de filtros ao tipo de chão, para o funcionamento dessa versão simplificada, é necessário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam mempertimbangkan contornos.

Obs. é possível ajustar a variável lowThreshold do código para um valor de 0 (mais sensitivo) e 100 (menos sensitivo ao contorno). O valor sugerido é 60 para chão em geral.

Fungsi: o identificadorDeObstáculos.cpp recebe um vídeo da rede wifi através lakukan sparkfun que deve ser um vídeo de um celular acoplado a barriga do usuário. O código manda condições de parada á um aplicativo de um outro celular que usuário está usando. Idealmente manda-se comandos de voz de parada parada o usuário.

Obs: Altere o código de acordo para especificar de onde os vídeos são recebidos dan para qual android sebagai informasi são encaminhadas. Tidak ada perubahan khusus yang tidak perlu dilakukan (assim como nos programas de teste) komentar tidak ada início do programa.

Para saber mais sobre bordas de Canny e limiarização, além de outros tópicos de visão computacional, recomenda-se procurar a documentao oficial da OpenCV.

Langkah 5: Fazer Aplicativo Que Repassa Sebagai Informasi Para O Deficiente Visual

Para reproduzir este projeto é necessário criar um banco de dados no site data.sparkfun.com, o processo é muito intuitivo de forma que não será dada uma explicação mais detalhada aqui, mas colocaremos o link do banco que criamos ().

Asim que a Dragonboard reconhece que há um obstáculo a sua frente ela posta em um banco de dados construido no data.sparkfun.com essa informao. O aplikativo faz uma konsultasi a este banco com o auxílio da classe okhttp3 dapatkan sebagai informasi como um Json. Masuk ke dalam parser desse json para encontrarmos o ltimo dado enviado. Com esse dado em mãos conseguimos dizer se há um obstáculo no caminho, assim é emitido um sinal de voz para o usuário parar. Se o caminho está livre o aplicativo emite um sinal para prosseguir continuamente.

Seguem em anexo sebagai kelas e Antarmuka utilizadas para o projeto, que são menjelaskan seguir:

GetJson: é utilizada para fazer um get no banco de dados do data.sparkfun retornando um arquivo em format json untuk aplikasi.

JsonDownloader: é onde geramos uma asynctask para de fato utilizarmos a class GetJson, a importância do uso desta classe é para não travarmos a interface do usuário e para isso precisamos criar uma thread berbeda dengan aplikasi.

Aktivitas Utama: nesta classe implementamos a lógica da aplicação que continuamente Consulta o banco de dados, e informa o usuário por meio de um audio se ele precisa para ou pode continuar caminhando.

RequestListener: uma interface utilizada untuk forçar o MainActivity ter certas características.

SdmSoundPlayer: esta classe é usada para gerenciar os comandos de voz da aplicação, caso você queira inserir as suas próprias gravações você deve criar uma pasta raw dentro da pasta res e incluir os arquivos de audio. Feito isso dentro do método initSoundHash() você deve colocar esses arquivos dentro de mSoundHash que é uma tabela Hash. Para usar este áudio basta usar o método playSound(int key) e passar como parâmetro a chave escolhida para o sinal de voz.

Peringatan: essa classe é utilizada para facilitar o parser do json retornado pelo banco de dados.

Seguem em anexo também os arquivos de voz utilizados.

O layout da aplicao konsistia de um nico botão que funcionava com o método Keluar dari pelaksanaan MainActivity, este método simplesmente forçava a aplicao a parar a konsultasi no banco de dados.

Qualquer dúvida adicional ou sugestão basta entrar em contato com o autor. Sarankan são semper bem-vindas =).

O código não está bem comentado, mas acredito que as explicações acima devem ser suficientes para o entendimento do que está acontecendo.

Langkah 6: Sarankan De Continuação

Poderiamos integrar um sistema de localaização. Ada Qualcomm iZat SDK untuk menentukan sistem lokal untuk digunakan di Amerika Serikat GNSS, acelerômetro, magnetrômetro entre outros, já embutidos no próprio processador Qualcomm Snapdragon (presente na maioria dos celulares). Tidak perlu, havia pouca documentação e necessitava de testes mais demorados.

Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problemas quanto a comunicação com a Dragonboard, que poderia ser resolvido com mais calma. Se tiver tempo, dapatkan sebagai bibliotecas já menyajikan tidak ada kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.

Tidak ada situs Pengembang Qualcomm ada untuk belajar dan mengajar, dan belajar dari 96Papan tidak ada tabung Anda.

Direkomendasikan: