                 block.y = 4;
                 block.z = 4;
 
+#ifdef DESCRIPTORS_FROM_UNBLURRED_IMAGE
+                Plane2D_float& data = oct_obj.getData( 0 );
+#else // not DESCRIPTORS_FROM_UNBLURRED_IMAGE
+                Plane2D_float& data = oct_obj.getData( level );
+#endif // not DESCRIPTORS_FROM_UNBLURRED_IMAGE
+
                 keypoint_descriptors
                     <<<grid,block,0,oct_obj.getStream(level+2)>>>
                     ( oct_obj.getExtrema( level ),
                       oct_obj.getDescriptors( level ),
-                      oct_obj.getData( level ) );
+                      data );
 
                 grid.x  = grid_divide( num_orientations[level], 32 );
                 block.x = 32;

                ( extrema_counter,
                  oct_obj.getExtrema( level ),
                  oct_obj.getDescriptors( level ),
                  oct_obj.getData( level ) );
        }
    }


#include "sift_constants.h"
#include "s_gradiant.h"
#include "assist.h"

#undef DESCRIPTORS_FROM_UNBLURRED_IMAGE

/*************************************************************
 * V1: device side
