Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Можно на воображаемую точку между монитором и вами смотреть.Это только для изображения, ссылку на которое вы дали. Изображение же в топике нужно рассматривать сквозь.
У меня как то получался стерио-линолеум в поликлинике увидеть, пока очереди ждал :)Специально увидеть стерео-линолеум/обои/т.п. не составляет труда. А вот по-забавному бесит, когда совершенно случайно как-то не так сфокусируешься на рабице (забор-сетка) и понимаешь, что зрение тебя обманывает и нужна перефокусировка.
Изображение топика двумя способами разглядеть получается.Перекрестным просмотром вы получите инвертированную дальность. Да, для простого изображения типа буковок это роли, конечно, не сыграет, но в более сложных случаях ничего не выйдет.



Так как изображение выполнено в серых цветах, то для определения яркости точки я использовал яркость красной составляющей RGB, поделенную на 32. Таким образом, максимально возможный сдвиг равен 255/32 = 7.
QImage StereoImageGenerator::makeStereo(const QImage & maskImage, const QImage & background)
{
int w = maskImage.width();
int h = maskImage.height();
int ** mask = new int * [w];
for (int i = 0; i < w; i++)
{
mask[i] = new int[h];
for (int j = 0; j < h; j++)
{
mask[i][j] = qRed(maskImage.pixel(i, j)) / 32;
}
}
int s = 100;
QImage stereoImage;
if (background.isNull())
stereoImage = genBackground(QSize(w + s, h), s);
else
stereoImage = background;
for (int j = 0; j < h; j++)
for (int i = 0; i < w; i++)
if (mask[i][j] > 0)
{
QRgb pixel = stereoImage.pixel(i + mask[i][j], j);
for (int k = i + s; i < w + s; i += s)
stereoImage.setPixel(k, j, pixel);
}
for (int i = 0; i < w; i++)
{
delete mask[i];
}
delete mask;
return stereoImage;
}
Стереоизображение — это просто