Получение и фильтрация карт глубин Дмитрий Ватолин Video Group CS MSU Graphics & Media Lab Only for Maxus Современный 3D-контент Карты глубин Многокамерные системы – слишком дорогостоящий инструмент создания 3D Альтернатива – создание 3D-контента из 2D Основной шаг – вычисление пространственного представления сцены Для этого строятся карты глубины кадров CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 2 Only for Maxus Содержание Способы получения карт глубины Карты глубин (задание) Фильтрация карт глубины CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 3 Only for Maxus Карты глубин Способы получения Ручная разметка кадров CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ Исходный рисунок - http://retouchpro.com 4 Only for Maxus Карты глубин Способы получения Автоматические способы с использованием depth cues CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 5 Only for Maxus Карты глубин Способы получения Автоматические способы с использованием depth cues CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 6 Only for Maxus Карты глубин Способы получения Автоматические способы с использованием depth cues CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 7 Only for Maxus Карты глубин Способы получения Автоматические способы с использованием сенсоров глубины CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://userpage.fu-berlin.de/~latotzky/wheelchair/?p=58 8 Only for Maxus Карты глубин Сенсоры глубины Microsoft Kinect: Разрешение 640×480 Разрешение камеры глубины: 320×240 30 fps Планируемое обновление (Kinect 2.0): Разрешение 1920×1080 Разрешение камеры глубины: 512×424 30 fps CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://www.microsoft-careers.com/go/Kinect-forWindows/308299/ 9 Only for Maxus Карты глубин Недостатки сенсоров глубины (1) Отсутствие информации о глубине для некоторых точек Случайный шум Различие глубины для точек одного уровня Нестабильность во времени Сильный шум на границах объектов CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 10 Only for Maxus Карты глубин Недостатки сенсоров глубины (2) Цветное изображение Карта глубины Информация о глубине для красных областей отсутствует CS MSU Graphics & Media Lab (Video Group) M. Camplani, L. Salgado, and G. de Imágenes, “Efficient spatio- 11 temporal hole filling strategy for Kinect depth maps,” SPIE, 2012 www.compression.ru/video/ Only for Maxus Карты глубин Недостатки сенсоров глубины (3) Улучшение качества карты глубины с сенсора: Качественная обработка областей перекрытия Фильтрация карты глубины во времени Существующие методы: Cross-Bilateral Filtering Weighted Mode Filtering Graph-Based Filtering CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 12 Only for Maxus Содержание Способы получения карт глубины Карты глубин (задание) Фильтрация карт глубины CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 13 Only for Maxus ME: Блоки 4х4 4 модификации кадров Исходный без изменений CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 14 Only for Maxus ME: Блоки 4х4 4 модификации кадров Сдвиг вправо на 4 пикселя CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 15 Only for Maxus ME: Блоки 4х4 4 модификации кадров Сдвиг вправо и вниз на 4 пикселя CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 16 Only for Maxus ME: Блоки 4х4 4 модификации кадров Сдвиг вниз на 4 пикселя CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 17 Only for Maxus ME: Блоки 4х4 Запуск ME8х8 для каждой из модификаций кадров Запись полученных векторов для соответствующих блоков CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 18 Only for Maxus ME: Блоки 4х4 Алгоритм Левый верхний блок 4х4: MEFunction8x8(cur_frame, prev_frame, temp_vectors); for (each vector in temp_vectors) { MEVectors[i*2*num_blocks_4x4_hor + 2*j] = temp_vectors[i*num_blocks_8x8_hor + j]; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 19 Only for Maxus ME: Блоки 4х4 Алгоритм Правый верхний блок 4х4: 4PixelShiftHor(cur_frame, cur_shifted); 4PixelShiftHor(prev_frame, prev_shifted); MEFunction8x8(cur_shifted, prev_shifted, temp_vectors); for (each vector in temp_vectors) { MEVectors[i*2*num_blocks_4x4_hor + 2*j + 1] = temp_vectors[i*num_blocks_8x8_hor + j]; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 20 Only for Maxus ME: Блоки 4х4 Алгоритм Правый нижний блок 4х4: 4PixelShiftHorVert(cur_frame, cur_shifted); 4PixelShiftHorVert(prev_frame, prev_shifted); MEFunction8x8(cur_shifted, prev_shifted, temp_vectors); for (each vector in temp_vectors) { MEVectors[(i+1)*2*num_blocks_4x4_hor + 2*j + 1] = temp_vectors[i*num_blocks_8x8_hor + j]; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 21 Only for Maxus ME: Блоки 4х4 Алгоритм Левый нижний блок 4х4: 4PixelShiftVert(cur_frame, cur_shifted); 4PixelShiftVert(prev_frame, prev_shifted); MEFunction8x8(cur_shifted, prev_shifted, temp_vectors); for (each vector in temp_vectors) { MEVectors[(i+1)*2*num_blocks_4x4_hor + 2*j] = temp_vectors[i*num_blocks_8x8_hor + j]; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 22 Only for Maxus ME: Блоки 4х4 Результат Depth 4x4 blocks full search (0.04 fps) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 24 Only for Maxus ME: Блоки 4х4 Результат Original frame CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 25 Only for Maxus ME: Упрощение шаблона Ограничение на движение камеры – только горизонтальное параномирование Ограничиваем шаблон поиском по горизонтали CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 26 Only for Maxus ME: Упрощение шаблона Результат Depth 4x4 blocks simple template (1.55 fps) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 27 Only for Maxus ME: Упрощение шаблона Результат Original frame CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 28 Only for Maxus ME: Кандидаты Ограничение на движение камеры – только горизонтальное параномирование Движение равномерное поступательное – использование соседних блоков в качестве кандидатов становится эффективней CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 29 Only for Maxus ME: Кандидаты Результат Depth 4x4 blocks candidates (2.71 fps) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 30 Only for Maxus ME: Кандидаты Результат Original frame CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 31 Only for Maxus Содержание Способы получения карт глубины Карты глубин (задание) Фильтрация карт глубины CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 32 Only for Maxus Карты глубин Фильтрация Даже при ручной разметке кадров возникают неточности карты глубины: «Картонки» (отсутствие рельефа и объема) Неправильные границы Несогласованность глубины соседних кадров CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ Burazerovic et al., “Automatic depth profiling of 2d cinemaand photographic images”, ICIP 2009 33 Only for Maxus Пространственная Введение в линейную фильтрацию Применение линейного оператора свертки к изображению – замена пикселя взвешенным средним по окрестности Веса определяют ядро свертки – числовую матрицу CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 34 Only for Maxus Пространственная Введение в линейную фильтрацию f – изображение M*N, g – ядро K*L Свертка f с помощью g – изображение (f * g): CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 35 Only for Maxus Пространственная Введение в линейную фильтрацию Поведение на границе: Черный фон CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ Зеркалирование Дублирование 36 Only for Maxus Пространственная Введение в линейную фильтрацию Фильтр Гаусса: Веса в ядре рассчитываются из нормального распределения N(0, σ2) Параметры фильтрации – размер ядра d, дисперсия σ2 Эмпирически – d ~ 6σ CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 37 Only for Maxus Пространственная Билатеральная фильтрация Билатеральная – два параметра для расчета весов Веса исходного фильтра Гаусса модифицируем с учетом цветовой разницы центрального пикселя и пикселя окрестности CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 38 Only for Maxus Пространственная Билатеральная фильтрация глубины D(x, y) – глубина точки (x, y) I(x, y) – цвет точки (x, y) Ω – область ядра свертки σs – параметр пространственного усреднения σc – параметр цветового усреднения CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 39 Only for Maxus Пространственная Билатеральная фильтрация глубины for (each pixel in image) { sum = koef = 0; for (each neighbour_pixel in kernel window) { cur_koef = gaus_weight(cur_pixel.pos, neighbour_pixel.pos, sigma_spatial) * gaus_weight(cur_pixel.value, neighbour_pixel.value, sigma_color); sum += neighbour_pixel.value * cur_koef; koef += cur_koef; } new_pixel.value = sum / koef; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 40 Only for Maxus Пространственная Билатеральная фильтрация: результат фильтрация карты глубины на основе исходного кадра CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ Burazerovic et al., “Automatic depth profiling of 2d cinemaand photographic images”, ICIP 2009 41 Only for Maxus Пространственная Билатеральная фильтрация Сглаживание глубины ровных по цвету областей Подчеркивание разницы на цветовых границах CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ Burazerovic et al., “Automatic depth profiling of 2d cinemaand photographic images”, ICIP 2009 42 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 43 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 44 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 45 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 46 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 47 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 48 Only for Maxus Пространственная Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 49 Only for Maxus Временная фильтрация Схема работы Сглаживание изменения глубины во времени Нормализация, устранение «мерцания» Удаление «артефактов» CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 50 Only for Maxus Временная фильтрация Spatio-Temporal Filtering Пиксель определяется тремя координатами – (x, y, t) положение в пространстве и времени Рассматриваем окрестность по всем трем координатам, с учетом компенсации движения CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 51 Only for Maxus Временная фильтрация Spatio-Temporal Filtering for (each pixel in cur_frame) { sum = koef = 0; for (each neighbour_pixel in kernel window) { for (each neighbour_frame in temporal window) { cur_koef = gaus_weight(cur_pixel.pos, neighbour_pixel.pos, sigma_spatial) * gaus_weight(cur_pixel.value, neighbour_pixel.value, sigma_color) * gaus_weight(cur_frame.count, neighbour_frame.count, sigma_temporal); sum += neighbour_pixel.value * cur_koef; koef += cur_koef; } } new_pixel.value = sum / koef; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 52 Only for Maxus Временная фильтрация Результаты CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 53 Only for Maxus Временная фильтрация Сравнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 54 Only for Maxus Временная фильтрация Сравнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 55 Only for Maxus Временная фильтрация Сравнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 56 Only for Maxus Временная фильтрация Сравнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 57 Only for Maxus Временная фильтрация Сравнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ CS MSU Graphics & Media Lab (Video Group) 58 КОНЕЦ ЛЕКЦИИ 4.