slm: OpenCL code base  0.1
Macros | Functions
channelheads.cl File Reference

Kernels to map provisional channel heads and the prune those not on thin channels. More...

Go to the source code of this file.

Macros

#define CHECK_IS_THINCHANNEL(idx)   ((mapping_array[idx] & IS_THINCHANNEL)>0)
 
#define CHECK_IS_MASKED(idx)   (mask_array[idx])
 
#define CHECK_THINCHANNEL(nbr_vec)
 
#define CHECK_E(vec)   CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1] ))
 
#define CHECK_NE(vec)   CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1]+1.0f ))
 
#define CHECK_N(vec)   CHECK_THINCHANNEL((float2)( vec[0] , vec[1]+1.0f ))
 
#define CHECK_NW(vec)   CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1]+1.0f ))
 
#define CHECK_W(vec)   CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1] ))
 
#define CHECK_SW(vec)   CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1]-1.0f ))
 
#define CHECK_S(vec)   CHECK_THINCHANNEL((float2)( vec[0] , vec[1]-1.0f ))
 
#define CHECK_SE(vec)   CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1]-1.0f ))
 

Functions

__kernel void map_channel_heads (__global const float2 *seed_point_array, __global const bool *mask_array, __global const float2 *uv_array, __global uint *mapping_array)
 Map provisional channel heads, even including those not on an IS_THINCHANNEL pixel and thus extraneous. More...
 
__kernel void prune_channel_heads (__global const float2 *seed_point_array, __global const bool *mask_array, __global const float2 *uv_array, __global uint *mapping_array)
 Keep only those provisional channel heads that lie on the 'thin channel' skeletonized network and have only one such thin channel pixel neighbor. More...
 

Detailed Description

Kernels to map provisional channel heads and the prune those not on thin channels.

Author
CPS
Bug:
No known bugs

Definition in file channelheads.cl.

Macro Definition Documentation

◆ CHECK_E

#define CHECK_E (   vec)    CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1] ))

Definition at line 103 of file channelheads.cl.

◆ CHECK_IS_MASKED

#define CHECK_IS_MASKED (   idx)    (mask_array[idx])

Definition at line 97 of file channelheads.cl.

◆ CHECK_IS_THINCHANNEL

#define CHECK_IS_THINCHANNEL (   idx)    ((mapping_array[idx] & IS_THINCHANNEL)>0)

Definition at line 96 of file channelheads.cl.

◆ CHECK_N

#define CHECK_N (   vec)    CHECK_THINCHANNEL((float2)( vec[0] , vec[1]+1.0f ))

Definition at line 105 of file channelheads.cl.

◆ CHECK_NE

#define CHECK_NE (   vec)    CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1]+1.0f ))

Definition at line 104 of file channelheads.cl.

◆ CHECK_NW

#define CHECK_NW (   vec)    CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1]+1.0f ))

Definition at line 106 of file channelheads.cl.

◆ CHECK_S

#define CHECK_S (   vec)    CHECK_THINCHANNEL((float2)( vec[0] , vec[1]-1.0f ))

Definition at line 109 of file channelheads.cl.

◆ CHECK_SE

#define CHECK_SE (   vec)    CHECK_THINCHANNEL((float2)( vec[0]+1.0f, vec[1]-1.0f ))

Definition at line 110 of file channelheads.cl.

◆ CHECK_SW

#define CHECK_SW (   vec)    CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1]-1.0f ))

Definition at line 108 of file channelheads.cl.

◆ CHECK_THINCHANNEL

#define CHECK_THINCHANNEL (   nbr_vec)
Value:
{ \
idx = get_array_idx(nbr_vec); \
flag += (CHECK_IS_THINCHANNEL(idx) | CHECK_IS_MASKED(idx)*16); \
}
#define CHECK_IS_MASKED(idx)
Definition: channelheads.cl:97
static uint get_array_idx(float2 vec)
Compute the array index of the padded grid pixel pointed to by a float2 grid position vector (choice ...
Definition: essentials.cl:62
#define CHECK_IS_THINCHANNEL(idx)
Definition: channelheads.cl:96

Definition at line 98 of file channelheads.cl.

◆ CHECK_W

#define CHECK_W (   vec)    CHECK_THINCHANNEL((float2)( vec[0]-1.0f, vec[1] ))

Definition at line 107 of file channelheads.cl.