diff --git a/src/linalg/mat.cu b/src/linalg/mat.cu index 2dd2564..2d1c8dc 100644 --- a/src/linalg/mat.cu +++ b/src/linalg/mat.cu @@ -7,7 +7,6 @@ using namespace std; __device__ Vec3 computeGradient(float* volumeData, const int volW, const int volH, const int volD, int x, int y, int z) { // Finite difference for partial derivatives. // For boundary voxels - clamp to the boundary. - // Normal should point from higher to lower intensities int xm = max(x - 1, 0); int xp = min(x + 1, volH - 1); @@ -16,19 +15,11 @@ __device__ Vec3 computeGradient(float* volumeData, const int volW, const int vol int zm = max(z - 1, 0); int zp = min(z + 1, volD - 1); - // Note: Assuming data is linearized (idx = z*w*h + y*w + x) TODO: Unlinearize if data not linear - // float gx = volumeData[z * volW * volH + y * volW + xp] - // - volumeData[z * volW * volH + y * volW + xm]; - // float gy = volumeData[z * volW * volH + yp * volW + x ] - // - volumeData[z * volW * volH + ym * volW + x ]; - // float gz = volumeData[zp * volW * volH + y * volW + x ] - // - volumeData[zm * volW * volH + y * volW + x ]; - // Note: Assuming data is linearized (idx = z * W * H + x * W + y;) TODO: Unlinearize if data not linear - float gx = volumeData[z * volW * volH + x * volW + xp] - - volumeData[z * volW * volH + x * volW + xm]; - float gy = volumeData[z * volW * volH + y * volW + yp] - - volumeData[z * volW * volH + y * volW + ym]; + float gx = volumeData[z * volW * volH + xp * volW + y] + - volumeData[z * volW * volH + xm * volW + y]; + float gy = volumeData[z * volW * volH + x * volW + yp] + - volumeData[z * volW * volH + x * volW + ym]; float gz = volumeData[zp * volW * volH + x * volW + y ] - volumeData[zm * volW * volH + x * volW + y ]; diff --git a/src/linalg/mat.h b/src/linalg/mat.h index 4d2a1d5..02234c0 100644 --- a/src/linalg/mat.h +++ b/src/linalg/mat.h @@ -2,6 +2,7 @@ #define MAT_H #include "vec.h" +#include "consts.h" __device__ Vec3 computeGradient(float* volumeData, const int volW, const int volH, const int volD, int x, int y, int z);