«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

CUDA (Проект)/Описание алгоритма работы программы — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
м (BMP формат)
м (Расчет координат)
Строка 31: Строка 31:
  
 
==== Горизонтальное сравнение ====
 
==== Горизонтальное сравнение ====
 +
{| align=right
 +
! <html><img src="https://docs.google.com/drawings/d/1IZC-bwm_6uidr9TQ20lNnwfbv6QZLt0hfym4ICi3Yc4/pub?w=400"></html>
 +
|-
 +
! Рисунок 3a ([https://docs.google.com/drawings/d/1IZC-bwm_6uidr9TQ20lNnwfbv6QZLt0hfym4ICi3Yc4/edit Edit])
 +
|}
 +
 
* Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
 
* Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
** Tex1PixelX = width - xmargin + x
+
** Tex1PixelX = width - xmargin + x;
** Tex1PixelY = (y<yoffset) ? height : height - y ;
+
** '''PPM''': Tex1PixelY = (y<yoffset) ? 0 : y ;
 +
** '''BMP''': Tex1PixelY = (y<yoffset) ? height : height - y ;
 
* Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
 
* Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
** Tex2PixelX = 0
+
** Tex2PixelX = 0;
** Tex2PixelY = (y<yoffset) ? height - (yoffset - y) : 0 ;
+
** '''PPM''': Tex2PixelY = (y<yoffset) ? yoffset - y : 0 ;
 +
** '''BMP''': Tex2PixelY = (y<yoffset) ? height - (yoffset - y) : height ;
 
* Ширина и высота поля перекрытия:
 
* Ширина и высота поля перекрытия:
 
** xwidth = xmargin - x;
 
** xwidth = xmargin - x;
 
** yheight = (y<yoffset) ? height - yoffset + y : height - (y - yoffset) ;
 
** yheight = (y<yoffset) ? height - yoffset + y : height - (y - yoffset) ;
 +
  
 
<source lang="cpp">
 
<source lang="cpp">
Строка 63: Строка 72:
  
 
==== Вертикальное сравнение ====
 
==== Вертикальное сравнение ====
 +
 +
{| align=right
 +
! <html><img src="https://docs.google.com/drawings/d/1m1Q8l04wgY_pqbR0U2gLqCNK91kajXXWhAZAY9fFC20/pub?w=400"></html>
 +
|-
 +
! Рисунок 3b ([https://docs.google.com/drawings/d/1m1Q8l04wgY_pqbR0U2gLqCNK91kajXXWhAZAY9fFC20/edit Edit])
 +
|}
 +
 
* Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
 
* Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
 
** Tex1PixelX = (x<xoffset) ? 0 : x ;
 
** Tex1PixelX = (x<xoffset) ? 0 : x ;
** Tex1PixelY = height - ymargin + y
+
** '''PPM''': Tex1PixelY = height - ymargin + y;
 +
** '''BMP''': Tex1PixelY = ymargin - y;
 
* Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
 
* Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
 
** Tex2PixelX = (x<xoffset) ? xoffset - x : 0 ;
 
** Tex2PixelX = (x<xoffset) ? xoffset - x : 0 ;
** Tex2PixelY = 0
+
** '''PPM''': Tex2PixelY = 0;
 +
** '''BMP''': Tex2PixelY = height;
 
* Ширина и высота поля перекрытия:
 
* Ширина и высота поля перекрытия:
 
** xwidth = (x<xoffset) ? width - xoffset + x : width - (x - xoffset) ;
 
** xwidth = (x<xoffset) ? width - xoffset + x : width - (x - xoffset) ;
 
** yheight = ymargin - y;
 
** yheight = ymargin - y;
 +
 +
==== Преобразование координат между PPM и BMP ====
 +
* x<sup>PPM</sup> = x<sup>BMP</sup>
 +
* y<sup>PPM</sup> = height - y<sup>BMP</sup>
 +
* x<sup>BMP</sup> = x<sup>PPM</sup>
 +
* y<sup>BMP</sup> = height - y<sup>PPM</sup>

Версия 11:31, 16 августа 2013

Проект CUDA

Литература

Содержание

BMP формат

Рисунок 1 (Edit)

PPM формат

  • описание формата PPM
Рисунок 1 (Edit)
  • "image in top to bottom, left to right order."

Расчет координат

Рисунок 2 (Edit)

Горизонтальное сравнение

Рисунок 3a (Edit)
  • Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
    • Tex1PixelX = width - xmargin + x;
    • PPM: Tex1PixelY = (y<yoffset) ? 0 : y ;
    • BMP: Tex1PixelY = (y<yoffset) ? height : height - y ;
  • Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
    • Tex2PixelX = 0;
    • PPM: Tex2PixelY = (y<yoffset) ? yoffset - y : 0 ;
    • BMP: Tex2PixelY = (y<yoffset) ? height - (yoffset - y) : height ;
  • Ширина и высота поля перекрытия:
    • xwidth = xmargin - x;
    • yheight = (y<yoffset) ? height - yoffset + y : height - (y - yoffset) ;

pixel = xwidth * yheight ;
 
for (div = 0; div < xwidth ; div++)
{
  Tex1CoorXf = (Tex1PixelX + divx) / (float) width;
  Tex2CoorXf = (Tex2PixelX + divx) / (float) width;
  for (divy = 0; divy < yheight ; divy++)
    {
      Tex1CoorYf = (Tex1PixelY + divy) / (float) width;
      Tex2CoorYf = (Tex2PixelY + divy) / (float) width;
      Tex1Pixel = tex2D(tex1, Tex1CoorXf, Tex1CoorYf);
      Tex2Pixel = tex2D(tex2, Tex2CoorXf, Tex2CoorYf);
      ErrorSum += PixelSub(Tex1Pixel, Tex1Pixel);
    }
}
ErrorSum = ErrorSum/pixel;
dM[x,y] = ErrorSum;


Вертикальное сравнение

Рисунок 3b (Edit)
  • Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
    • Tex1PixelX = (x<xoffset) ? 0 : x ;
    • PPM: Tex1PixelY = height - ymargin + y;
    • BMP: Tex1PixelY = ymargin - y;
  • Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
    • Tex2PixelX = (x<xoffset) ? xoffset - x : 0 ;
    • PPM: Tex2PixelY = 0;
    • BMP: Tex2PixelY = height;
  • Ширина и высота поля перекрытия:
    • xwidth = (x<xoffset) ? width - xoffset + x : width - (x - xoffset) ;
    • yheight = ymargin - y;

Преобразование координат между PPM и BMP

  • xPPM = xBMP
  • yPPM = height - yBMP
  • xBMP = xPPM
  • yBMP = height - yPPM