Архив автора: sv

Калибровка камеры (Camera Calibration)

Статья на стадии разработки!!! Введение При фотограмметрической обработке снимков требуется знание элементов внутреннего ориентирования (ЭВО) камеры и данных о дисторсии, которая в камерах, не предназначенных для измерительных целей, может достигать заметных величин. Поскольку паспортные данные таких сведении не содержат возникает необходимость в калибровке камер. Калибровка камеры – это задача получения внутренних и внешних параметров камеры… Читать далее »

Преобразование mesh-модели в модель B-rep (Conversion mesh-model в B-rep model)

Введение Существует два основных типа форматов геометрических данных: сеточные (STL, OBJ) и граничные (B-Rep, от англ. Boundary Representation). Сеточные представляют собой не что иное, как набор треугольников (или полигонов в общем случае). В САПР они используются для 3D-печати . Форматы B-Rep содержат в себе куда больше данных. Они состоят из точек, кривых и поверхностей, вершин,… Читать далее »

Фотограмметрия (Photogrammetry)

Фотограмметрия — реконструкция поверхности 3D объекта с помощью фотографий (по одному или нескольким изображениям). В статье 3D-реконструкция по двум изображениям была представлена простая математическая модель восстановления облака точек. Ниже рассмотрен пример реконструкции 3D-объекта в редакторе 3DF Zephyr, совершаемого по множеству фото. Загружаем и устанавливаем 3DF Zephyr Free. Далее выполняем действия в соответствии с описаниями по ссылкам Getting started with… Читать далее »

От облака точек к поверхности (From point cloud to surface)

Введение Классификация алгоритмов перехода от облака точек к поверхности Этапы перехода от облака точек к поверхности Пакеты для 3D-визуализации сетей. Модуль PyVista Примеры, демонстрирующие возможности PyVista Форматы файлов облака точек Визуализация данных из PLY и PCD файлов Полезные ссылки Введение Облако точек (англ. point cloud) — набор вершин в трёхмерной системе координат. Эти вершины, как правило,… Читать далее »

Пример организации экзамена в ZOOM (ZOOM exam organization example)

Введение Выбор билета и формирование заданий Порядок проведения работы Введение Экзамен подготовлен для курса 2D/3D преобразования, составленного из следующих тем: 2D графика на основе WinApi C++ 3D графика на основе WinApi C++ 3D графика на основе OpenGL WinApi C++ Имитация полета крылатой ракеты на OpenGL WinApi C++ Определение ориентации 3D объекта по изображению 3D-реконструкция по… Читать далее »

Arduino проект «Автомобиль, который избегает препятствий» (Arduino project «A car that avoids obstacles»)

Статья на стадии разработки!!! Заказал самый дешевый (590 грн) конструкторский набор автомобиля (Конструктор Car kit для Arduino Uno) Полезные ссылки: Как сделать робота на Arduino UNO Сервопривод – Подключение к Ардуино Ультразвуковой дальномер HC-SR04 Кронштейн под сервоприводы SG-90 с улучшенной конструкцией Как Сделать Робота На Arduino Uno Сборка Bluetooth робота RoboCar-3 на Arduino UNO Простой… Читать далее »

Основы программирования Arduino (Arduino programming basics)

Начало работы с Ардуино на Windows Основы работы с Arduino. Оглавление Полезные ссылки Начало работы с Ардуино на Windows Покупаю через интернет Стартовый набор с платой UNO R3 для начинающих (350грн) Недостаток этого набора — отсутствие проводов с разъемами «мама-папа» и «мама-мама». Есть только провода с разъемами «папа-папа». Потому, рекомендую еще заказать недостающие провода.  Они наверняка… Читать далее »

Кратко об Arduino и Raspberry Pi (Briefly about Arduino and Raspberry Pi)

Введение Сравнение Arduino и Raspberry Pi Основные элементы Arduino UNO Основные элементы Raspberry Pi 4 Model B Полезные ссылки Введение Изначально компьютер создавался как чисто аппаратное устройство (без программирования) для решения конкретных задач. Прыжком в развитии компьютера послужила идея программного способа реализации задач (см. От машинного кода до API систем). Достоинство этого способа — универсальность, недостатки —… Читать далее »

Классификация и подключение камер видеонаблюдения (Classification and connection of CCTV cameras)

