Как получить Z-расстояние для каждого пикселя в кадре (компьютерное зрение)? - PullRequest
0 голосов
/ 29 мая 2020

Я сейчас занимаюсь компьютерным зрением и застрял на следующей проблеме. Мне нужны основные истинные значения для моей последовательности. У меня есть хорошая последовательность, в которой камера движется по моей сцене и захватывает RGB-кадры. Теперь мне нужен соответствующий кадр для каждого кадра RGB, но вместо значений RGB он должен хранить расстояние. Я знаю, что вы можете получить общую глубину (евклидово расстояние от камеры до реального объекта), подключив вывод «Глубина» узла слоя рендеринга к узлу вывода файла в рабочей области компоновки с использованием формата файла EXR. Но мне просто нужен Z-компонент расстояния до камеры , и я не хочу впоследствии преобразовывать его с параметрами камеры (уже сделал это, но мне нужен более чистый рабочий процесс).

Я наткнулся на эту функцию: bpy_extras.view3d_utils.region_2d_to_location_3d , но почти ничего не нашел о том, как ее правильно использовать. Я не знаю, что мне дать в качестве ввода. Есть ли у кого-нибудь решение или, возможно, уже использовал эту функцию, и может объяснить мне, как я буду использовать его в настройках Blender по умолчанию (только куб, камера и свет), и если он делает то, что я ожидаю (указав x, y, z и тогда я могу удалить ненужную информацию)? Я уже пробовал использовать функцию world_to_camera_view , но это работает только для параметров объекта, таких как вершины, а не для всей поверхности, чтобы создать плотную карту. Я также знаю, что вы можете визуализировать сцену с материалом Cycles, чтобы сохранить x, y, z в RGB-каналах, но там вы получаете только мировые координаты, и вам нужно изменить материалы после того, как вы отрендерили реальную последовательность. Мне действительно нужен только кадр с Z-расстоянием до камеры для каждого пикселя в кадре.

Я был бы очень благодарен, если бы кто-нибудь мог мне помочь, потому что я уже несколько дней пытаюсь это сделать.

...