Сохранить изображение глубины Kinect в Matlab? - PullRequest
6 голосов
/ 12 июня 2011

Используя Kinect, я могу получить изображение глубины, в котором каждый пиксель изображения глубины хранит расстояние (в миллиметрах) между камерой и объектом.Теперь я хочу сохранить их, чтобы я мог использовать позже.Какова лучшая рекомендация?

Я думаю сохранить изображение глубины как изображение (jpg / png и т. Д.).Однако значение обычно составляет от 50 мм до 10000 мм, в то время как обычный элемент изображения может хранить от 0 до 255.Затем мне нужно будет масштабировать данные до 0-255, и это может как-то использовать данные.

Ответы [ 2 ]

8 голосов
/ 13 июня 2011

Вы можете использовать любой формат, например TIFF или PNG, который поддерживает 16-битные изображения в градациях серого, поскольку ваши данные поместятся в 16-битные (2 ^ 16-1 = 65535).

Преимущество использования этих форматовКонечно, вы сможете прочитать их с помощью другой программы.Скорее всего, вы не захотите использовать формат jpeg из-за артефактов сжатия.

Вот что говорит документация matlab об imwrite для формата png:

По умолчанию imwrite использует 8бит на пиксель, если изображение двойное или uint8;16 бит на пиксель, если изображение - uint16;1 бит на пиксель, если изображение логическое.

Так что вы будете в порядке, если ваши данные будут храниться как uint16.

2 голосов
/ 12 июня 2011

Вы можете сохранить матрицу непосредственно на диск, используя команды save () и load (). Но тогда только Matlab сможет прочитать его. Это лучший выбор, так как вы совсем не теряете точность.

Если вам необходимо масштабировать значения до 0..255, не масштабируйте их линейно. Вам нужна более высокая точность для более близкого объекта. Так что просто примените следующую функцию к матрице ln (DepthImage - 49) * 25, чтобы получить примерно 0..255 значений. Теперь сохраните изображение и при загрузке примените функцию реверса. Таким образом (с использованием функции локальной сети) ваша точность будет снижена

...