Съдържание:

Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Приложение Android: 6 стъпки
Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Приложение Android: 6 стъпки

Видео: Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Приложение Android: 6 стъпки

Видео: Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Приложение Android: 6 стъпки
Видео: Truck Campers for Adventurous Travelers: Top 10 Picks 2024, Юни
Anonim
Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android
Vision 4all - Система Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android

DESCRIÇÃO

O intuito do projeto é dar autonomia para defeentes visuais se locomoverem em ambientes закрит como casas или търговски центрове и аеропорти.

A locomoção em ambientes já mapeados pode ou não ser obzirrado um problem bem resovido. Умерете приложението в App Store, за да можете да го направите, а сърва апенас за 3 ambientes и apenas nos EUA, или Guide на LowViz. Além do limitado número de locais, tal aplicativo não detecta possíveis obstáculos e 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 recorcular o caminho a ser seguido dando nezavisência e empoderando o usu Na prática, o projeto, embora ainda incompleto, consiste em integrar um aplicativo de onde se pode submeter ou desenhar uma planta baixa do local de interesse, seja uma casa ou пазаруване. 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. A câmera, quando detecta um obstáculo a frente, настройка за спомен за 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 Competitir com outras aplicações como seria no celular) e ao mesmo tempo seja de baixo custom.

Стъпка 1: Материали

Материали
Материали

Para este projeto vamos utilizar:

- ума плака Qualcomm Dragonboard 410c;

- библиотека за обработка на изображение OpenCV (версия 3.1);

- камерата que se comunique com a placa (usaremos na verdade um celular android com или aplicativo IP Webcan);

- мобилна система за Android за приложение или приложение;

Стъпка 2: Instalando OpenCV Na Dragonboard

Instalando OpenCV Na Dragonboard
Instalando OpenCV Na Dragonboard

Com linux инсталирано на платка, за да преминете през процедурата за инсталиране на библиотека за обработка на imagem - OpenCV - без устройство. Siga as instruções deste link:

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

Стъпка 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 câmera que serão os olhos do deficente com a placa de desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. Dragonboard има възможност за използване на плоски кабели, ou seja, é compatível com as câmeras usadas comumente em placas como a Raspberry pi.

Следващ проект, опция за използване на камерата в Moto G 3ª Geração com за приложение на уеб уеб камера (изпратено в Google Play), което позволява разрешаване на изображение, което прехвърля на wifi.

Abaixo um program que faz aquisição simples da imagem usando a biblioteca opencv. Свържете се с парола, която не е конструктор за обекти VideoCapture и IP за мобилни устройства (показва се без приложение) + „/видеофийд“. В imagem acima, você encontra onnde está или IP до seu клетъчен.

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

Стъпка 4: Софтуерът на Desenvolver De Processamento De Imagens Que Toma Decisões

Image
Image
Софтуер на Desenvolver De Processamento De Imagens Que Toma Decisões
Софтуер на Desenvolver De Processamento De Imagens Que Toma Decisões
Софтуер на Desenvolver De Processamento De Imagens Que Toma Decisões
Софтуер на Desenvolver 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).

Explicação: A ideia de identificação de obstáculo vem да determinação dos contornos mais drásticos nas imagens do vídeo, ou seja, o código identifica mudanças drásticas de cores на imagem e заключение que isso seja um contorno e portanto um imo обето стъпка). Estando a câmera na barriga do usuário, levemente inclinada para o chão, conforme o usuário se locomove, o program identifica a existência de um objeto (seja uma pessoa ou uma cadeira por exemplo) e manda o sinal de parada caso o objeto seja encontrado na região especificada (caminho do usuário) (вижте imagem до contorno da cadeira - caso o usuário се приблизително да cadeira haverá пиксели brancos на 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 simpleficada, é needário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam obzirrados 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.

Funcionamento: o identificadorDeObstáculos.cpp recebe um video за да 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 o código de acordo para especificar de onde os vídeos são recebidos e para qual android as informações são encaminhadas. Os tipos de alterações são especificadas no próprio código (assim como nos programas de teste) коментира no início до програма.

Para sabre mais sobre bordas de Canny e limiarização, além de outros tópicos de visão computacional, препоръчвам-се прокурира официален документ за OpenCV.

Стъпка 5: Fazer Aplicativo Que Repassa As Informações Para O Deficiente Visual

Para reproduzir este projeto é needá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 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 consulting a este banco com o auxílio da classe okhttp3 obtendo as informações como um Json. Então fazemos um 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 като класове e Интерфейси, използвани за проектиране, que são exlicadas a seguir:

GetJson: é използване на fazer um не получавам банко от dados да data.sparkfun retornando um arquivo им форматиране json за приложение.

JsonDownloader: é onnde geramos uma asynctask para de fato utilizarmos a classe GetJson, импортиращ към uso desta classe é para não travarmos интерфейс за използване и пара isso precisamos criar uma нишка, различаваща се в приложението.

MainActivity: nesta classe implementamos a lógica да aplicação que continuamente консултации относно banco de dados, e информация за usuário por meio de um audio се ele precisa para или o pode непрекъснато caminhando.

RequestListener: Интерфейсът на интерфейса се използва за forçar или MainActivity за определени характеристики.

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 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 parâmetro a chave escolhida para o sinal de voz.

Предупреждения: essa classe é utilizada para facilitar или parser do json retornado pelo banco de dados.

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

O оформление за прилагане на консистенция от ум único botão que funcionava com o método Излезте от изпълнението на MainActivity, este método simplesmente forçava a aplicação за консултация без banco de dados.

Qualquer dúvida е допълнително или най -доброто въвеждане в контакта с автора. 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.

Стъпка 6: Sugestões De Continuação

Poderiamos интегратор в системата за локализиране. Съществува SDK на Qualcomm iZat, който е в състояние да локализира Que САЩ GNSS, ацелерометър, магнитометър, изходен изход, вграден без първичен процесор Qualcomm Snapdragon (представен на maioria dos celulares). No entanto, havia pouca documentação e needitava de testes mais demorados.

Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problemsmas quanto a comunicação com a Dragonboard, que poderia ser resovido com mais calma. Превърнете се в темпо, закупете като библиотека, която не представя комплект за десенволвименто, или можете да използвате диверсионен екземпляр за кадиране на сензора.

Няма разработчици на сайтове Qualcomm existem fóruns и tutoriais que podem ajudar, e ainda há os os tutoriais da 96Boards no you tube.

Препоръчано: