Quantcast
Channel: C#
Viewing all articles
Browse latest Browse all 1853

Образец кода для замены фона с помощью технологии Intel® RealSense™

$
0
0

Автор: Брайан Браун (Bryan Brown), Intel, 4 мая 2015 г.

Пример кода

Аннотация

Этот код позволяет делать селфи-снимки с помощью веб-камеры, изменяя фон в режиме реального времени с помощью комплекта Intel® RealSense™ SDK для Windows*. Включенный в SDK алгоритм сегментации выделяет в каждом кадре изображение пользователя, а затем позволяет сменить или вырезать фон. Ниже приведен пример приложения, в котором фон заменяется на статичное изображение.

Background Replacement Sample

Рисунок 1. Сегментация фона: исходное изображение и результат

Введение

Сначала фон изображения заменяется на равномерный зеленый цвет. В нашем случае это дань традициям: зеленый — самый популярный цвет фона в технологии совмещения двух и более изображений или кадров в одной композиции, которая называется chroma key.

В отличие от технологии chroma key и двухмерных методов извлечения фона этот алгоритм сегментации использует синхронизированные данные о глубине и цвете изображения, поступающего с 3D-камеры. Поэтому, даже если одежда пользователя совпадает по цвету с фоном, она не будет выделена как его часть, а движущиеся объекты на заднем плане не будут сливаться с пользователем.

Приложение создает 32-битное изображение BGRA: синий, зеленый, красный каналы и альфа-канал, который также называется каналом-маской. Значение альфа-канала для пикселей фона равняется нулю, а для накладываемых (то есть соответствующих изображению пользователя) пикселей — положительному значению. (Подробнее об этом читайте в руководстве по работе с SDK: RSSDK_DIR\doc\PDF\sdkmanuals.pdf.)

Флажок в интерфейсе приложения позволяет удалить выбранный фон и вернуться к оригинальному варианту (см. изображение слева на рис. 1). Чтобы выбрать изображение для фона, нажмите кнопку Open File («Открыть файл»). В появившемся окне выберите нужное изображение формата BMP, JPG, PNG или GIF (рис. 2).

Open File Dialog Box

Рисунок 2. Окно выбора файла

Разрешение выбранного изображения автоматически изменяется на 640 x 480. В каждом кадре сегментированное изображение накладывается на выбранный фон, после чего кадры обрабатываются в графической системе WPF.

Когда пользователь нажимает кнопку Capture («Сделать снимок»), кадр сохраняется под названием MyPic.jpg (рис. 3).

Captured Image

Рисунок 3. Полученный снимок

Глубина кадра

3D-камера Intel® RealSense™ (F200)сочетает в себе инфракрасную камеру с определением глубины (разрешение — 640 x 480 пикселей) и RGB-камеру с разрешением 1080p. Получение изображения с двух камер помогает избежать проблем, которые возникают при извлечении фона из двухмерного изображения. Движущиеся на заднем фоне объекты, тени и нестабильное освещение не помешают правильной сегментации.

Среда разработки

Для разработки приложения можно использовать среду Microsoft Visual Studio* Express 2013 для Windows Desktop или профессиональные версии Visual Studio 2013.

Описание кода

Образец представляет классическое приложение Windows, написанное на C#. Разметка пользовательского интерфейса выполнена на языке XAML. Фрагмент кода, необходимый для работы с указателями и ускорения процесса обработки, обозначается ключевым словом unsafe. Подробнее о методах быстрой обработки изображений читайте на сайте C# Examples.

Согласно статье Небезопасный код и указателив MSDN*: «...небезопасный код в C# не обязательно представляет опасность. Это просто код, безопасность которого не может быть проверена средой CLR. Поэтому CLR выполнит этот код, только если он находится в полностью надежной сборке». Чтобы использовать ключевое слово unsafe, перейдите в меню Проект → Свойства → Сборкаи установите флажок «Разрешить небезопасный код».

В проекте прописан абсолютный путь к библиотеке libpxcclr.cs.dll: C:\Program Files (x86)\Intel\RSSDK\bin\x64. Если путь установки SDK отличается от стандартного, его нужно будет изменить соответствующим образом. Так как мы запускаем 64-битную версию DLL, перейдите в меню Проект → Свойства → Целевая платформаи убедитесь, что там выбрано значение «x64».

Подробнее об алгоритме сегментации можно узнать в документации SDK (RSSDK_DIR\doc\PDF\sdkmanuals.pdf) и в Руководстве по фоновой сегментации.

О технологии Intel® RealSense™

Подробнее о работе с комплектом Intel RealSense SDK для Windows читайте на сайте https://software.intel.com/ru-ru/intel-realsense-sdk.

Об авторе

Брайан Браун — инженер по разработке программных приложений в подразделении Developer Relations корпорации Intel. 

  • GameCodeSample
  • Segmentation
  • user segmentation
  • Sviluppatori
  • Microsoft Windows* 10
  • Microsoft Windows* 8.x
  • Sviluppo di videogame
  • Tecnologia Intel® RealSense™
  • C#
  • Principiante
  • Intermedio
  • SDK Intel® RealSense™
  • Tecnologia Intel® RealSense™
  • Videocamera anteriore F200
  • Laptop
  • Tablet
  • Desktop
  • URL
  • Tecnologia Intel® RealSense™

  • Viewing all articles
    Browse latest Browse all 1853

    Trending Articles



    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>