This function calculates the Laplacian of the input image. This function internally uses the filter2D kernel to compute the Laplacian. The filter coefficients are calculated using cv::getDerivKernels OpenCV function on the host side.
API Syntax
template<int BORDER_TYPE,int FILTER_WIDTH,int FILTER_HEIGHT, int SRC_T,int DST_T, int ROWS, int COLS,int NPC=1, int XFCVDEPTH_IN_1 = _XFCVDEPTH_DEFAULT, int XFCVDEPTH_OUT_1 = _XFCVDEPTH_DEFAULT>
void filter2D(xf::cv::Mat<SRC_T, ROWS, COLS, NPC, XFCVDEPTH_IN_1> & _src_mat,xf::cv::Mat<DST_T, ROWS, COLS, NPC, XFCVDEPTH_OUT_1> & _dst_mat,short int filter[FILTER_HEIGHT*FILTER_WIDTH],unsigned char _shift)
Parameter Descriptions
The following table describes the template and the function parameters.
Parameter | Description |
---|---|
BORDER_TYPE | Border Type supported is XF_BORDER_CONSTANT |
FILTER_HEIGHT | Number of rows in the input filter |
FILTER_WIDTH | Number of columns in the input filter |
SRC_T | Input pixel type. Only 8-bit, unsigned, 1 and 3 channels are supported (XF_8UC1 and XF_8UC3) |
DST_T | Output pixel type. 8-bit unsigned single and 3 channels (XF_8UC1, XF_8UC3) and 16-bit signed single and 3 channels (XF_16SC1, XF_16SC3) supported. |
ROWS | Maximum height of input and output image |
COLS | Maximum width of input and output image. Must be multiple of 8, for 8 pixel mode. |
NPC | Number of pixels to be processed per cycle; possible options are XF_NPPC1 and XF_NPPC8 for 1 pixel and 8 pixel operations respectively. |
XFCVDEPTH_IN | Depth of the input image. |
XFCVDEPTH_OUT | Depth of the output image. |
_src_mat | Input image |
_dst_mat | Output image |
filter | The input filter of any size, provided the dimensions should be an odd number. The filter co-efficients either a 16-bit value or a 16-bit fixed point equivalent value. |
_shift | The filter must be of type XF_16SP. If the co-efficients are floating point, it must be converted into the Qm.n and provided as the input as well as the shift parameter has to be set with the ānā value. Else, if the input is not of floating point, the filter is provided directly and the shift parameter is set to zero. |
Resource Utilization
The following table summarizes the resource utilization of the kernel in different configurations, generated using Vivado HLS 2019.1 tool for the Xczu9eg-ffvb1156-1-i-es1 FPGA, to process a grayscale HD (1080x1920) image.
Operating Mode | Filter Size | Operating Frequency (MHz) | Utilization Estimate | ||||
---|---|---|---|---|---|---|---|
BRAM_18K | DSP_48Es | FF | LUT | CLB | |||
1 Pixel | 3x3 | 300 | 3 | 9 | 1701 | 1161 | 269 |
5x5 | 300 | 5 | 25 | 3115 | 2144 | 524 | |
8 Pixel | 3x3 | 150 | 6 | 72 | 2783 | 2768 | 638 |
5x5 | 150 | 10 | 216 | 3020 | 4443 | 1007 |
The following table summarizes the resource utilization of the kernel in different configurations, generated using Vivado HLS 2019.1 tool for the Xilinx Xczu9eg-ffvb1156-1-i-es1 FPGA, to process a 4K 3 Channel image.
Operating Mode | Filter Size | Operating Frequency (MHz) | Utilization Estimate | |||
---|---|---|---|---|---|---|
BRAM_18K | DSP_48Es | FF | LUT | |||
1 Pixel | 3x3 | 300 | 18 | 27 | 886 | 801 |
8 Pixel | 5x5 | 300 | 30 | 75 | 1793 | 1445 |
Performance Estimate
The following table summarizes the performance of the kernel in different configurations, as generated using Vivado HLS 2019.1 tool for the Xczu9eg-ffvb1156-1-i-es1, to process a grayscale HD (1080x1920) image.
Operating Mode | Operating Frequency (MHz) | Filter Size | Latency Estimate |
---|---|---|---|
Max (ms) | |||
1 pixel | 300 | 3x3 | 7 |
300 | 5x5 | 7.1 | |
8 pixel | 150 | 3x3 | 1.86 |
150 | 5x5 | 1.86 |