                      cv::cuda::PtrStepSz16s src_dy,
                      cv::cuda::PtrStepSz32u dst )
 {
-    int block_x = blockIdx.x * V7_WIDTH;
+    int block_x = blockIdx.x * 32;
     int idx     = block_x + threadIdx.x;
     int idy     = blockIdx.y;
 

__global__
void thinning( cv::cuda::PtrStepSzb src, cv::cuda::PtrStepSzb dst )
{
    const int block_x = blockIdx.x * V7_WIDTH;
    const int idx     = block_x + threadIdx.x;
    const int idy     = blockIdx.y;


     * to identical coordinates.
     * @Lilian - please explain what happens here
     */
    // if( out_edge.befor.x == out_edge.after.x && out_edge.befor.y == out_edge.after.y ) keep = false;

    uint32_t mask = __ballot( keep );  // bitfield of warps with results
    if( mask == 0 ) return;
