CUDA (Проект)/Описание алгоритма работы программы — различия между версиями
Материал из Wiki
ANA (обсуждение | вклад) м (→BMP формат) |
ANA (обсуждение | вклад) м (→Расчет координат) |
||
Строка 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) : | + | ** '''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
- Техническое задание
- DDS формат
- Алгоритм сшифки кадров
- Описание программы GLView
Литература
Содержание |
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