Inhaltsverzeichnis:

Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android - Gunook
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android - Gunook

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

Video: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android - Gunook
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 Aplicativo Android
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android

BESCHREIBUNG

O intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou Einkaufszentren und aeroportos.

A locomoção em ambientes já mapeados pode ou não ser bedenke um problema bem resolvido. Um eine Anwendung im App Store für isso, wie sirva Apenas für 3 Umgebungen und Apenas ohne EUA, oder LowViz Guide. Além do limitado número de locais, tal aplicativo não detekta possíveis obstáculos e pessoas que possam estar no caminho do usuário. Assim, ein 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 dancio usdependêno. Na prática, oder projeto, embora ainda incompleto, consist em integrar um aplicativo de onde se pode submeter oder desenhar uma planta baixa do local de interesse, seja uma casa ou einkaufen. 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 allowe o usuário definir para onde quer ir e dá comandos de voz para movimentação. Eine Kamera, quando detecta um obstáculo a frente, pode recalcular oder 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 or processamento de imagens em tempo real (Sem ter de competir com outras aplicações como seria no celular) und ua mesmo tempo seja de baixo custo.

Schritt 1: Material

Material
Material

Para este projeto vamos utilizar:

- uma placa Qualcomm Dragonboard 410c;

- Biblioteca de processamento de imagem OpenCV (Vers. 3.1);

- Kamera que se comunique com a placa (usaremos na verdade um celular android com oder aplicativo IP Webcan);

- Mobilfunksystem für Android für Anwendungen;

Schritt 2: Instalando OpenCV Na Dragonboard

Instalando OpenCV Na Dragonboard
Instalando OpenCV Na Dragonboard

Unter Linux installiert auf einem Platz, siga os procedimentos padrões für die Installation einer Biblioteca de processamento de imagem - OpenCV - kein Gerät. Siga als instruções deste link:

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

Schritt 3: Verbinden Sie eine Kamera mit einem 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 deficiency com a placa de desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. Ein Dragonboard possui entrada para flatcables, ou seja, é compatível com als Kameras usadas comumente em placas como a Raspberry Pi.

Neste projeto, optamos usar como camera um Moto G 3ª Geração com oder aplicativo IP-Webcam (Disponível in Google Play), die ein Bild ohne Wi-Fi-Übertragung erlauben.

Abaixo um programa que faz aquisição simples da imagem usando a biblioteca opencv. O link passado como parametro no construtor do objeto VideoCapture é o IP do celular (indicado no aplicativo) + „/videofeed“. Na imagem acima, você encontra onde está o IP do 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 parametro o valor zero ("0"), que significa que você quer procurar a câmera default.

Schritt 4: Desenvolver Software De Processamento De Imagens Que Toma Decisões

Image
Image
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões
Desenvolver Software De Processamento De Imagens Que Toma Decisões

Há três programas em anexo, o identificadorDeObstáculos.cpp, o MostraContornoWebcam.cpp e o VídeoCadeiraSlavo.cpp (estes dois últimos para teste e entendimento da técnica do software).

Erklärung: A ideia de identificação de obstáculo vem da determinação dos contornos mais drásticos nas imagens do video, ou seja, o código identifica mudanças drásticas de cores na imagem e Conclui e Conclui que isso seto Schritt). Estando a camera 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 na uma cadeira por exemplo) e manda o sinal de parajeto região especificada (caminho do usuário) (vide imagem do contorno da cadeira - caso o usuário se aproxime da cadeira haverá pixel 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, é notário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam Considerados contornos.

Beob. é 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.

Funcionamento: o identificadorDeObstáculos.cpp recebe um video da rede wifi através do sparkfun que deve ser um video 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 oder código de acordo para especificar de onde os videos são recebidos e para qual android als informações são encaminhadas. Os tipos de alterações são especificadas no próprio código (assim como nos programas de teste) comentados no início do programa.

Para sabre mais sobre bordas de Canny e limiarização, além de outros topicos de computacional, recomenda-se procurar a documentação oficial da OpenCV.

Schritt 5: Fazer Aplicativo Que Repassa als Informações 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 oder link do banco que criamos para referência ().

Assim 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 informação. O aplicativo faz uma consulta a este banco com oder auxílio da classe okhttp3 obtendo as informações como um Json. Então fazemos um parser desse json para encontrarmos oder ú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 as class and Interfaces utilizadas para o projeto, que são explicadas a seguir:

GetJson: utilizada para fazer, um keine Banco de dados do data.sparkfun zu erhalten, um ein arquivo em format json for aplicação zu retornieren.

JsonDownloader: onde Geramos uma asynctask para de fato utilizarmos a classe GetJson, a importância do uso desta classe é para não travarmos a interface to usuário and para isso precisamos Criar uma Thread unterschiede bei der Anwendung.

MainActivity: Nesta classe implementamos a lógica da aplicação que continuamente konsultieren oder banco de dados, und informa o usuário por meio de um audio se ele precisa para ou pode continuar caminhando.

RequestListener: ist eine Schnittstelle, die für Forçar oder MainActivity für bestimmte Merkmale verwendet wird.

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 rohe Pasta-Rese und -Arquivos de audio lá. 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 parametro a chave escolhida para o sinal de voz.

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

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

Beenden Sie die Implementierung von MainActivity.

Qualquer dúvida adicional ou sugestão basta entrar em contato com o autor. Sugestões 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.

Schritt 6: Sugestões De Continuação

Poderiamos integrar um sistema de localaização. Existiert ein Qualcomm iZat SDK, das ein lokales System mit GNSS-, Acelerômetro-, Magnetrômetro-Entre-Outros-, embutidos no próprio Processador Qualcomm Snapdragon (presente na maioria dos celulares) ist. No entanto, havia pouca documentação e necessitava de testes mais demorados.

Também gostariamos de usar um sensor de ultrassonico, porém tivemos problemas quanto a comunicação com a Dragonboard, que poderia ser resolvido com mais Calma. Se tiver tempo, procure as bibliotecas já präsentiert no kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.

Keine Website-Entwickler Qualcomm existiert für Schulungen und Schulungen, die für Sie geeignet sind, und haben keine Schulungen von 96Boards ohne You Tube.

Empfohlen: