Файл: 2. Разработка Программного продукта. 1 Концепция приложения.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 60
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
пусть будет так, и этот процесс делается для разных октав изображения в гауссовой пирамиде. Он представлен на изображении ниже:
Рисунок 4-просеивание
Как только этот DoG найден, изображения ищутся на предмет локальных экстремумов по масштабу и пространству. Например, один пиксель изображения сравнивается с 8 его соседями, а также с 9 пикселями в следующем масштабе и 9 пикселями в предыдущем масштабе. Если это локальные экстремумы, то это потенциальная ключевая точка. В основном это означает, что ключевая точка лучше всего представлена в этой шкале. Это показано на изображении ниже:
Рисунок 5 -ПРОСЕИВАНИЕ
Как только потенциальные ключевые точки найдены, их необходимо уточнить, чтобы получить более точные результаты. Они использовали разложение масштабного пространства в ряд Тейлора, чтобы получить более точное местоположение экстремумов, и если интенсивность в этих экстремумах меньше порогового значения (0,03 согласно статье), оно отбрасывается. Этот порог называется контрастным порогом в OpenCV DoG, который имеет более высокую реакцию на края, поэтому края также необходимо удалить. Для этого используется концепция, аналогичная угловому детектору Харриса. Они использовали матрицу Гессе 2x2 (H) для вычисления главной кривизны. Из углового детектора Харриса мы знаем, что для ребер одно собственное значение больше другого. Если это отношение превышает пороговое значение, называемое пороговым значением края в OpenCV, эта ключевая точка отбрасывается. На бумаге это 10.
Теперь каждой ключевой точке назначается ориентация для достижения инвариантности к вращению изображения. Окрестность берется вокруг местоположения ключевой точки в зависимости от масштаба, и в этой области вычисляются величина и направление градиента. Создается гистограмма ориентации с 36 ячейками, охватывающими 360 градусов. (Он взвешивается по величине градиента и круглому окну, взвешенному по Гауссу, в 1,5 раза превышающему масштаб ключевой точки. Берется самый высокий пик на гистограмме, и любой пик выше 80% также учитывается для расчета ориентации. Он создает ключевые точки. с одинаковым расположением и масштабом, но разными направлениями, что способствует стабильности сопоставления.
Теперь создан дескриптор ключевой точки. Берется окрестность 16x16 вокруг ключевой точки. Он разделен на 16 подблоков размером 4x4. Для каждого подблока создается гистограмма ориентации с 8 бинами. Таким образом, всего доступно 128 значений бинов. Он представлен в виде вектора для формирования дескриптора ключевой точки. В дополнение к этому, предпринимаются некоторые меры для обеспечения устойчивости к изменениям освещения, вращению и т. д.
Ключевые точки между двумя изображениями сопоставляются путем определения их ближайших соседей. Но в некоторых случаях второе ближайшее совпадение может быть очень близко к первому. Это может произойти из-за шума или по другим причинам. В этом случае берется отношение ближайшего расстояния ко второму ближайшему расстоянию. Если он больше 0,8, они отбраковываются. Он устраняет около 90% ложных совпадений и отбрасывает только 5% правильных совпадений.
Рисунок 6- значок GCM
Google Cloud Messaging (GCM) — это бесплатная служба, которая позволяет разработчикам отправлять нисходящие сообщения (от серверов к клиентским приложениям с поддержкой GCM) и исходящие сообщения (от клиентских приложений с поддержкой GCM к серверам). Это может быть легкое сообщение, сообщающее клиентскому приложению, что есть новые данные, которые нужно получить с сервера (например, уведомление «новое электронное письмо», информирующее приложение о том, что оно не синхронизировано с серверной частью), или это может быть сообщение, содержащее до 4 КБ данных полезной нагрузки (поэтому такие приложения, как обмен мгновенными сообщениями, могут использовать сообщение напрямую). Служба GCM обрабатывает все аспекты постановки сообщений в очередь и их доставки в целевое клиентское приложение и из него.
Реализация GCM включает сервер подключения, предоставленный Google, сторонний сервер приложений, который взаимодействует с сервером подключения, и клиентское приложение с поддержкой GCM. Например, на этой диаграмме показано, как GCM взаимодействует с клиентским приложением на устройстве Android:
Рисунок 5- Схема работы приложения
Вот как взаимодействуют эти компоненты:
Поток жизненного цикла приложения
Клиентская часть (мобильное приложение)
Рисунок 9-Этап регистрации
Отправка сообщения клиентскому приложению
Рисунок 10- Отправка Сообщений схема
Получить сообщение.Сторонний сервер приложений получает сообщение от XMPP (CCS), а затем выполняет следующие действия:
Android Studio — это официальная среда разработки приложений для Android, основанная на IntelliJ IDEA. Мы используем это программное обеспечение для разработки нашего приложения для Android, которое получает сообщение от сервера обмена сообщениями Google Cloud. Android Studio предлагает:
Google App Engine (часто называемый GAE или просто App Engine) — это платформа облачных вычислений «платформа как услуга» (PaaS) для разработки и размещения веб-приложений в центрах обработки данных, управляемых Google. Приложения изолированы и работают на нескольких серверах. App Engine предлагает автоматическое масштабирование для веб-приложений: по мере увеличения количества запросов для приложения App Engine автоматически выделяет больше ресурсов для веб-приложения, чтобы справиться с дополнительным спросом. Google App Engine предоставляется бесплатно до определенного уровня потребляемых ресурсов. Плата взимается за дополнительное хранилище, пропускную способность или часы работы экземпляра, требуемые приложением.
OpenCV (Open Source Computer Vision) — это библиотека функций программирования, в основном предназначенная для компьютерного зрения в реальном времени, разработанная исследовательским центром Intel Россия в Нижнем Новгороде. Он бесплатен для использования по лицензии BSD с открытым исходным кодом. Библиотека кроссплатформенная. Основное внимание уделяется обработке изображений в реальном времени. Если библиотека обнаружит в системе интегрированные примитивы производительности Intel, она будет использовать эти проприетарные оптимизированные подпрограммы для собственного ускорения. Мы используем библиотеки OpenCV для видеообработки входного видео для идентификации людей.
Облачные системы обмена сообщениями нуждаются в определенных компонентах для правильной работы. Компоненты работают вместе, чтобы обеспечить весь сервис. Любой компонент, который не работает должным образом, приведет к сбою всей системы. Общие компоненты системы описаны и указаны в таблице 9.
Таблица 9-Технические характеристики ГКМ
В следующей таблице перечислены цели, параметры и полезная нагрузка для сообщений HTTP или XMPP JSON.
Рисунок 4-просеивание
Как только этот DoG найден, изображения ищутся на предмет локальных экстремумов по масштабу и пространству. Например, один пиксель изображения сравнивается с 8 его соседями, а также с 9 пикселями в следующем масштабе и 9 пикселями в предыдущем масштабе. Если это локальные экстремумы, то это потенциальная ключевая точка. В основном это означает, что ключевая точка лучше всего представлена в этой шкале. Это показано на изображении ниже:
Рисунок 5 -ПРОСЕИВАНИЕ
Как только потенциальные ключевые точки найдены, их необходимо уточнить, чтобы получить более точные результаты. Они использовали разложение масштабного пространства в ряд Тейлора, чтобы получить более точное местоположение экстремумов, и если интенсивность в этих экстремумах меньше порогового значения (0,03 согласно статье), оно отбрасывается. Этот порог называется контрастным порогом в OpenCV DoG, который имеет более высокую реакцию на края, поэтому края также необходимо удалить. Для этого используется концепция, аналогичная угловому детектору Харриса. Они использовали матрицу Гессе 2x2 (H) для вычисления главной кривизны. Из углового детектора Харриса мы знаем, что для ребер одно собственное значение больше другого. Если это отношение превышает пороговое значение, называемое пороговым значением края в OpenCV, эта ключевая точка отбрасывается. На бумаге это 10.
Теперь каждой ключевой точке назначается ориентация для достижения инвариантности к вращению изображения. Окрестность берется вокруг местоположения ключевой точки в зависимости от масштаба, и в этой области вычисляются величина и направление градиента. Создается гистограмма ориентации с 36 ячейками, охватывающими 360 градусов. (Он взвешивается по величине градиента и круглому окну, взвешенному по Гауссу, в 1,5 раза превышающему масштаб ключевой точки. Берется самый высокий пик на гистограмме, и любой пик выше 80% также учитывается для расчета ориентации. Он создает ключевые точки. с одинаковым расположением и масштабом, но разными направлениями, что способствует стабильности сопоставления.
Теперь создан дескриптор ключевой точки. Берется окрестность 16x16 вокруг ключевой точки. Он разделен на 16 подблоков размером 4x4. Для каждого подблока создается гистограмма ориентации с 8 бинами. Таким образом, всего доступно 128 значений бинов. Он представлен в виде вектора для формирования дескриптора ключевой точки. В дополнение к этому, предпринимаются некоторые меры для обеспечения устойчивости к изменениям освещения, вращению и т. д.
Ключевые точки между двумя изображениями сопоставляются путем определения их ближайших соседей. Но в некоторых случаях второе ближайшее совпадение может быть очень близко к первому. Это может произойти из-за шума или по другим причинам. В этом случае берется отношение ближайшего расстояния ко второму ближайшему расстоянию. Если он больше 0,8, они отбраковываются. Он устраняет около 90% ложных совпадений и отбрасывает только 5% правильных совпадений.
Рисунок 6- значок GCM
Google Cloud Messaging (GCM) — это бесплатная служба, которая позволяет разработчикам отправлять нисходящие сообщения (от серверов к клиентским приложениям с поддержкой GCM) и исходящие сообщения (от клиентских приложений с поддержкой GCM к серверам). Это может быть легкое сообщение, сообщающее клиентскому приложению, что есть новые данные, которые нужно получить с сервера (например, уведомление «новое электронное письмо», информирующее приложение о том, что оно не синхронизировано с серверной частью), или это может быть сообщение, содержащее до 4 КБ данных полезной нагрузки (поэтому такие приложения, как обмен мгновенными сообщениями, могут использовать сообщение напрямую). Служба GCM обрабатывает все аспекты постановки сообщений в очередь и их доставки в целевое клиентское приложение и из него.
Реализация GCM включает сервер подключения, предоставленный Google, сторонний сервер приложений, который взаимодействует с сервером подключения, и клиентское приложение с поддержкой GCM. Например, на этой диаграмме показано, как GCM взаимодействует с клиентским приложением на устройстве Android:
Рисунок 5- Схема работы приложения
Вот как взаимодействуют эти компоненты:
-
Предоставляемые Google серверы соединений GCM принимают сообщения от стороннего сервера приложений и отправляют эти сообщения в клиентское приложение с поддержкой GCM («клиентское приложение»). В настоящее время Google предоставляет серверы соединений для HTTP и XMPP. -
Сторонний сервер приложений — это компонент, который мы внедряем для работы с выбранными нами серверами подключения GCM. Сервер приложений отправляет сообщения на сервер соединений GCM, который затем ставит в очередь и сохраняет сообщение и, наконец, отправляет его клиентскому приложению. -
Клиентское приложение — это клиентское приложение с поддержкой GCM. Чтобы получать сообщения GCM, это приложение должно зарегистрироваться в GCM и получить идентификатор регистрации. Если мы используем сервер соединений XMPP (CCS), клиентское приложение также может отправлять «восходящие» сообщения обратно на сторонний сервер приложений.
Поток жизненного цикла приложения
Клиентская часть (мобильное приложение)
-
Зарегистрируйтесь, чтобы включить GCM. Клиентское приложение регистрируется для получения сообщений. -
Отправлять и получать нисходящие сообщения.
-
Получить сообщение. Клиентское приложение получает сообщение от сервера GCM. -
Отправлять и получать восходящие сообщения.Эта функция доступна только в том случае, если вы используете сервер облачных подключений XMPP (CCS).
-
Отправить сообщение. Клиентское приложение отправляет сообщения на сторонний сервер приложений:
-
На устройстве клиентское приложение отправляет сообщения в XMPP (CCS). -
XMPP (CCS) ставит в очередь и сохраняет сообщение, если сервер отключен. -
Когда сторонний сервер приложений повторно подключается, XMPP (CCS) отправляет сообщение на сторонний сервер приложений.
Рисунок 9-Этап регистрации
Отправка сообщения клиентскому приложению
-
Сторонний сервер приложений отправляет сообщение на серверы подключения GCM. -
Сервер подключения GCM ставит в очередь и сохраняет сообщение, если Устройство находится в автономном режиме. -
Когда устройство подключено к сети, сервер подключения GCM отправляет сообщение на устройство. -
На устройстве клиентское приложение получает сообщение в зависимости от платформы.
Рисунок 10- Отправка Сообщений схема
Получить сообщение.Сторонний сервер приложений получает сообщение от XMPP (CCS), а затем выполняет следующие действия:
-
Анализирует заголовок сообщения, чтобы проверить информацию об отправителе клиентского приложения. -
Отправляет «подтверждение» серверу подключения GCM XMPP, чтобы подтвердить получение сообщения. -
При необходимости анализирует полезные данные сообщения, как определено клиентским приложением.
Android Studio — это официальная среда разработки приложений для Android, основанная на IntelliJ IDEA. Мы используем это программное обеспечение для разработки нашего приложения для Android, которое получает сообщение от сервера обмена сообщениями Google Cloud. Android Studio предлагает:
-
Гибкая система сборки на основе Gradle -
Варианты сборки и создание нескольких APK-файлов -
Шаблоны кода, которые помогут вам создавать общие функции приложения -
Богатый редактор макетов с поддержкой редактирования темы перетаскиванием -
инструменты lint для определения производительности, удобства использования, совместимости версий и других проблем -
ProGuard и возможности подписи приложений -
Встроенная поддержка Google Cloud Platform, упрощающая интеграцию Google Cloud Messaging и App Engine.
Google App Engine (часто называемый GAE или просто App Engine) — это платформа облачных вычислений «платформа как услуга» (PaaS) для разработки и размещения веб-приложений в центрах обработки данных, управляемых Google. Приложения изолированы и работают на нескольких серверах. App Engine предлагает автоматическое масштабирование для веб-приложений: по мере увеличения количества запросов для приложения App Engine автоматически выделяет больше ресурсов для веб-приложения, чтобы справиться с дополнительным спросом. Google App Engine предоставляется бесплатно до определенного уровня потребляемых ресурсов. Плата взимается за дополнительное хранилище, пропускную способность или часы работы экземпляра, требуемые приложением.
OpenCV (Open Source Computer Vision) — это библиотека функций программирования, в основном предназначенная для компьютерного зрения в реальном времени, разработанная исследовательским центром Intel Россия в Нижнем Новгороде. Он бесплатен для использования по лицензии BSD с открытым исходным кодом. Библиотека кроссплатформенная. Основное внимание уделяется обработке изображений в реальном времени. Если библиотека обнаружит в системе интегрированные примитивы производительности Intel, она будет использовать эти проприетарные оптимизированные подпрограммы для собственного ускорения. Мы используем библиотеки OpenCV для видеообработки входного видео для идентификации людей.
Облачные системы обмена сообщениями нуждаются в определенных компонентах для правильной работы. Компоненты работают вместе, чтобы обеспечить весь сервис. Любой компонент, который не работает должным образом, приведет к сбою всей системы. Общие компоненты системы описаны и указаны в таблице 9.
Таблица 9-Технические характеристики ГКМ
Составные части | |
Серверы соединений GCM | Предоставленные Google серверы, участвующие в отправке сообщений между Сторонний сервер приложений и клиентское приложение. |
Клиентское приложение | Клиентское приложение с поддержкой GCM, которое взаимодействует со сторонним сервером приложений. |
Стороннее приложение Сервер | Сервер приложений, который вы пишете как часть реализации GCM. Сторонний сервер приложений отправляет данные клиентскому приложению через сервер подключения GCM. |
Реквизиты для входа | |
Удостоверение личности отправителя | Номер проекта, который вы получаете из консоли API. Идентификатор отправителя используется в процессе регистрации.для определения стороннего сервера приложений, которому разрешено отправлять сообщения клиентскому приложению. |
Авторизация отправителя Токен | Ключ API, сохраненный на стороннем сервере приложений, который предоставляет серверу приложений авторизованный доступ к службам Google. Ключ API включается в заголовок запросов POST. |
Идентификатор приложения | Клиентское приложение, которое регистрируется для получения сообщений. Как это реализовано, зависит от платформы. Например, приложение для Android идентифицируется пакетом имя из манифеста. Это гарантирует, что сообщения будут адресованы правильному приложение для Android. |
Идентификатор регистрации | Идентификатор, выдаваемый серверами GCM клиентскому приложению, который позволяет ему получать сообщения. Обратите внимание, что регистрационные идентификаторы должны храниться в секрете. |
В следующей таблице перечислены цели, параметры и полезная нагрузка для сообщений HTTP или XMPP JSON.
| Параметр | протоколл | Применение | Описание | |||
| Цели | ||||||
| К | XMPP | Обязательно, строка | Этот параметр указывает получателя сообщения. Значение должно быть идентификатором регистрации. /ключ уведомления. Этот параметр используется в XMPP вместо Registration_ids или ключа уведомления в HTTP. | |||
| Registration_ids | HTTP | Требуется, если уведомление_ключнет, строка множество | Этот параметр указывает список устройств (идентификаторов регистрации), получающих сообщение. Он должен содержать не менее 1 и не более 1000 регистрационных идентификаторов. Многоадресные сообщения (отправленные более чем на 1 идентификатор регистрации) разрешены только в формате HTTP JSON. Этот параметр или ключ уведомления используется в HTTP вместо to в XMPP. | |||
| уведомление_ключ | HTTP | Требуется, если Registration_id не указан, строка | Этот параметр определяет сопоставление одного пользователя с несколькими идентификаторами регистрации, связанными с этим пользователем. Это позволяет стороннему серверу приложений отправлять одно сообщение нескольким экземплярам приложения (обычно на нескольких устройствах), принадлежащим одному пользователю. Сторонний сервер приложений может использовать notification_key в качестве цели для сообщения вместо индивидуального идентификатора регистрации (или массива идентификаторов регистрации). Максимальное количество членов, разрешенных для ключа уведомления, равно 20. Этот параметр или Registration_id используется в HTTP вместо to в XMPP. | |||
| Опции | ||||||
| message_id | XMPP | Обязательно, строка | Этот параметр однозначно идентифицирует сообщение в соединении XMPP. | |||
| свернуть_ключ | HTTP, XMPP | Необязательно, строка | Этот параметр идентифицирует группу сообщений (например, с ключом коллапса: «Доступные обновления»), которые можно свернуть, чтобы при возобновлении доставки отправлялось только последнее сообщение. Это сделано для того, чтобы избежать отправки слишком большого количества одинаковых сообщений, когда устройство снова подключается к сети или становится активным. Обратите внимание, что порядок отправки сообщений не гарантируется. Примечание. В любой момент времени можно использовать не более 4 разных ключей свертывания. Это означает, что сервер подключения GCM может одновременно хранить 4 разных сообщения отправки для синхронизации для каждого клиентского приложения. | |||
| delay_while_idle | HTTP, XMPP | Необязательный, Булево значение JSON | Если для этого параметра установлено значение true, это означает, что сообщение не должно отправляться до тех пор, пока устройство не станет активным. Значение по умолчанию неверно. | |||
| время жить | HTTP, XMPP | Необязательный, JSON-номер | Этот параметр указывает, как долго (в секундах) сообщение должно храниться в хранилище GCM, если устройство находится в автономном режиме. Максимальное поддерживаемое время жизни составляет 4 недели. Значение по умолчанию — 4 недели. | |||
| квитанция о доставке_ просил | XMPP | Необязательный, логическое значение JSON | Этот параметр позволяет стороннему серверу приложений запрашивать подтверждение доставки сообщения. Если для этого параметра установлено значение true, CCS отправляет уведомление о доставке, когда устройство подтверждает, что оно получило сообщение. Значение по умолчанию неверно. | |||
| ограниченный_пакет_ название | HTTP | Необязательно, строка | Этот параметр указывает имя пакета приложения, для которого должны совпадать идентификаторы регистрации, чтобы сообщение могло быть получено. | |||
| пробный прогон | HTTP | Необязательный, логическое значение JSON | Этот параметр, если установлено значение true, позволяет разработчикам тестировать запрос без фактической отправки сообщения. Значение по умолчанию неверно. | |||
| Полезная нагрузка | ||||||
| Данные | HTTP,XMPP | Необязательный, JSONобъект | Этот параметр указывает пары ключ-значение полезной нагрузки сообщения. Количество пар ключ-значение не ограничено, но общий размер сообщения ограничен 4 КБ. Например, в Android данные:{"оценка":"3x1"} было бы привести к намеренному дополнительному названному счетусо строковым значением 3x1.Ключ не должен быть зарезервированным словом. Также не рекомендуется использовать слова, определенные в этой таблице к непредсказуемым результатам. . |