Карты диспаратности обычно записываются со значениями со знаком, которые указывают, в каком направлении пиксель перемещается от одного изображения к другому в стереопаре. Например, если у вас есть пиксель в левом виде в позиции ‹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. Это дает более широкий диапазон значений, но общее количество возможных значений будет меняться от кадра к кадру в зависимости от диапазона входного несоответствия.
Проблема с методами масштабирования заключается в том, что они могут быть с потерями, и каждое сохраненное изображение будет иметь коэффициент / метод масштабирования, который необходимо изменить. Если каждое изображение имеет отдельный коэффициент масштабирования, то этот коэффициент необходимо сохранить вместе с изображением. Если каждое изображение имеет один и тот же коэффициент масштабирования, тогда будет большее ухудшение данных из-за уменьшения возможных значений. Вот почему обычно рекомендуется хранить карты диспаратности с более высокой битовой глубиной, чтобы гарантировать целостность данных.
person
BHawk
schedule
25.05.2017