Как интерпретировать значение диспаритета

Предположим, у нас есть две выпрямленные фотографии с известным положением пикселей со стереокамер, и мы хотим нарисовать карту диспаратности

что будет ближайшим пикселем, если пиксель на правильной фотографии движется в обоих направлениях? Я знаю, что самая дальняя точка - это точка, которая имеет минимальное значение, если мы выполним qx -px (p - это пиксель на левой фотографии), поэтому максимальное значение из этого является ближайшим?

Спасибо

1 ответ

Решение

Карты диспаратности обычно пишутся со знаковыми значениями, которые указывают, в каком направлении пиксель перемещается от одного изображения к другому в стереопаре. Например, если у вас есть пиксель в левом виде в местоположении <100,250> и в правом виде соответствующий пиксель находится в местоположении <115,250>, тогда карта диспаратности для левого обзора в местоположении <100,250> будет иметь значение 15. Карта диспаратности для правильного вида в местоположении <115,250> будет иметь значение -15.

Карты диспаратности могут быть многоканальными изображениями, обычно с X-сдвигом в первом канале и Y-сдвигом во втором канале. Если вы смотрите на стереопары высокого разрешения с большим количеством диспаратности, вы не сможете вписать все возможные значения диспаратности в 8-битное изображение. В киноиндустрии большинство карт диспаратности хранятся в виде 16- или 32-битных изображений с плавающей запятой.

Не существует стандартного метода масштабирования несоответствия, и его обычно осуждают, поскольку несоответствие предназначено для описания свойства "физический / конкретный / неизменный / и т. Д.". Однако иногда это необходимо. Например, если вы хотите записать несоответствие большой стереопары в 8-битное изображение, вам придется масштабировать значения, чтобы они поместились в 8-битный контейнер. Вы можете сделать это разными способами.

Один из способов масштабирования карты диспаратности - взять наибольшее абсолютное значение диспаратности и разделить все значения на коэффициент, который уменьшит это значение до максимального значения в вашем 8-битном мире со знаком (128). Этот метод легко масштабируется до исходного диапазона диспаратности с помощью простого множителя, но, очевидно, может привести к уменьшению детализации из-за уменьшения шага, созданного делением. Например, если у меня есть изображение с диапазоном диспаратности от 50 до -200, то есть у меня 250 возможных значений диспаратности. Я могу разделить все значения на 200/128 = 1,5625. Это дает мне диапазон от 32 до -128 или 160 возможных значений диспаратности. Когда я масштабирую эти значения обратно, используя умножение, я снова получаю 50 к -200, но теперь в этом диапазоне есть только 160 возможных значений диспаратности.

Другой метод, использующий вышеуказанный диапазон диспаратности, заключается в простом сдвиге диапазона. Общий диапазон равен 250, наш 8-битный контейнер со знаком может содержать 256 значений, поэтому мы вычитаем 250-128 = 72 из всех значений, что дает нам новый диапазон от 122 до -128. Это позволяет нам сохранить все шаги несоответствия и получить точное входное изображение, просто добавив коэффициент смещения обратно в изображение.

И наоборот, если у вас есть карта диспаратности с диапазоном от -5 до 10. Возможно, вы захотите расширить этот диапазон, чтобы включить значения диспаратности субпикселей. Таким образом, вы можете масштабировать от 10 до 128 и от -5 до -64. Это дает более широкий диапазон значений, но общее количество возможных значений будет изменяться от кадра к кадру в зависимости от диапазона диспаратности ввода.

Проблема с методами масштабирования заключается в том, что они могут быть с потерями, и каждое сохраненное изображение будет иметь коэффициент / метод масштабирования, который необходимо изменить на противоположный. Если каждое изображение имеет отдельный коэффициент масштабирования, то этот коэффициент должен быть сохранен вместе с изображением. Если каждое изображение имеет одинаковый масштабный коэффициент, то будет происходить большее ухудшение данных из-за уменьшения возможных значений. Вот почему, как правило, рекомендуется хранить карты диспаратности с большей битовой глубиной, чтобы обеспечить целостность данных.

Другие вопросы по тегам