CUDA (Проект)/Описание алгоритма работы программы — различия между версиями
Материал из Wiki
ANA (обсуждение | вклад) |
ANA (обсуждение | вклад) |
||
| Строка 7: | Строка 7: | ||
|} | |} | ||
| − | Координаты для Tex1 при заданном смещении x и y: | + | ==== Горизонтальное сравнение ==== |
| + | * Координаты левого верхнего угла для Tex1 при заданном смещении x и y: | ||
| + | ** Tex1PixelX = width - xmargin + x | ||
| + | ** Tex1PixelY = (y<yoffset) ? 0 : y ; | ||
| + | * Координаты левого верхнего угла для Tex2 при заданном смещении x и y: | ||
| + | ** Tex2PixelX = 0 | ||
| + | ** Tex2PixelY = (y<yoffset) ? yoffset - y : 0 ; | ||
| + | * Ширина и высота поля перекрытия: | ||
| + | ** xwidth = xmargin - x; | ||
| + | ** yheight = (y<yoffset) ? height - yoffset + y : height - (y - yoffset) ; | ||
| + | |||
| + | <source lang="cpp"> | ||
| + | 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; | ||
| + | </source> | ||
| + | |||
| + | |||
| + | ==== Вертикальное сравнение ==== | ||
| + | * Координаты левого верхнего угла для Tex1 при заданном смещении x и y: | ||
| + | ** Tex1PixelX = (x<xoffset) ? 0 : x ; | ||
| + | ** Tex1PixelY = height - ymargin + y | ||
| + | * Координаты левого верхнего угла для Tex2 при заданном смещении x и y: | ||
| + | ** Tex2PixelX = (x<xoffset) ? xoffset - x : 0 ; | ||
| + | ** Tex2PixelY = 0 | ||
| + | * Ширина и высота поля перекрытия: | ||
| + | ** xwidth = (x<xoffset) ? width - xoffset + x : width - (x - xoffset) ; | ||
| + | ** yheight = ymargin - y; | ||
Версия 16:37, 15 августа 2013
Проект CUDA
- Техническое задание
- DDS формат
- Алгоритм сшифки кадров
- Описание программы GLView
Литература
| |
|---|
| Рисунок 1 (Edit) |
Горизонтальное сравнение
- Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
- Tex1PixelX = width - xmargin + x
- Tex1PixelY = (y<yoffset) ? 0 : y ;
- Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
- Tex2PixelX = 0
- Tex2PixelY = (y<yoffset) ? yoffset - y : 0 ;
- Ширина и высота поля перекрытия:
- 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;
Вертикальное сравнение
- Координаты левого верхнего угла для Tex1 при заданном смещении x и y:
- Tex1PixelX = (x<xoffset) ? 0 : x ;
- Tex1PixelY = height - ymargin + y
- Координаты левого верхнего угла для Tex2 при заданном смещении x и y:
- Tex2PixelX = (x<xoffset) ? xoffset - x : 0 ;
- Tex2PixelY = 0
- Ширина и высота поля перекрытия:
- xwidth = (x<xoffset) ? width - xoffset + x : width - (x - xoffset) ;
- yheight = ymargin - y;