спасибо за ваш ответ .. если у нас есть только одно изображение, то можем ли мы сделать стереоскопическое изображение ??

оздать трехмерное стереоскопическое изображение из двухмерного изображения с помощью MATLAB?

 carlosdc18 янв. 2011 г., 06:59
В чем вопрос? Что вы пробовали?
 Abhishek B.18 янв. 2011 г., 09:38
@carlosdc @ Итамар Кац: если я хочу видеть 2D-изображение с использованием 3D-стекла, оно отображается в 3D-формате ... вот так. Или каким-то другим способом можно увидеть это с 3 измерениями?
 Itamar Katz18 янв. 2011 г., 08:25
Я думаю, что было бы проще создать его, если у вас есть 3D-данные, так как тогда все, что вам нужно, это создать 2 проекции с разными углами зрения.

Ответы на вопрос(2)

Решение Вопроса

что это не ясно), либо вы неправильно понимаете, как работает 3D-зрение. Вы не «видите 2D-изображение, используя 3D-стекло». Трехмерное зрение достигается путем подачи двух разных изображений, левого изображения и правого изображения, левому глазу и правому глазу соответственно. На фундаментальном уровне MATLAB не имеет к этому никакого отношения.

Итак, в отсутствие легко понятного или связного вопроса, лучшее, что я могу сделать, это предположить, что вы хотите что-то вродеэто: у вас есть одно 2D-изображение, но вы все еще хотите «увидеть в формате 3D изображения». В этом случае вам нужно как-то разделить это изображение на два новых изображения:

Левое изображение для левого глазаПравильное изображение для правого глаза

Это не тривиально. Как правило, вы начинаете свыводя глубину каждого пикселя в 2D-изображении. Поскольку вы «угадываете» информацию о глубине, два новых изображения не будут идеальным представлением 3D-сцены.

Затем вы разделяете свое изображение на слои, используя эту информацию о глубине. По сути это будет выглядеть как выпадающий вырез из детской книги:

Чем больше слоев вы сможете придумать, и чем точнее будет ваша оценка глубины, тем реалистичнее будет ваше трехмерное представление.

Наконец, вы проецируете это многоуровневое представление обратно в 2D из двух разных позиций - одной для левого глаза и одной для правого глаза. Это дает вам два разных изображения, которые вам нужны.

РЕДАКТИРОВАТЬ

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

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

Алгоритм видео описывает:

Начните с двух изображений,im1 а такжеim2, Они одинаковыеУстановите зеленый и синий каналыim1 в ноль. Это создаст красное изображениеУстановите красный каналim2 в ноль. Это создаст голубой образ.Сместите два изображения на определенную величину (в зависимости от глубины объекта), чтобыim1 находится слева иim2 находится справа. Вы должны получить этот заказ правильно, потому что красные красно-голубые очки имеют красный слева и голубой справа.Выполните поэлементное добавление двух сдвинутых изображений. Обратите внимание, что ни один канал не будет насыщен.

Вот код Python / OpenCV, который я написал:

import cv
SHIFT=8

if __name__ == '__main__':
    import sys
    _, fname = sys.argv
    im  = cv.LoadImage(fname)

    size = cv.GetSize(im)
    width, height = size
    left  = cv.CreateImage(size, im.depth, im.nChannels)
    right = cv.CreateImage(size, im.depth, im.nChannels)
    anaglyph = cv.CreateImage((width - SHIFT, height), im.depth, im.nChannels)

    #
    # This would be easier if we had COI support for cv.Set, but it doesn't
    # work that way.
    # OpenCV uses BGR order (even if input image is greyscale):
    # http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html
    # red goes on the left, cyan on the right:
    # http://en.wikipedia.org/wiki/Anaglyph_image
    #
    b = cv.CreateImage(size, im.depth, 1)
    g = cv.CreateImage(size, im.depth, 1)
    r = cv.CreateImage(size, im.depth, 1)
    cv.Split(im, b, g, r, None)

    zeros = cv.CreateImage(size, r.depth, 1)
    cv.Merge(zeros, zeros, r, None, left)
    cv.Merge(b, g, zeros, None, right)

    #
    # cvRect is ( x, y, width, height ) and it MUST be a tuple, not a list
    # 
    cv.SetImageROI(left,  ( SHIFT, 0, width - SHIFT, height ))
    cv.SetImageROI(right, ( 0,     0, width - SHIFT, height ))
    cv.Add(left, right, anaglyph, None)

    cv.SaveImage('anaglyph.jpeg', anaglyph)

Вот изображение, похожее на то, что используется в видео:

Вот вывод:

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

 mpenkov19 янв. 2011 г., 07:30
Итак, что вы хотите, это во втором видео - youtube.com/watch?v=g_JRHtHpuSY? Я обновил свой ответ с некоторым источником OpenCV. Не должно быть трудно портировать на Matlab - я оставлю это вам.
 mpenkov18 янв. 2011 г., 15:30
В основном, первая ссылка описала то, что я сделал. Рассчитать карту глубины, сделать второе изображение. Я не уверен насчет фактической реализации фильтра смещения. Вторая ссылка на самом деле не так уж важна - это не стереоизображение, а просто псевдо-3D-эффект. Если это то, что вы хотите, то это довольно просто реализовать, просто делайте в точности так, как тот парень говорил в видео. Я мог бы посмотреть третье видео позже - оно немного длинное и уже поздно здесь. Поместите соответствующую ссылку в исходный вопрос, чтобы было понятно, чего вы хотите.
 vini06 мая 2012 г., 14:04
Brilliant !! ....
 Abhishek B.19 янв. 2011 г., 05:39
Спасибо @misha, да, вы получаете. Я хочу добавить псевдо-3D-эффект от 2d изображения. Я просто достигаю простого трехмерного эффекта по ссылкам на видео. Если у вас есть код относительно этого, ответьте мне .. - Абхи
 Abhishek B.18 янв. 2011 г., 14:39
спасибо большое @misha .. но я так хочу посмотреть ссылки на видеоyoutube.com/watch?v=3r4M_KHt6aw , youtube.com/watch?v=g_JRHtHpuSY , youtube.com/watch?v=zdXxS2KHXlo вот так .. - спасибо Абхи.

если у вас есть два изображения, сделанные с несколько разных точек зрения. Вы можете создать стерео анаглиф, исправив два изображения. Соответствующие функцииestimateUncalibratedRectifiation а такжеstereoAnaglyph в наборе инструментов системы компьютерного зрения. УвидетьНекалиброванное выпрямление стереоизображения пример.

Кроме того, вы можете откалибровать свои камеры, используяПриложение для калибровки стереокамеры, а затем используйтеrecifyStereoImages функция. УвидетьСтереокалибровка и реконструкция сцены.

 Abhishek B.03 янв. 2015 г., 06:28
спасибо за ваш ответ .. если у нас есть только одно изображение, то можем ли мы сделать стереоскопическое изображение ??

Ваш ответ на вопрос