Статья на стадии разработки!!! Введение В статье Распознавание лиц с IP камер. Выбор, хранение и обработка данных для принятия решения были отражены исследования возможностей  создания робота, способного распознавать лица. Практическое применение задачи распознавания лиц отнюдь не ограничивается  компьютерным зрением робота  —  охранные системы видеонаблюдения, фиксация работников или посетителей учреждений , поимка злоумышленников и др. Решение любой задачи определяется не только… Читать далее »

Подключение Raspberry Pi камеры и инсталляция OpenCV (Connecting a Raspberry Pi camera and OpenCV installing )

Подключение камеры к Raspberry Pi Примеры подключения камеры через Python Инсталляция  OpenCV Запуск OpenCV программ на Python Полезные ссылки Подключение камеры к Raspberry Pi Приобретаю недорогую камеру для Raspberry Pi OV5647 через интернет.  Подключаю камеру к ранее установленному микрокомпьютеру Raspberry Pi B4Gb. Для испытания использую встроенные утилиты raspistill и raspivid, которые вводятся в командной строке (command in the Terminal) и служат для захвата… Читать далее »

Основы программирования на Raspberry Pi (Raspberry Pi programming basics)

Введение Комплектация Raspberry Pi Инсталляция ОС Raspbian «Hello world!» на Python «Hello world!» на Си Пример проекта: мигание светодиодов Полезные ссылки Введение Raspberry Pi может делать одну вещь гораздо более эффективнее, чем любой домашний компьютер- он может управлять внешними устройствами. Устройства могут быть абсолютно любыми, от обычной лампочки, до беспилотного летательного аппарата. Под Raspberry Pi адаптированы почти все… Читать далее »

Face recognition. Python, DLIB

Введение Верификация лица с dlib Полезные ссылки Введение В статье Распознавание лиц на основе OpenCV для C++  рассматривается подход к распознаванию на основе признаков, в качестве которых используются расстояния между характерными точками лица. Альтернативный метод распознавания лиц. Изображение каждого лица обрабатывается уже обученной сверточной нейронной сетью (см. ссылку  или  ссылку), которая выдает на выходе матрицу из 80… Читать далее »

Распознавание лиц с IP камер. Выбор, хранение и обработка данных для принятия решения (Face recognition from IP cameras. Selection, storage and processing of data for decision making)

Введение Подключение IP камеры и доступ к видео-потоку Решение проблемы торможения видео-потока от IP камеры Цикличное переключение видеопотоков от разных камер Детекция лиц с landmarks точками Формализация задачи распознавания лица Выбор из видео-потока корректных изображений лиц Выбор признаков лица Принятие решения при распознавании лица Чтение и запись данных Полезные ссылки Введение Получил комментарий к одной из статей по… Читать далее »

Адекватность и оптимальность нейронной сети на примере распознавания поворота головы (Adequacy and optimality of the neural network for detecting head rotation)

Введение Постановка задачи Проверка нейронной сети на адекватность Выбор архитектуры сети Парадокс нейронной сети Наклон сигмоидальной функции Размер и соотношение разнотипных сигналов в обучающей выборке Линия размежевания разнотипных сигналов в обучающей выборке Обучение сети положительному (YES) и отрицательному (NO) жестам головой Анализ и выбор данных Общие выводы Программный код для проведения экспериментов Полезные ссылки Введение Первое,… Читать далее »

Машинное обучение распознавать поворот лица (Machine learning to recognize face turn)

Введение Постановка задачи Оценка возможностей распознавать поворот лица через машинное обучение Программный код (вариант 1) Программный код (вариант 2) Адекватность и оптимальность нейронной сети для распознавания поворота головы Полезные ссылки Введение Как не зная алгоритм, а просто имея данные и ответ, получить из них алгоритм?  Альтернатива традиционному алгоритмическому подходу – нейронная сеть, которую можно обучать предсказывать… Читать далее »

Introduction to AI and references

Artificial Intelligance (AI) — это широкое понятие, которое включает в себя все: от обычной алгоритмической классификации, по введенным непосредственно в код условий с признаками, до технологий, таких как Deep Learning (DL). Простыми словами — все, что выполняется на основе алгоритма, можно назвать искусственным интеллектом. Примеры: Алгоритмы распознавания геометрических фигур Программа сравнения лиц по одному признаку… Читать далее »

