Public Member Functions | |
ScalarGradientCompute (T *_dataPtr, unsigned char *_tmpPtr, unsigned char *_tmpPtr2, int _sizeX, int _sizeY, int _sizeZ, int _fullX, int _fullY, int _fullZ, float _offset, float _scale) | |
float | sample (int x, int y, int z) |
void | fill (int x, int y, int z) |
int | clamp (int x) |
void | write (int x, int y, int z, float grayValue, float gx, float gy, float gz) |
void | compute (int x, int y, int z) |
void | computeClamp (int x, int y, int z) |
void | compute1D (int y, int z) |
void | fill1D (int y, int z) |
void | computeClamp1D (int y, int z) |
void | computeClamp2D (int z) |
void | compute2D (int z) |
void | fill2D (int z) |
void | fillSlices (int currentChunkStart, int currentChunkEnd) |
Definition at line 722 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
ScalarGradientCompute< T >::ScalarGradientCompute | ( | T * | _dataPtr, |
unsigned char * | _tmpPtr, | ||
unsigned char * | _tmpPtr2, | ||
int | _sizeX, | ||
int | _sizeY, | ||
int | _sizeZ, | ||
int | _fullX, | ||
int | _fullY, | ||
int | _fullZ, | ||
float | _offset, | ||
float | _scale | ||
) | [inline] |
Definition at line 748 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
{ dataPtr=_dataPtr; tmpPtr=_tmpPtr; tmpPtr2=_tmpPtr2; sizeX=_sizeX; sizeY=_sizeY; sizeZ=_sizeZ; fullX=_fullX; fullY=_fullY; fullZ=_fullZ; offset=_offset; scale=_scale; sizeXY=sizeX*sizeY; sizeXm1=sizeX-1; sizeYm1=sizeY-1; sizeZm1=sizeZ-1; fullXY=fullX*fullY; }
int ScalarGradientCompute< T >::clamp | ( | int | x ) | [inline] |
Definition at line 790 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
Referenced by ScalarGradientCompute< T >::write().
void ScalarGradientCompute< T >::compute | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Definition at line 857 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::sample(), and ScalarGradientCompute< T >::write().
Referenced by ScalarGradientCompute< T >::compute1D().
void ScalarGradientCompute< T >::compute1D | ( | int | y, |
int | z | ||
) | [inline] |
Definition at line 890 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::compute(), ScalarGradientCompute< T >::computeClamp(), and ScalarGradientCompute< T >::fill().
Referenced by ScalarGradientCompute< T >::compute2D().
{ int x; x=0; computeClamp(x,y,z); x++; while(x<sizeX-1) { compute(x,y,z); x++; } if(x<sizeX) { computeClamp(x,y,z); x++; } while(x<fullX) { fill(x,y,z); x++; } }
void ScalarGradientCompute< T >::compute2D | ( | int | z ) | [inline] |
Definition at line 968 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::compute1D(), ScalarGradientCompute< T >::computeClamp1D(), and ScalarGradientCompute< T >::fill1D().
Referenced by ScalarGradientCompute< T >::fillSlices().
{ int y; y=0; computeClamp1D(y,z); y++; while(y<sizeY-1) { compute1D(y,z); y++; } if(y<sizeY) { computeClamp1D(y,z); y++; } while(y<fullY) { fill1D(y,z); y++; } }
void ScalarGradientCompute< T >::computeClamp | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Definition at line 870 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::sample(), and ScalarGradientCompute< T >::write().
Referenced by ScalarGradientCompute< T >::compute1D(), and ScalarGradientCompute< T >::computeClamp1D().
{ float grayValue = sample(x,y,z); float gx,gy,gz; if(x==0) gx = 2.0f * ( sample(x+1,y,z) - grayValue ); else if(x==sizeXm1) gx = 2.0f * ( grayValue - sample(x-1,y,z) ); else gx = sample(x+1,y,z) - sample(x-1,y,z); if(y==0) gy = 2.0f * ( sample(x,y+1,z) - grayValue ); else if(y==sizeYm1) gy = 2.0f * ( grayValue - sample(x,y-1,z) ); else gy = sample(x,y+1,z) - sample(x,y-1,z); if(z==0) gz = 2.0f * ( sample(x,y,z+1) - grayValue ); else if(z==sizeZm1) gz = 2.0f * ( grayValue - sample(x,y,z-1) ); else gz = sample(x,y,z+1) - sample(x,y,z-1); write( x, y, z, grayValue, gx, gy, gz ); }
void ScalarGradientCompute< T >::computeClamp1D | ( | int | y, |
int | z | ||
) | [inline] |
Definition at line 930 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::computeClamp(), and ScalarGradientCompute< T >::fill().
Referenced by ScalarGradientCompute< T >::compute2D(), and ScalarGradientCompute< T >::computeClamp2D().
{ int x; x=0; while(x<sizeX) { computeClamp(x,y,z); x++; } while(x<fullX) { fill(x,y,z); x++; } }
void ScalarGradientCompute< T >::computeClamp2D | ( | int | z ) | [inline] |
Definition at line 949 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::computeClamp1D(), and ScalarGradientCompute< T >::fill1D().
Referenced by ScalarGradientCompute< T >::fillSlices().
{ int y; y=0; while(y<sizeY) { computeClamp1D(y,z); y++; } while(y<fullY) { fill1D(y,z); y++; } }
void ScalarGradientCompute< T >::fill | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Definition at line 775 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
Referenced by ScalarGradientCompute< T >::compute1D(), ScalarGradientCompute< T >::computeClamp1D(), and ScalarGradientCompute< T >::fill1D().
void ScalarGradientCompute< T >::fill1D | ( | int | y, |
int | z | ||
) | [inline] |
Definition at line 917 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::fill().
Referenced by ScalarGradientCompute< T >::compute2D(), ScalarGradientCompute< T >::computeClamp2D(), and ScalarGradientCompute< T >::fill2D().
void ScalarGradientCompute< T >::fill2D | ( | int | z ) | [inline] |
Definition at line 995 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::fill1D().
Referenced by ScalarGradientCompute< T >::fillSlices().
void ScalarGradientCompute< T >::fillSlices | ( | int | currentChunkStart, |
int | currentChunkEnd | ||
) | [inline] |
Definition at line 1007 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::compute2D(), ScalarGradientCompute< T >::computeClamp2D(), and ScalarGradientCompute< T >::fill2D().
Referenced by vtkVolumeTextureMapper3DComputeScalars().
{ offZ=currentChunkStart; /* int num = omp_get_num_procs(); MITK_INFO << "omp uses " << num << " processors"; */ #pragma omp parallel for for(int z=currentChunkStart;z<=currentChunkEnd;z++) { if(z==0 || z==sizeZ-1) computeClamp2D(z); else if(z>=sizeZ) fill2D(z); else compute2D(z); } }
float ScalarGradientCompute< T >::sample | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Definition at line 770 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
Referenced by ScalarGradientCompute< T >::compute(), and ScalarGradientCompute< T >::computeClamp().
void ScalarGradientCompute< T >::write | ( | int | x, |
int | y, | ||
int | z, | ||
float | grayValue, | ||
float | gx, | ||
float | gy, | ||
float | gz | ||
) | [inline] |
Definition at line 796 of file vtkMitkOpenGLVolumeTextureMapper3D.cpp.
References ScalarGradientCompute< T >::clamp(), and QuadProgPP::t().
Referenced by ScalarGradientCompute< T >::compute(), and ScalarGradientCompute< T >::computeClamp().
{ /* gx /= aspect[0]; gy /= aspect[1]; gz /= aspect[2]; */ // Compute the gradient magnitude int iGrayValue = static_cast<int>( (grayValue + offset) * scale + 0.5f ); gx *= scale; gy *= scale; gz *= scale; float t = sqrtf( gx*gx + gy*gy + gz*gz ); if ( t > 0.01f ) { if( t < 2.0f ) { float fac = 2.0f/t; gx *= fac; gy *= fac; gz *= fac; } else if( t > 255.0f) { float fac = 255.0f/t; gx *= fac; gy *= fac; gz *= fac; } } else { gx=gy=gz=0.0f; } int nx = static_cast<int>(0.5f*gx+127.5f); int ny = static_cast<int>(0.5f*gy+127.5f); int nz = static_cast<int>(0.5f*gz+127.5f); int doff = x + y * fullX + (z-offZ) * fullXY; //tmpPtr[doff*2+0]= 0; tmpPtr[doff*4+0]= clamp(nx); tmpPtr[doff*4+1]= clamp(ny); tmpPtr[doff*4+2]= clamp(nz); tmpPtr[doff*4+3]= clamp(iGrayValue); /* if( z == fullZ/2 ) if( y == fullY/2 ) MITK_INFO << x << " " << y << " " << z << " : " << iGrayValue << " : " << iGradient; */ }