Template Class CLAHEImpl

Class Documentation

template<int IN_TYPE, int HEIGHT, int WIDTH, int NPC, int CLIPLIMIT, int TILES_Y_MAX, int TILES_X_MAX, int TILES_Y_MIN = 4, int TILES_X_MIN = 4>
class CLAHEImpl

Public Functions

inline void init(ap_uint<HIST_COUNTER_BITS> _lut[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX])
inline void clipLut(_CLAHE_TILE &Tile, ap_uint<HIST_COUNTER_BITS> _lut[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX])
inline void populateLutBlk(xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in, _CLAHE_TILE &Tile, xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in_copy, ap_uint<HIST_COUNTER_BITS> _lut[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX])
inline void populateLut(xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in, _CLAHE_TILE &Tile, xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in_copy, ap_uint<HIST_COUNTER_BITS> _lut[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX])
inline void interpolate(xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in, _CLAHE_TILE &Tile, ap_uint<HIST_COUNTER_BITS> _lut[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &dst)
inline void process_i(xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &dst, xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in, _CLAHE_TILE &Tile, ap_uint<HIST_COUNTER_BITS> _lutw[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<HIST_COUNTER_BITS> _lutr[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX])
inline void process(xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &dst, xf::cv::Mat<IN_TYPE, HEIGHT, WIDTH, NPC> &in, ap_uint<HIST_COUNTER_BITS> _lutw[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<HIST_COUNTER_BITS> _lutr[TILES_Y_MAX][TILES_X_MAX][(XF_NPIXPERCYCLE(NPC) << 1)][1 << XF_DTPIXELDEPTH(IN_TYPE, NPC)], ap_uint<CLIP_COUNTER_BITS> _clipCounter[TILES_Y_MAX][TILES_X_MAX], int height, int width, int clip, int tilesY, int tilesX)

Public Static Attributes

static constexpr int COLS_NPC_ALIGNED = (WIDTH + NPC - 1) >> XF_BITSHIFT(NPC)
static constexpr int SATURATION_CAST = (1 << XF_DTPIXELDEPTH(IN_TYPE, NPC))
static constexpr int TILE_HEIGHT_MAX = _CLAHE_TILE::TILE_HEIGHT_MAX
static constexpr int TILE_WIDTH_MAX = _CLAHE_TILE::TILE_WIDTH_MAX
static constexpr int CLIP_COUNTER_BITS = _CLAHE_TILE::CLIP_COUNTER_BITS
static constexpr int _MAXCLIPVALUE = ((CLIPLIMIT * TILE_HEIGHT_MAX * TILE_WIDTH_MAX) >> XF_DTPIXELDEPTH(IN_TYPE, NPC))
static constexpr int MAXCLIPVALUE = (_MAXCLIPVALUE > 1) ? _MAXCLIPVALUE : 1
static constexpr int HIST_COUNTER_BITS = (XF_DTPIXELDEPTH(IN_TYPE, NPC) > xf::cv::log2<MAXCLIPVALUE>::cvalue) ? XF_DTPIXELDEPTH(IN_TYPE, NPC) : xf::cv::log2<MAXCLIPVALUE>::cvalue