Tensorflow, Python, Visual Studio. Quick start

Введение Создание проекта и установка пакетов Предсказание результата по выборке для обучения Линейная регрессия Полезные ссылки Введение TensorFlow – популярнейший инструмент для машинного обучения нейросетей. В качестве упрощенного варианта понимания машинного обучения вы можете представить себе алгоритмы машинного обучения как функции, которые подбирают значения внутренних переменных таким образом, чтобы соответствующим входным значениям соответствовали корректные выходные… Читать далее »

AI based on Unity ML Agents. Quick start

Введение Инсталляция плагина ML Agents Создание среды для обучения NPC-агента Запуск процесса обучения Вывод результатов обучения через  Tensorboard Полезные ссылки Введение ML Agents — это плагин, который обеспечивает обучение NPC-агентов в Unity. NPC (от англ. Non-Player Character) — персонаж в играх, который не находится под контролем игрока. Любую задачу можно решить алгоритмически (см., например, Unity3D симулятор «Умная… Читать далее »

Модификация простой игры на Unity (Modification of a simple game on Unity)

Введение Исходная игра Сюжет модификации игры Полезные ссылки Введение Решение любой задачи определяется целью и возможностями реализации. В первом приближении возможности Unity для создания игр  были рассмотрены в статьях: Основы Unity3D Игра “Snake” на Unity3D Unity3D симулятор «Умная змейка со стереозрением» Ознакомившись с ними, попробуйте создать собственную простую игру. Благо, заготовка исходной игры уже есть.… Читать далее »

WEB на Python с Django в Visual Studio

Введение Базовый проект на основе шаблона «Blank Django Web Project» Создание своего приложения в базовом проекте Использование шаблонов страниц Обслуживание статических файлов Добавление страницы в приложение Использование элемента в нескольких шаблонах Полезные ссылки Введение Python в Visual Studio поддерживает разработку веб-проектов в frameworks: Bottle, Django и Flask. Ниже приводится перевод с английского некоторых из разделов Tutorial:… Читать далее »

Раздел: Web

WEB на Python с Flask в Visual Studio

Введение Flask веб-сайт  с нуля Веб-сайт на основе Flask шаблона Полезные ссылки Введение Python в Visual Studio поддерживает разработку веб-проектов в frameworks Bottle, Django и Flask. Ниже рассмотрен процесс создания веб-сайта на основе Flask framework Перед началом разработки приложения убедитесь, что  для Visual Studio установлена поддержка «Разработка на Python». Она устанавливается через Visual Studio Installer. Flask веб-сайт  с нуля Создайте проект:… Читать далее »

Раздел: Web

Обнаружение лица и выделение характерных точек (Face Detection in Python)

Введение Обнаружение лица через OpenCV Обнаружение лица в реальном времени (с помощью веб-камеры) Обнаружение лица через MTCNN Извлечение изображений лиц из фото Выделение характерных точек лица Обнаружение лица и выделение характерных точек  в реальном времени Обнаружение лица и выделение характерных точек через DLIB Полезные ссылки Введение Обнаружение лица — локализация и выделение области лица из фона. Это… Читать далее »

Нейросеть для классификации фруктов на Python (Fruit Neural Network)

Введение Гистограммы изображений Создание Pickle-файлов Структура нейросети Полезные ссылки Введение В статье Идентификация образов по цвету, текстуре и форме  рассмотрен алгоритмический подход к решению задачи распознавания фруктов. В статье Artificial Neural Network Implementation using NumPy and Classification of the Fruits360 Image Dataset автора Ahmed Gad рассматривается альтернативный подход к решению подобной задачи  — с помощью нейросети (Artificial Neural… Читать далее »

Простейшие нейронные сети на Python в Visual Studio (Python neural networks in Visual Studio)

Введение Создание нейронной сети в Visual Studio (версия кода 1) Простая нейронная сеть (версия кода 2) Простая нейронная сеть (версия кода 3) Полезные ссылки Введение Из статьи вы узнаете, как написать простую нейросеть на Python в среде Visual Studio (VS). Для более глубокого понимания проблематики приводятся примеры различных  версий кода — от простого из 7 строк до более профессионального.… Читать далее »

Быстрый старт в WebGL (Quickstart in WebGL)

Введение Пример простого WebGL приложения Шаг 1. Определение WebGL контекста Шаг 2. Создание 3D-модели и сохранение ее в буферах Шаг 3. Создание, компиляция и подключение шейдеров Шаг 4. Связывание шейдеров с буферами Шаг 5. Отображение графики Полезные ссылки Введение WebGL (Web-based Graphics Library) — кроссплатформенный API для 3D-графики в браузере. WebGL следует клиентскому подходу генерации цифрового… Читать далее »

Быстрый старт в WEB программирование (Quickstart in WEB programming)

Введение Front-end и Back-end. Что это? Front-end разработка. HTML, CSS и JS Редакторы кода Описание и установка локального сервера Open Server Back-end разработка. PHP, MySQL WordPress разработка Полезные ссылки  Введение WEB (англ. web — паутина) —  система доступа к связанным между собой документам на различных компьютерах, подключённых к Интернету. WEB-программирование — раздел программирования, ориентированный на разработку… Читать далее »

Раздел: Web

Быстрый старт с Qt C++ в Visual Studio (Quickstart with Qt C++ in Visual Studio)

Введение Инсталляция библиотеки Qt в  Visual Studio Qt GUI приложение «Hello, World!» Signals и slots. Обработка событий Qt Desiner. Создание GUI в интерактивном режиме Полезные ссылки Введение Сегодня практически невозможно представить приложение, в котором нет графического интерфейса пользователя (GUI -Graphical User Interface). Windows API обладает необходимыми инструментами для создания GUI. Однако их использование требует больших затрат… Читать далее »

Быстрый старт с Python в Visual Studio (Quickstart with Python in Visual Studio)

Введение Инсталляция Python в  Visual Studio Приложение «Hello, Visual Studio!» Основы Python GUI-приложения Связывание Python и C/C++ Полезные ссылки Введение Python — это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Python относится к наиболее востребованным и популярным языкам программирования. Достоинства языка:… Читать далее »

Распознавание лиц. 3D- реконструкция ASM модели (Face Recognition. 3D reconstruction of ASM)

Постановка задачи Пространственная система координат, привязанная к лицу Алгоритм определения 3D-координат Программа для тестирования предложенного метода Полезные ссылки Постановка задачи В статье Распознавание лиц на основе OpenCV для C++  изложены концепции распознавания лиц  на основе ASM (Active Shape Models). Признаки для идентификации определяются из статистических связей (расстояний) между расположением антропометрических точек лица. Очевидно, что расстояния между точками проецируются… Читать далее »

Идентификация по множеству признаков при помощи нейросети (Identification by multiple features. Using neural network)

Постановка задачи Модель нейросети для идентификации Оптимизация погрешности выходных сигналов Полезные ссылки Постановка задачи Ниже исследуются возможности решения задачи идентификации по множеству признаков с помощью нейронной сети (НС). Распознающую систему представим в виде «чёрного ящика». У этого ящика есть n входов, на которые подаются значения признаков субъекта для распознавания x={x1,x2,…,xn}, и k выходов y={y1,…,yk} (по… Читать далее »

Идентификация по множеству признаков. Основы (Identification by multiple features. Basics)

Постановка задачи Классификация множеств признаков Идентификация субъекта по сумме одинаковых оценок признаков Средневзвешенная оценка веса признаков Последовательный попарный отбор претендентов на сходство Отбор претендентов на сходство по круговой системе Оценка признака на основе треугольного закона распределения Полезные ссылки Постановка задачи На сайте рассмотрено решение двух задач: Идентификация образов по цвету, текстуре и форме; Распознавание лиц… Читать далее »

Unity3D симулятор «Умная змейка со стереозрением» (Unity3D simulator «Smart snake with stereo vision»)

Постановка задачи Движение змейки к цели по прямой Установка камер на глазах змейки Поток изображений с камер Формализация движения в обход преград Считывание и анализ точек изображений Определение траектории движения Полезные ссылки Постановка задачи В статье Игра “Snake” на Unity3D было рассмотрено, как создать игру «Змейка». Змейка двигается вперед и меняет направление под управлением клавиш влево/вправо. Задача… Читать далее »

Игра “Snake” на Unity3D (The game “Snake” on Unity3D)

Архитектура проекта Подготовка ресурсов Сцена MainMenu Сцена GameOver Сцена Level Скрипт LookAt Скрипт Tail Скрипт Player Скрипт Game Контрольное задание Архитектура проекта Сюжет игры и ее программная реализация на языке Java рассмотрены в разделе Игровое приложение ”Snake”.   Также см.  Snake Game with OpenCV Python  and the Python code.   Ниже рассмотрено, как можно создать эту игру в… Читать далее »

Основы Unity3D (Unity3D Basics)

Ввеление Интерфейс редактора Unity3D Панель инструментов Игровые объекты и их компоненты. Rigidbody C# скрипты Префабы Уничтожение объектов при запуске (runtime) Создание объектов при запуске (runtime) Добавление текстуры Подключение аудио Создание таймера при помощи скриптов Движение объектов Взаимодействие пользователя с приложением Соединения Интерфейс пользователя (UI). Переключение сцен Наследование на примере создания часов Создание окружающей среды Полезные… Читать далее »

Архитектура WebGL приложения для чайников (WebGL application architecture for Dummies)

Введение Приложение WebGL-Interactive Cube Матрицы для определения позиции вершины Задача модификации WebGL-Interactive Cube  в приложение Рупорная антенна Композиция элементарных преобразований в приложении WebGL-Interactive Cube Массивы, буферы и примитивы для определения модели Описание элементов модели через ассоциативные массивы Полезные ссылки Введение Архитектура WebGL-приложения относительно сложная для новичка в программировании и 3D моделировании.  Лучший способ разобраться в этой сложности… Читать далее »

Оптимизация OpenGL приложений (Optimizing OpenGL applications)

OpenGL конвейер Модель  клиент-сервер Пошаговый и пакетный режимы Массивы вершин Vertex Buffer Objects Полезные ссылки OpenGL конвейер OpenGL – библиотека (API — Application Programming Interface) для обработки графической информации и прямого доступа к железу («software interface to graphics hardware», как обозначаются они в спецификации). Библиотека содержит набор уже однажды написанных функций, от самых простых (вывод… Читать далее »

Взаимодействие HTML5 и JavaScript (HTML5 and JavaScript interaction)

Введение Структура  HTML документа Подключение и выполнение JavaScript Объектная модель HTML-документа Отображение графики с помощью элемента <canvas> Описание игры “Уголки” Полезные ссылки   Введение В Web приложениях элементы интерфейса описывается в HTML файлах, а логика приложения – в коде javascript (JS). При создании программных систем стремятся, чтобы описание данных, по возможности, было отделено от описания управляющих… Читать далее »

Раздел: Web

Shaders in Unity3d

Введение CPU и GPU Типы шейдеров Конвейер программного рендеринга Простые примеры написания шейдеров Полезные ссылки Введение Движок (жаргонизм от англ. engine – мотор, двигатель) – выделенная часть программного кода для реализации конкретной прикладной задачи. Использование движка сокращает время разработки программы. Графический движок – движок, основной задачей которого является визуализация (рендеринг) двухмерной или трёхмерной компьютерной графики. В… Читать далее »

Матрицы поворота, углы Эйлера и кватернионы (Rotation matrices, Euler angles and quaternions)

Матрицы преобразований Матрицы поворота и углы Эйлера Axis Angle представление вращения Кватернионы Основные операции над кватернионами Умножение кватернионов Конвертирование между кватернионом и Axis Angle представлением Конвертирование кватерниона в матрицу поворота Конвертирование матрицы поворота в кватернион Полезные ссылки Матрицы преобразований Объект обычно определяется в удобной для его описания локальной системе координат (ЛСК), а его положение  в пространстве… Читать далее »

Выделение объектов на изображении по методу Виолы-Джонса (Object selection in the image according to the Viola-Jones method)

Объекты (например, лица) выделяются, если признаки в сканирующем окне совпадают с признаками на выделенной окном части изображения: Этот подход к детектированию объектов на изображении комбинирует четыре ключевые концепции: Простые прямоугольные функции-признаки, называемые функциями Хаара. Интегральное изображение для быстрого обнаружения функции. Метод машинного обучения AdaBoost. Каскадный классификатор для эффективного совмещения множественных функций. Результаты обучения каскадов складываются… Читать далее »