- Камера с определяемым местоположением Locatable camera
- Сведения о камере устройства Device camera information
- HoloLens (первое поколение) HoloLens (first-generation)
- HoloLens 2 HoloLens 2
- Поиск камеры устройства в мире Locating the Device Camera in the World
- Использование Unity Using Unity
- Использование Медиафрамереференце Using MediaFrameReference
- Использование Media Foundation Using Media Foundation
- Ошибка искажения Distortion Error
- Сценарии использования камеры размещаемые Locatable Camera Usage Scenarios
- Показывать фотографию или видео в мире, где они были собраны Show a photo or video in the world where it was captured
- Тег/шаблон/Афиша/Отслеживание объектов Tag / Pattern / Poster / Object Tracking
- Отслеживать или выявлять стационарные или переносить реальные объекты и лица с помощью индикаторов или других библиотек распознавателей; Track or Identify Tagged Stationary or Moving real-world objects/faces using LEDs or other recognizer libraries
Камера с определяемым местоположением Locatable camera
HoloLens включает в себя камеру, подключенную к передней части устройства, что позволяет приложениям видеть, что видит пользователь. HoloLens includes a world-facing camera mounted on the front of the device, which enables apps to see what the user sees. У разработчиков есть доступ к камере и управление ей, точно так же, как и для цветных камер на смартфонах, портативных компьютерах или настольных ПК. Developers have access to and control of the camera, just as they would for color cameras on smartphones, portables, or desktops. Те же универсальные функции захвата мультимедиа Windows Media и Windows Media Foundation, которые работают с мобильными и рабочим столами в HoloLens. The same universal windows media capture and windows media foundation APIs that work on mobile and desktop work on HoloLens. Unity переносит эти API Windows в абстрактные функции использования камеры в HoloLens. Unity has wrapped these windows APIs to abstract camera usage features on HoloLens. К задачам функций относятся обычные фотографии и видеоролики (с голограммами или без них), а также расположение камеры в и перспективы на сцене. Feature tasks include taking regular photos and videos (with or without holograms) and locating the camera’s position in and perspective on the scene.
Сведения о камере устройства Device camera information
HoloLens (первое поколение) HoloLens (first-generation)
Фиксированная камера с фокусировкой или видео (ПС) с автобалансом белого, автоматической экспозицией и полным конвейером обработки образов. Fixed focus photo/video (PV) camera with auto white balance, auto exposure, and full image-processing pipeline.
Белый индикатор конфиденциальности, направленный на мир, будет загораться каждый раз, когда камера активна White Privacy LED facing the world will illuminate whenever the camera is active
Камера поддерживает следующие режимы (все режимы — 16:9 пропорций) в 30, 24, 20, 15 и 5 кадров/с. The camera supports the following modes (all modes are 16:9 aspect ratio) at 30, 24, 20, 15, and 5 fps:
Видео Video | Предварительный просмотр Preview | Могут Still | Горизонтальное поле представления (H-фов) Horizontal Field of View (H-FOV) | Предлагаемое использование Suggested usage |
---|---|---|---|---|
1280 x 720 1280×720 | 1280 x 720 1280×720 | 1280 x 720 1280×720 | 45 градусов 45 deg | (режим по умолчанию с видео стабилизации) (default mode with video stabilization) |
Недоступно N/A | Недоступно N/A | 2048×1152 2048×1152 | 67 градусов 67 deg | Изображение с наивысшим разрешением по-прежнему Highest resolution still image |
1408×792 1408×792 | 1408×792 1408×792 | 1408×792 1408×792 | 48 градусов 48 deg | Разрешение перепроверки (заполнения) перед видео стабилизации Overscan (padding) resolution before video stabilization |
1344×756 1344×756 | 1344×756 1344×756 | 1344×756 1344×756 | 67 градусов 67 deg | Крупный фов видеорежим с пересканированием Large FOV video mode with overscan |
896×504 896×504 | 896×504 896×504 | 896×504 896×504 | 48 градусов 48 deg | Режим низкого уровня питания и низкого разрешения для задач обработки изображений Low power / Low-resolution mode for image-processing tasks |
HoloLens 2 HoloLens 2
Автоматическое фокусирование фотографии и Видеокамеры (ПС) с автобалансом белого, автоматической экспозицией и полным конвейером обработки образов. Auto-focus photo/video (PV) camera with auto white balance, auto exposure, and full image-processing pipeline.
Белый индикатор конфиденциальности, направленный на мир, будет освещен всякий раз, когда камера активна. White Privacy LED facing the world will illuminate whenever the camera is active.
HoloLens 2 поддерживает различные профили камеры. HoloLens 2 supports different camera profiles. Узнайте, как обнаруживать и выбирать возможности камеры. Learn how to discover and select camera capabilities.
Камера поддерживает следующие профили и разрешения (все видеорежимы имеют соотношение пропорций 16:9): The camera supports the following profiles and resolutions (all video modes are 16:9 aspect ratio):
Профиль Profile | Видео Video | Предварительный просмотр Preview | Могут Still | Частота кадров Frame rates | Горизонтальное поле представления (H-фов) Horizontal Field of View (H-FOV) | Предлагаемое использование Suggested usage |
---|---|---|---|---|---|---|
Прежние, 0 Баланцедвидеоандфото, 100 Legacy,0 BalancedVideoAndPhoto,100 | 2272×1278 2272×1278 | 2272×1278 2272×1278 | 15,30 15.30 | 64,69 64.69 | Высококачественная запись видео High-quality video recording | |
Прежние, 0 Баланцедвидеоандфото, 100 Legacy,0 BalancedVideoAndPhoto,100 | 896×504 896×504 | 896×504 896×504 | 15,30 15.30 | 64,69 64.69 | Предварительный просмотр потока для записи фотографий высокого качества Preview stream for high-quality photo capture | |
Прежние, 0 Баланцедвидеоандфото, 100 Legacy,0 BalancedVideoAndPhoto,100 | 3904×2196 3904×2196 | 64,69 64.69 | Высококачественная запись фотографий High-quality photo capture | |||
Баланцедвидеоандфото, 120 BalancedVideoAndPhoto, 120 | 1952×1100 1952×1100 | 1952×1100 1952×1100 | 1952×1100 1952×1100 | 15,30 15.30 | 64,69 64.69 | Сценарии длительной длительности Long duration scenarios |
Баланцедвидеоандфото, 120 BalancedVideoAndPhoto, 120 | 1504×846 1504×846 | 1504×846 1504×846 | 15,30 15.30 | 64,69 64.69 | Сценарии длительной длительности Long duration scenarios | |
Видеоконференции, 100 VideoConferencing,100 | 1952×1100 1952×1100 | 1952×1100 1952×1100 | 1952×1100 1952×1100 | 15, 30, 60 15,30,60 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios |
Видеоконференции, 100 Videoconferencing,100 | 1504×846 1504×846 | 1504×846 1504×846 | 5, 15, 30, 60 5,15,30,60 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | |
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 1920 x 1080 1920×1080 | 1920 x 1080 1920×1080 | 1920 x 1080 1920×1080 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios |
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 1280 x 720 1280×720 | 1280 x 720 1280×720 | 1280 x 720 1280×720 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios |
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 1128×636 1128×636 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | ||
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 960×540 960×540 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | ||
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 760×428 760×428 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | ||
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 640 x 360 640×360 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | ||
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 500×282 500×282 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios | ||
Видеоконференции, 100 Баланцедвидеоандфото, 120 Videoconferencing,100 BalancedVideoAndPhoto,120 | 424×240 424×240 | 15, 30 15,30 | 64,69 64.69 | Видеоконференции, сценарии длительной длительности Video conferencing, long duration scenarios |
Клиенты могут использовать запись смешанной реальности , чтобы принимать видео или фотографии приложения, включая голограммы и видео стабилизации. Customers can leverage mixed reality capture to take videos or photos of your app, which include holograms and video stabilization.
В качестве разработчика необходимо учитывать вопросы, которые следует учитывать при создании приложения, если вы хотите, чтобы он был как можно более хорошим, когда клиент захватывает содержимое. As a developer, there are considerations you should take into account when creating your app if you want it to look as good as possible when a customer captures content. Вы также можете включить (и настроить) запись смешанной реальности непосредственно в приложении. You can also enable (and customize) mixed reality capture from directly within your app. Узнайте больше о записи смешанной реальности для разработчиков. Learn more at mixed reality capture for developers.
Поиск камеры устройства в мире Locating the Device Camera in the World
Когда HoloLens принимает фотографии и видео, захваченные кадры включают расположение камеры в мире и модель линзы камеры. When HoloLens takes photos and videos, the captured frames include the location of the camera in the world and the lens model of the camera. Это позволяет приложениям полагаться на расположение камеры в реальном мире для сценариев дополненных изображений. This allows applications to reason about the position of the camera in the real world for augmented imaging scenarios. Разработчики могут творческо разбросить свои сценарии, используя избранные изображения или пользовательские библиотеки компьютерных концепций. Developers can creatively roll their own scenarios using their favorite image processing or custom computer vision libraries.
«Камера» в любой части документации по HoloLens может ссылаться на «виртуальная игровая Камера» (фрустум приложение готовится к просмотру). «Camera» elsewhere in HoloLens documentation may refer to the «virtual game camera» (the frustum the app renders to). Если не указано иное, «Камера» на этой странице относится к реальной цветовой камере RGB. Unless denoted otherwise, «camera» on this page refers to the real-world RGB color camera.
Использование Unity Using Unity
Чтобы перейти от «Камераинтринсикс» и «Камеракурдинатесистем» к своей системе координат приложения или мира, следуйте инструкциям в статье о камере размещаемые в Unity . To go from the ‘CameraIntrinsics’ and ‘CameraCoordinateSystem’ to your application/world coordinate system, follow the instructions in the Locatable camera in Unity article. Камератоворлдматрикс автоматически предоставляется классом Фотокаптурефраме, поэтому вам не нужно беспокоиться о преобразованиях Камеракурдинатесистем, описанных ниже. CameraToWorldMatrix is automatically provided by PhotoCaptureFrame class, and so you don’t need to worry about the CameraCoordinateSystem transforms discussed below.
Использование Медиафрамереференце Using MediaFrameReference
Эти инструкции применяются, если йоу’р использует класс медиафрамереференце для чтения кадров изображения с камеры. These instructions apply if you’r using the MediaFrameReference class to read image frames from the camera.
Каждый кадр изображения (фото или видео) включает в себя спатиалкурдинатесистем с корнем на камере во время записи, доступ к которому можно получить с помощью свойства курдинатесистем медиафрамереференце. Each image frame (whether photo or video) includes a SpatialCoordinateSystem rooted at the camera at the time of capture, which can be accessed using the CoordinateSystem property of your MediaFrameReference. Каждый кадр содержит описание модели линзы, которое можно найти в свойстве камераинтринсикс . Each frame contains a description of the camera lens model, which can be found in the CameraIntrinsics property. Вместе эти преобразования определяются для каждого пикселя в трехмерном пространстве, представляющем путь, взятый фотоны, который создал пиксель. Together, these transforms define for each pixel a ray in 3D space representing the path taken by the photons that produced the pixel. Эти лучи могут быть связаны с другим содержимым в приложении путем получения преобразования из системы координат кадра в другую систему координат (например, из стационарной рамки ссылки). These rays can be related to other content in the app by obtaining the transform from the frame’s coordinate system to some other coordinate system (e.g. from a stationary frame of reference).
Каждый кадр изображения предоставляет следующие сведения: Each image frame provides the following:
- Пиксельные данные (в формате RGB/NV12/JPEG/т. д.) Pixel Data (in RGB/NV12/JPEG/etc. format)
- Спатиалкурдинатесистем из расположения записи A SpatialCoordinateSystem from the location of capture
- Класс камераинтринсикс , содержащий режим линзы камеры A CameraIntrinsics class containing the lens mode of the camera
Образец холографикфацетраккинг показывает довольно простой способ запроса преобразования между системой координат камеры и собственными системами координат приложения. The HolographicFaceTracking sample shows the fairly straightforward way to query for the transform between the camera’s coordinate system and your own application coordinate systems.
Использование Media Foundation Using Media Foundation
Если вы используете Media Foundation непосредственно для чтения кадров изображения с камеры, можно использовать атрибуты MFSampleExtension_CameraExtrinsics и MFSampleExtension_PinholeCameraIntrinsics для каждого кадра, чтобы нахождение кадров камеры относительно других систем координат вашего приложения, как показано в следующем примере кода: If you are using Media Foundation directly to read image frames from the camera, you can use each frame’s MFSampleExtension_CameraExtrinsics attribute and MFSampleExtension_PinholeCameraIntrinsics attribute to locate camera frames relative to your application’s other coordinate systems, as shown in this sample code:
Ошибка искажения Distortion Error
В HoloLens поток видео и все еще не искажается в конвейере обработки образов системы до того, как фреймы становятся доступными для приложения (в предварительной версии потока содержатся исходные искаженные кадры). On HoloLens, the video and still image streams are undistorted in the system’s image-processing pipeline before the frames are made available to the application (the preview stream contains the original distorted frames). Поскольку доступны только Камераинтринсикс, приложения должны предположить, что кадры изображения представляют собой идеальную пинхоле камеру. Because only the CameraIntrinsics are made available, applications must assume image frames represent a perfect pinhole camera.
В HoloLens (первое поколение) функция undistortия в обработчике изображений может оставить ошибку размером до 10 пикселей при использовании Камераинтринсикс в метаданных кадра. On HoloLens (first-generation), the undistortion function in the image processor may still leave an error of up to 10 pixels when using the CameraIntrinsics in the frame metadata. Во многих случаях эта ошибка не имеет значения, но если вы выводите голограммы на настоящие плакаты и маркеры, то, например, заметите In many use cases, this error won’t matter, but if you’re aligning holograms to real world posters/markers, for example, and you notice a
Сценарии использования камеры размещаемые Locatable Camera Usage Scenarios
Показывать фотографию или видео в мире, где они были собраны Show a photo or video in the world where it was captured
Кадры камеры устройства поставляются с преобразованием «Камера — мир», которое можно использовать для отображения точного расположения устройства при создании образа. The Device Camera frames come with a «Camera To World» transform, that can be used to show exactly where the device was when the image was taken. Например, можно разместить небольшой holographic-значок в этом месте (Камератоворлд. Мултиплипоинт (Vector3. Zero)) и даже нарисовать маленькую стрелку в направлении, в котором была направлена камера (Камератоворлд. Мултипливектор (Vector3. Forward)). For example, you could position a small holographic icon at this location (CameraToWorld.MultiplyPoint(Vector3.zero)) and even draw a little arrow in the direction that the camera was facing (CameraToWorld.MultiplyVector(Vector3.forward)).
Тег/шаблон/Афиша/Отслеживание объектов Tag / Pattern / Poster / Object Tracking
Многие приложения смешанной реальности используют распознаваемый образ или визуальный шаблон для создания отслеживающей точки в пространстве. Many mixed reality applications use a recognizable image or visual pattern to create a trackable point in space. Затем он используется для отрисовки объектов относительно этого момента или для создания известного расположения. This is then used to render objects relative to that point or create a known location. Некоторые варианты использования HoloLens включают поиск объекта в реальном мире с тегами фидуЦиалс (например, ТВ-монитор с QR-кодом), размещение голограмм на фидуЦиалс и визуальное связывание с устройствами, не являющимися HoloLens, например планшетами, настроенными для взаимодействия с HoloLens через Wi-Fi. Some uses for HoloLens include finding a real world object tagged with fiducials (e.g. a TV monitor with a QR code), placing holograms over fiducials, and visually pairing with non-HoloLens devices like tablets that have been set up to communicate with HoloLens via Wi-Fi.
Вам потребуется несколько вещей, чтобы распознать визуальный шаблон и поместить объект в мировое пространство приложений: You’ll need a few things to recognize a visual pattern and place an object in the applications world space:
- Набор средств для распознавания шаблона изображения, например QR-код, Теги AR, поиск лиц, круговые инспекторы, распознавание текста и т. д. An image pattern recognition toolkit, such as QR code, AR tags, face finder, circle trackers, OCR etc.
- Собирать кадры изображения во время выполнения и передавать их на уровень распознавания Collect image frames at runtime, and pass them to the recognition layer
- Отменяйте свои расположения образов обратно в мировые положения или, вероятнее всего, в разных регионах. Unproject their image locations back into world positions, or likely world rays.
- Размещение виртуальных моделей в этих местах мира Position your virtual models over these world locations
Некоторые важные ссылки для обработки изображений: Some important image-processing links:
Поддержание интерактивной частоты кадров приложений очень важна, особенно при работе с долгосрочными алгоритмами распознавания изображений. Keeping an interactive application frame-rate is critical, especially when dealing with long-running image recognition algorithms. По этой причине мы обычно используем следующий шаблон: For this reason, we commonly use the following pattern:
- Основной поток: управляет объектом Camera Main Thread: manages the camera object
- Основной поток: запрашивает новые кадры (асинхронно) Main Thread: requests new frames (async)
- Основной поток: передача новых кадров в отслеживаемый поток Main Thread: pass new frames to tracking thread
- Поток отслеживания: обрабатывает изображение для сбора ключевых точек Tracking Thread: processes image to collect key points
- Основной поток: перемещение виртуальной модели в соответствие найденных ключевых точек Main Thread: moves virtual model to match found key points
- Основной поток: повторение из шага 2 Main Thread: repeat from step 2
Некоторые системы меток изображений обеспечивают только одно место в пикселях (другие предоставляют полное преобразование, в котором этот раздел не будет нужен), что соответствует лучау из возможных расположений. Some image marker systems only provide a single pixel location (others provide the full transform in which case this section won’t be needed), which equates to a ray of possible locations. Чтобы получить одно трехмерное расположение, можно использовать несколько лучей и найти окончательный результат по их приблизительному пересечением. To get to a single 3d location, we can then leverage multiple rays and find the final result by their approximate intersection. Вот как это сделать. To do this, you’ll need to:
- Получение цикла, который собирает несколько изображений с камеры Get a loop going collecting multiple camera images
- Найдите связанные точки компонентов и их лучи мира Find the associated feature points, and their world rays
- Если у вас есть словарь функций, каждый из которых имеет несколько мировых индексов, можно использовать следующий код для решения пересечения этих лучей: When you have a dictionary of features, each with multiple world rays, you can use the following code to solve for the intersection of those rays:
Учитывая два или более расположений отслеживаний тегов, можно разместить смоделированную сцену в соответствии с текущим сценарием пользователя. Given two or more tracked tag locations, you can position a modeled scene to fit the user’s current scenario. Если вы не можете предположить сила притяжения, вам потребуется три расположения тегов. If you can’t assume gravity, then you’ll need three tag locations. Во многих случаях мы используем цветовую схему, где белый шарик представляет расположение тегов, отслеживающихся в реальном времени, а синий шарик — расположения смоделированных тегов. In many cases, we use a color scheme where white spheres represent real-time tracked tag locations, and blue spheres represent modeled tag locations. Это позволяет пользователю визуально оценить качество выравнивания. This allows the user to visually gauge the alignment quality. Мы предполагаем, что во всех наших приложениях выполняется следующая настройка: We assume the following setup in all our applications:
- Два или более расположения смоделированных тегов Two or more modeled tag locations
- Одна область калибровки, которая в сцене является родителем тегов One ‘calibration space’, which in the scene is the parent of the tags
- Идентификатор компонента камеры Camera feature identifier
- Поведение, которое перемещает пространство калибровки для согласования модели тегов с тегами в реальном времени (мы внимательнее перемещать родительское пространство, а не сами маркеры, так как другие соединения являются позициями, связанными с ними). Behavior, which moves the calibration space to align the modeled tags with the real-time tags (we’re careful to move the parent space, not the modeled markers themselves, because other connect is positions relative to them).
Отслеживать или выявлять стационарные или переносить реальные объекты и лица с помощью индикаторов или других библиотек распознавателей; Track or Identify Tagged Stationary or Moving real-world objects/faces using LEDs or other recognizer libraries
- Промышленные роботы с индикаторами (или QR-коды для более медленных движущихся объектов) Industrial robots with LEDs (or QR codes for slower moving objects)
- Определение и распознавание объектов в комнате Identify and recognize objects in the room
- Определение и распознавание людей в комнате, например размещение карточек контактных лиц с помощью лиц Identify and recognize people in the room, for example placing holographic contact cards over faces