From 18e588575718ee59c1af7f5898c1cc89948eb640 Mon Sep 17 00:00:00 2001 From: SDA USR <1391+sdausr@users.noreply.gitenterprise.xilinx.com> Date: Mon, 16 Jan 2023 12:04:03 +0800 Subject: [PATCH] Squashed 'vision' changes from 2e145e5..1092f08 (#756) 1092f08 2022.2_update1 release 76f2dd0 Merge pull request #510 from FaaSApps/next 2e79665 Update Jenkinsfile a774553 2022.2_update1 docs 4c864e3 Update README.md ff60d29 2022.2_update1 docs a47f08a Merge pull request #506 from maitreya/next 74aca26 Merge branch 'next' into next 0608a73 Merge pull request #509 from swarnapr/aio_adas 1467f27 Merge pull request #507 from swarnapr/multi_strm e73778e Corrected config file a93021c Makefile c625e9f Makefile 5b138be Re-order all_in_one_adas 9096dd9 isp_mutlistream partition in kernel e12eaa3 Changed default xfcvdepth values to 2 b0b27fb Merge pull request #505 from maitreya/next ee2e2d2 Fixed isppipeline-rgbir tb for multiple bitdepths for SIGSEGV 4d6aed4 Merge pull request #498 from swarnapr/aio_adas b6b31d0 Merge pull request #494 from srujanam/next be11b18 discarded json changes 2f8289e updated Makefile and JSON 4947f6e Merge pull request #497 from nvunnam/next ae0b517 rename all-in-one as all-in-one_adas 7bf9692 changes in stitcher 558935c xf_structs.hpp updated 06fdaa4 Stride support Added d0fecc7 change 2022.2_stable_latest to 2023.1_stable_latest d8d38ed create main branch from next branch Co-authored-by: sdausr --- vision/Jenkinsfile | 4 +- .../examples/3dlut/build/xf_config_params.h | 4 +- .../accumulate/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../addweighted/build/xf_config_params.h | 4 +- .../L1/examples/aec/build/xf_config_params.h | 4 +- .../examples/arithm/build/xf_config_params.h | 4 +- .../autowhitebalance/build/xf_config_params.h | 4 +- .../examples/axiconv/build/xf_config_params.h | 2 +- .../build/xf_config_params.h | 4 +- .../bilateralfilter/build/xf_config_params.h | 4 +- .../boxfilter/build/xf_config_params.h | 4 +- .../channelcombine/build/xf_config_params.h | 6 +- .../examples/clahe/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../colordetect/build/xf_config_params.h | 12 +- .../convertbitdepth/build/xf_config_params.h | 4 +- .../convertscaleabs/build/xf_config_params.h | 4 +- .../custom_bgr2y8/build/xf_config_params.h | 4 +- .../customconv/build/xf_config_params.h | 4 +- .../cvtcolor/build/xf_config_params.h | 14 +- .../demosaicing/build/xf_config_params.h | 4 +- .../dilation/build/xf_config_params.h | 4 +- .../examples/erosion/build/xf_config_params.h | 4 +- .../L1/examples/fast/build/xf_config_params.h | 4 +- .../gaincontrol/build/xf_config_params.h | 4 +- .../gammacorrection/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 8 +- .../gaussianfilter/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../examples/harris/build/xf_config_params.h | 4 +- .../hdrextractfrms/build/xf_config_params.h | 6 +- .../hdrmerge/build/xf_config_params.h | 6 +- .../histequalize/build/xf_config_params.h | 6 +- .../histogram/build/xf_config_params.h | 2 +- .../L1/examples/hog/build/xf_config_params.h | 4 +- .../houghlines/build/xf_config_params.h | 2 +- .../examples/inrange/build/xf_config_params.h | 4 +- .../integralimg/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 24 +- .../examples/isppipeline-rgbir/xf_isp_tb.cpp | 6 - .../isppipeline/build/xf_config_params.h | 22 +- .../ispstats/build/xf_config_params.h | 2 +- .../kalmanfilter/build/xf_config_params.h | 28 +- .../build/xf_config_params.h | 4 +- .../lkdensepyrof/build/xf_config_params.h | 12 +- .../lknpyroflow/build/xf_config_params.h | 8 +- .../L1/examples/lut/build/xf_config_params.h | 4 +- .../magnitude/build/xf_config_params.h | 6 +- .../meanstddev/build/xf_config_params.h | 2 +- .../medianblur/build/xf_config_params.h | 4 +- .../minmaxloc/build/xf_config_params.h | 2 +- .../modefilter/build/xf_config_params.h | 4 +- .../otsuthreshold/build/xf_config_params.h | 2 +- .../paintmask/build/xf_config_params.h | 6 +- .../examples/phase/build/xf_config_params.h | 6 +- .../examples/pyrdown/build/xf_config_params.h | 4 +- .../examples/pyrup/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../examples/reduce/build/xf_config_params.h | 4 +- .../tonemapping/build/xf_config_params.h | 4 +- vision/L1/include/common/xf_structs.hpp | 13 +- .../include/imgproc/xf_autowhitebalance.hpp | 211 ++++++ vision/L1/include/imgproc/xf_black_level.hpp | 25 +- .../L1/include/imgproc/xf_cca_custom_imp.hpp | 9 +- vision/L1/include/imgproc/xf_demosaicing.hpp | 365 ++++++++++ vision/L1/include/imgproc/xf_gaincontrol.hpp | 173 +++++ .../L1/include/imgproc/xf_gammacorrection.hpp | 19 + vision/L1/include/imgproc/xf_hdrmerge.hpp | 30 +- vision/L1/include/imgproc/xf_ltm.hpp | 102 +++ vision/L1/lib/hw/8_16/stitcher.xo | Bin 252855 -> 319566 bytes .../tests/3dlut/3dlut_uram/xf_config_params.h | 4 +- .../accumulate_NO/xf_config_params.h | 4 +- .../accumulate_NO_RGBA/xf_config_params.h | 4 +- .../accumulate_RO/xf_config_params.h | 4 +- .../accumulate_squared_NO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../accumulate_squared_RO/xf_config_params.h | 4 +- .../accumulate_weighted_NO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../accumulate_weighted_RO/xf_config_params.h | 4 +- .../addweighted_no/xf_config_params.h | 4 +- .../addweighted_ro/xf_config_params.h | 4 +- .../arithm/absdiff_no/xf_config_params.h | 4 +- .../arithm/absdiff_ro/xf_config_params.h | 4 +- .../tests/arithm/addS_no/xf_config_params.h | 4 +- .../tests/arithm/addS_ro/xf_config_params.h | 4 +- .../L1/tests/arithm/add_no/xf_config_params.h | 4 +- .../arithm/add_no_16S/xf_config_params.h | 4 +- .../arithm/add_no_16S_RGBA/xf_config_params.h | 4 +- .../L1/tests/arithm/add_ro/xf_config_params.h | 4 +- .../arithm/bitwise_and_no/xf_config_params.h | 4 +- .../arithm/bitwise_and_ro/xf_config_params.h | 4 +- .../arithm/bitwise_not_no/xf_config_params.h | 4 +- .../arithm/bitwise_not_ro/xf_config_params.h | 4 +- .../arithm/bitwise_or_no/xf_config_params.h | 4 +- .../arithm/bitwise_or_ro/xf_config_params.h | 4 +- .../arithm/bitwise_xor_no/xf_config_params.h | 4 +- .../arithm/bitwise_xor_ro/xf_config_params.h | 4 +- .../arithm/compareS_no/xf_config_params.h | 4 +- .../arithm/compareS_ro/xf_config_params.h | 4 +- .../arithm/compare_EQ_no/xf_config_params.h | 4 +- .../arithm/compare_EQ_ro/xf_config_params.h | 4 +- .../arithm/compare_GE_no/xf_config_params.h | 4 +- .../arithm/compare_GE_ro/xf_config_params.h | 4 +- .../arithm/compare_GT_no/xf_config_params.h | 4 +- .../arithm/compare_GT_ro/xf_config_params.h | 4 +- .../arithm/compare_LE_no/xf_config_params.h | 4 +- .../arithm/compare_LE_ro/xf_config_params.h | 4 +- .../arithm/compare_LT_no/xf_config_params.h | 4 +- .../arithm/compare_LT_ro/xf_config_params.h | 4 +- .../arithm/compare_no/xf_config_params.h | 4 +- .../arithm/compare_ro/xf_config_params.h | 4 +- .../tests/arithm/maxS_no/xf_config_params.h | 4 +- .../tests/arithm/maxS_ro/xf_config_params.h | 4 +- .../L1/tests/arithm/max_no/xf_config_params.h | 4 +- .../L1/tests/arithm/max_ro/xf_config_params.h | 4 +- .../tests/arithm/minS_no/xf_config_params.h | 4 +- .../tests/arithm/minS_ro/xf_config_params.h | 4 +- .../L1/tests/arithm/min_no/xf_config_params.h | 4 +- .../L1/tests/arithm/min_ro/xf_config_params.h | 4 +- .../arithm/multiply_no/xf_config_params.h | 4 +- .../arithm/multiply_no_16S/xf_config_params.h | 4 +- .../multiply_no_16S_RGBA/xf_config_params.h | 4 +- .../multiply_no_RGBA/xf_config_params.h | 4 +- .../arithm/multiply_ro/xf_config_params.h | 4 +- .../arithm/multiply_ro_16S/xf_config_params.h | 4 +- .../tests/arithm/subS_no/xf_config_params.h | 4 +- .../tests/arithm/subS_ro/xf_config_params.h | 4 +- .../L1/tests/arithm/sub_no/xf_config_params.h | 4 +- .../arithm/sub_no_16S/xf_config_params.h | 4 +- .../L1/tests/arithm/sub_ro/xf_config_params.h | 4 +- .../arithm/sub_ro_16S/xf_config_params.h | 4 +- .../AWB_NO_GRAYWB/xf_config_params.h | 4 +- .../AWB_NO_SIMPLE/xf_config_params.h | 4 +- .../BPC_1PIXEL/xf_config_params.h | 4 +- .../BPC_2PIXEL/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_NO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_NO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_NO_7/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_7/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_7/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_7/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_7/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_5/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_7/xf_config_params.h | 4 +- .../xf_config_params.h | 6 +- .../xf_config_params.h | 6 +- .../xf_config_params.h | 6 +- .../ccm_NO_bt2020_bt709/xf_config_params.h | 4 +- .../ccm_NO_bt709_bt2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_full_to_16_235/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_601/xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_709/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_2020/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_601/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_709/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_709_16U/xf_config_params.h | 4 +- .../ccm_RO_bt2020_bt709/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_bt709_bt2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_full_to_16_235/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_2020/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_601/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_601_16U/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_709/xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_601/xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_709/xf_config_params.h | 4 +- .../colordetect_NO/xf_config_params.h | 12 +- .../convt_bit_NO_16sto32s/xf_config_params.h | 4 +- .../convt_bit_NO_16sto8u/xf_config_params.h | 4 +- .../convt_bit_NO_16uto32s/xf_config_params.h | 4 +- .../convt_bit_NO_16uto8u/xf_config_params.h | 4 +- .../convt_bit_NO_32sto16s/xf_config_params.h | 4 +- .../convt_bit_NO_32sto16u/xf_config_params.h | 4 +- .../convt_bit_NO_32sto8u/xf_config_params.h | 4 +- .../convt_bit_NO_8uto16S/xf_config_params.h | 4 +- .../convt_bit_NO_8uto16u/xf_config_params.h | 4 +- .../convt_bit_NO_8uto32S/xf_config_params.h | 4 +- .../convt_bit_RO_16sto8u/xf_config_params.h | 4 +- .../convt_bit_RO_16uto8u/xf_config_params.h | 4 +- .../convt_bit_RO_8uto16S/xf_config_params.h | 4 +- .../convt_bit_RO_8uto16u/xf_config_params.h | 4 +- .../convertScaleAbs_no/xf_config_params.h | 4 +- .../convertScaleAbs_ro/xf_config_params.h | 4 +- .../custom_BGR2Y8_NO/xf_config_params.h | 4 +- .../custom_BGR2Y8_RO/xf_config_params.h | 4 +- .../custconv_NO_3/xf_config_params.h | 4 +- .../custconv_NO_3_16/xf_config_params.h | 4 +- .../custconv_NO_3_16_RGBA/xf_config_params.h | 4 +- .../custconv_NO_3_RGBA/xf_config_params.h | 4 +- .../custconv_NO_5/xf_config_params.h | 4 +- .../custconv_NO_5_16/xf_config_params.h | 4 +- .../custconv_NO_5_16_RGBA/xf_config_params.h | 4 +- .../custconv_NO_5_RGBA/xf_config_params.h | 4 +- .../custconv_NO_7/xf_config_params.h | 4 +- .../custconv_NO_7_16/xf_config_params.h | 4 +- .../custconv_NO_7_16_RGBA/xf_config_params.h | 4 +- .../custconv_NO_7_RGBA/xf_config_params.h | 4 +- .../custconv_RO_3/xf_config_params.h | 4 +- .../custconv_RO_3_16/xf_config_params.h | 4 +- .../custconv_RO_3_16_RGBA/xf_config_params.h | 4 +- .../custconv_RO_3_RGBA/xf_config_params.h | 4 +- .../custconv_RO_5/xf_config_params.h | 4 +- .../custconv_RO_5_16/xf_config_params.h | 4 +- .../custconv_RO_5_16_RGBA/xf_config_params.h | 4 +- .../custconv_RO_5_RGBA/xf_config_params.h | 4 +- .../custconv_RO_7/xf_config_params.h | 4 +- .../custconv_RO_7_16/xf_config_params.h | 4 +- .../custconv_RO_7_16_RGBA/xf_config_params.h | 4 +- .../custconv_RO_7_RGBA/xf_config_params.h | 4 +- .../cvtcolor/iyuv2rgb/xf_config_params.h | 14 +- .../cvtcolor/iyuv2rgb_ro/xf_config_params.h | 14 +- .../cvtcolor/rgb2iyuv_ro/xf_config_params.h | 14 +- .../cvtcolor/rgba2iyuv/xf_config_params.h | 14 +- .../demosaicing_1ppc_16bit/xf_config_params.h | 4 +- .../demosaicing_1ppc_8bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../demosaicing_2ppc_16bit/xf_config_params.h | 4 +- .../demosaicing_2ppc_8bit/xf_config_params.h | 4 +- .../demosaicing_4ppc_8bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_NO_CROSS/xf_config_params.h | 4 +- .../dilation_NO_ELLISPE/xf_config_params.h | 4 +- .../dilation_NO_RECT/xf_config_params.h | 4 +- .../dilation_NO_RECT_ITER/xf_config_params.h | 4 +- .../dilation_RGBA_NO/xf_config_params.h | 4 +- .../dilation_RO_CROSS/xf_config_params.h | 4 +- .../dilation_RO_ELLIPSE/xf_config_params.h | 4 +- .../dilation_RO_RECT/xf_config_params.h | 4 +- .../dilation_RO_RECT_ITER/xf_config_params.h | 4 +- .../erosion_NO_CROSS/xf_config_params.h | 4 +- .../erosion_NO_ELLIPSE/xf_config_params.h | 4 +- .../erosion_NO_RECT/xf_config_params.h | 4 +- .../erosion_NO_RECT_ITER/xf_config_params.h | 4 +- .../erosion_RGBA_NO/xf_config_params.h | 4 +- .../erosion_RO_CROSS/xf_config_params.h | 4 +- .../erosion_RO_ELLIPSE/xf_config_params.h | 4 +- .../erosion_RO_RECT/xf_config_params.h | 4 +- .../erosion_RO_RECT_ITER/xf_config_params.h | 4 +- .../gaincontrol/GC_1PIXEL/xf_config_params.h | 4 +- .../gaincontrol/GC_2PIXEL/xf_config_params.h | 4 +- .../GAMMA_NO/xf_config_params.h | 4 +- .../DOG_NO_3/xf_config_params.h | 8 +- .../DOG_NO_5/xf_config_params.h | 8 +- .../DOG_NO_7/xf_config_params.h | 8 +- .../DOG_RO_3/xf_config_params.h | 8 +- .../DOG_RO_5/xf_config_params.h | 8 +- .../DOG_RO_7/xf_config_params.h | 8 +- .../gauss_3x3_NO/xf_config_params.h | 4 +- .../gauss_3x3_RGBA/xf_config_params.h | 4 +- .../gauss_3x3_RO/xf_config_params.h | 4 +- .../gauss_5x5_NO/xf_config_params.h | 4 +- .../gauss_5x5_NO_RGBA/xf_config_params.h | 4 +- .../gauss_5x5_RO/xf_config_params.h | 4 +- .../gauss_7x7_NO/xf_config_params.h | 4 +- .../gauss_7x7_NO_RGBA/xf_config_params.h | 4 +- .../gauss_7x7_RO/xf_config_params.h | 4 +- .../gtm_NO_16U/xf_config_params.h | 4 +- .../gtm_RO_16U/xf_config_params.h | 4 +- .../harris/Harris_331_No/xf_config_params.h | 4 +- .../Harris_331_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_331_Ro/xf_config_params.h | 4 +- .../Harris_331_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_332_No/xf_config_params.h | 4 +- .../Harris_332_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_332_Ro/xf_config_params.h | 4 +- .../Harris_332_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_351_No/xf_config_params.h | 4 +- .../Harris_351_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_351_Ro/xf_config_params.h | 4 +- .../Harris_351_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_352_No/xf_config_params.h | 4 +- .../Harris_352_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_352_Ro/xf_config_params.h | 4 +- .../Harris_352_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_371_No/xf_config_params.h | 4 +- .../Harris_371_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_371_Ro/xf_config_params.h | 4 +- .../Harris_371_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_372_No/xf_config_params.h | 4 +- .../Harris_372_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_372_Ro/xf_config_params.h | 4 +- .../Harris_372_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_531_No/xf_config_params.h | 4 +- .../Harris_531_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_531_Ro/xf_config_params.h | 4 +- .../Harris_531_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_532_No/xf_config_params.h | 4 +- .../Harris_532_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_532_Ro/xf_config_params.h | 4 +- .../Harris_532_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_551_No/xf_config_params.h | 4 +- .../Harris_551_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_551_Ro/xf_config_params.h | 4 +- .../Harris_551_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_552_No/xf_config_params.h | 4 +- .../Harris_552_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_552_Ro/xf_config_params.h | 4 +- .../Harris_552_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_571_No/xf_config_params.h | 4 +- .../Harris_571_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_571_Ro/xf_config_params.h | 4 +- .../Harris_571_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_572_No/xf_config_params.h | 4 +- .../Harris_572_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_572_Ro/xf_config_params.h | 4 +- .../Harris_572_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_731_No/xf_config_params.h | 4 +- .../Harris_731_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_731_Ro/xf_config_params.h | 4 +- .../Harris_731_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_732_No/xf_config_params.h | 4 +- .../Harris_732_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_732_Ro/xf_config_params.h | 4 +- .../Harris_732_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_751_No/xf_config_params.h | 4 +- .../Harris_751_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_751_Ro/xf_config_params.h | 4 +- .../Harris_751_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_752_No/xf_config_params.h | 4 +- .../Harris_752_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_752_Ro/xf_config_params.h | 4 +- .../Harris_752_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_771_No/xf_config_params.h | 4 +- .../Harris_771_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_771_Ro/xf_config_params.h | 4 +- .../Harris_771_Ro_URAM/xf_config_params.h | 4 +- .../harris/Harris_772_No/xf_config_params.h | 4 +- .../Harris_772_No_URAM/xf_config_params.h | 4 +- .../harris/Harris_772_Ro/xf_config_params.h | 4 +- .../Harris_772_Ro_URAM/xf_config_params.h | 4 +- .../hist_equalization_no/xf_config_params.h | 6 +- .../hist_equalization_ro/xf_config_params.h | 6 +- .../histogram/histogram_no/xf_config_params.h | 2 +- .../histogram_no_RGBA/xf_config_params.h | 2 +- .../histogram/histogram_ro/xf_config_params.h | 2 +- .../houghlines/Hough_1_1/xf_config_params.h | 2 +- .../inrange/inrange_NO/xf_config_params.h | 4 +- .../inrange/inrange_RGB/xf_config_params.h | 4 +- .../inrange/inrange_RO/xf_config_params.h | 4 +- .../Integral_NO/xf_config_params.h | 4 +- .../ispstats_bayer/xf_config_params.h | 2 +- .../KF_128state/xf_config_params.h | 28 +- .../KF_16state/xf_config_params.h | 28 +- .../kalmanfilter/KF_5state/xf_config_params.h | 28 +- .../KF_64state_uram/xf_config_params.h | 28 +- .../lsc_NO_16U/xf_config_params.h | 4 +- .../lsc_NO_8U/xf_config_params.h | 4 +- .../lsc_RO_16U/xf_config_params.h | 4 +- .../lsc_RO_8U/xf_config_params.h | 4 +- .../densepyrof_300_11_50/xf_config_params.h | 12 +- .../lknpyroflow_NPPC1/xf_config_params.h | 8 +- .../lknpyroflow_NPPC1_URAM/xf_config_params.h | 8 +- .../lknpyroflow_NPPC2/xf_config_params.h | 8 +- .../lknpyroflow_NPPC2_URAM/xf_config_params.h | 8 +- vision/L1/tests/lut/lut_no/xf_config_params.h | 4 +- .../tests/lut/lut_rgba_no/xf_config_params.h | 4 +- vision/L1/tests/lut/lut_ro/xf_config_params.h | 4 +- .../Magnitude_NO_L1/xf_config_params.h | 6 +- .../Magnitude_NO_L2/xf_config_params.h | 6 +- .../Magnitude_RO_L1/xf_config_params.h | 6 +- .../Magnitude_RO_L2/xf_config_params.h | 6 +- .../meanstddev/mean_std_NO/xf_config_params.h | 2 +- .../mean_std_RGBA_NO/xf_config_params.h | 2 +- .../meanstddev/mean_std_RO/xf_config_params.h | 2 +- .../medianblur_3x3_NO/xf_config_params.h | 4 +- .../medianblur_3x3_RGB_NO/xf_config_params.h | 4 +- .../medianblur_3x3_RGB_RO/xf_config_params.h | 4 +- .../medianblur_3x3_RO/xf_config_params.h | 4 +- .../medianblur_5x5_NO/xf_config_params.h | 4 +- .../medianblur_5x5_RGB_NO/xf_config_params.h | 4 +- .../medianblur_5x5_RGB_RO/xf_config_params.h | 4 +- .../medianblur_5x5_RO/xf_config_params.h | 4 +- .../medianblur_7x7_NO/xf_config_params.h | 4 +- .../medianblur_7x7_RGB_NO/xf_config_params.h | 4 +- .../medianblur_7x7_RGB_RO/xf_config_params.h | 4 +- .../medianblur_7x7_RO/xf_config_params.h | 4 +- .../min_max_16s_no/xf_config_params.h | 2 +- .../min_max_16s_ro/xf_config_params.h | 2 +- .../min_max_16u_no/xf_config_params.h | 2 +- .../min_max_16u_ro/xf_config_params.h | 2 +- .../min_max_32s_no/xf_config_params.h | 2 +- .../min_max_32s_ro/xf_config_params.h | 2 +- .../min_max_8u_no/xf_config_params.h | 2 +- .../min_max_8u_ro/xf_config_params.h | 2 +- .../modefilter_NO_3x3/xf_config_params.h | 4 +- .../modefilter_NO_3x3_RGB/xf_config_params.h | 4 +- .../modefilter_NO_5x5/xf_config_params.h | 4 +- .../modefilter_NO_5x5_RGB/xf_config_params.h | 4 +- .../modefilter_NO_7x7/xf_config_params.h | 4 +- .../modefilter_NO_7x7_RGB/xf_config_params.h | 4 +- .../modefilter_RO_3x3/xf_config_params.h | 4 +- .../modefilter_RO_3x3_RGB/xf_config_params.h | 4 +- .../modefilter_RO_5x5/xf_config_params.h | 4 +- .../modefilter_RO_5x5_RGB/xf_config_params.h | 4 +- .../modefilter_RO_7x7/xf_config_params.h | 4 +- .../modefilter_RO_7x7_RGB/xf_config_params.h | 4 +- .../otsuthreshold/otsu_NO/xf_config_params.h | 2 +- .../otsuthreshold/otsu_RO/xf_config_params.h | 2 +- .../paintmask/Paintmask_NO/xf_config_params.h | 6 +- .../paintmask/Paintmask_RO/xf_config_params.h | 6 +- .../phase/PHASE_NO_DEG/xf_config_params.h | 6 +- .../phase/PHASE_NO_RAD/xf_config_params.h | 6 +- .../phase/PHASE_RO_DEG/xf_config_params.h | 6 +- .../phase/PHASE_RO_RAD/xf_config_params.h | 6 +- .../pyrdown/pyrdown_NO/xf_config_params.h | 4 +- .../pyrdown_NO_RGBA/xf_config_params.h | 4 +- .../tests/pyrup/pyrup_NO/xf_config_params.h | 4 +- .../pyrup/pyrup_NO_RGBA/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../reduce_DIM_0_AVG/xf_config_params.h | 4 +- .../reduce_DIM_0_MAX/xf_config_params.h | 4 +- .../reduce_DIM_0_MIN/xf_config_params.h | 4 +- .../reduce_DIM_0_SUM/xf_config_params.h | 4 +- .../reduce_DIM_1_AVG/xf_config_params.h | 4 +- .../reduce_DIM_1_MAX/xf_config_params.h | 4 +- .../reduce_DIM_1_MIN/xf_config_params.h | 4 +- .../reduce_DIM_1_SUM/xf_config_params.h | 4 +- .../examples/3dlut/build/xf_config_params.h | 4 +- .../accumulate/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../addweighted/build/xf_config_params.h | 4 +- .../L2/examples/aec/build/xf_config_params.h | 4 +- .../examples/arithm/build/xf_config_params.h | 4 +- .../autowhitebalance/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../bilateralfilter/build/xf_config_params.h | 4 +- .../boxfilter/build/xf_config_params.h | 4 +- .../examples/clahe/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../convertbitdepth/build/xf_config_params.h | 4 +- .../convertscaleabs/build/xf_config_params.h | 4 +- .../custom_bgr2y8/build/xf_config_params.h | 4 +- .../customconv/build/xf_config_params.h | 4 +- .../cvtcolor/build/xf_config_params.h | 10 +- .../demosaicing/build/xf_config_params.h | 4 +- .../dilation/build/xf_config_params.h | 4 +- .../examples/erosion/build/xf_config_params.h | 4 +- .../L2/examples/fast/build/xf_config_params.h | 4 +- .../gaincontrol/build/xf_config_params.h | 4 +- .../gammacorrection/build/xf_config_params.h | 4 +- .../gaussianfilter/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../examples/harris/build/xf_config_params.h | 4 +- .../histequalize/build/xf_config_params.h | 6 +- .../histogram/build/xf_config_params.h | 2 +- .../L2/examples/hog/build/xf_config_params.h | 4 +- .../houghlines/build/xf_config_params.h | 2 +- .../examples/inrange/build/xf_config_params.h | 4 +- .../integralimg/build/xf_config_params.h | 4 +- .../ispstats/build/xf_config_params.h | 2 +- .../kalmanfilter/build/xf_config_params.h | 28 +- .../laplacian/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../lkdensepyrof/build/xf_config_params.h | 12 +- .../lknpyroflow/build/xf_config_params.h | 8 +- .../L2/examples/lut/build/xf_config_params.h | 4 +- .../magnitude/build/xf_config_params.h | 4 +- .../meanstddev/build/xf_config_params.h | 2 +- .../medianblur/build/xf_config_params.h | 4 +- .../minmaxloc/build/xf_config_params.h | 2 +- .../modefilter/build/xf_config_params.h | 4 +- .../otsuthreshold/build/xf_config_params.h | 2 +- .../paintmask/build/xf_config_params.h | 6 +- .../examples/phase/build/xf_config_params.h | 6 +- .../examples/pyrdown/build/xf_config_params.h | 4 +- .../examples/pyrup/build/xf_config_params.h | 4 +- .../build/xf_config_params.h | 4 +- .../examples/reduce/build/xf_config_params.h | 4 +- .../examples/remap/build/xf_config_params.h | 8 +- .../scharrfilter/build/xf_config_params.h | 6 +- .../L2/examples/sgbm/build/xf_config_params.h | 6 +- .../sobelfilter/build/xf_config_params.h | 6 +- .../stereolbm/build/xf_config_params.h | 6 +- .../L2/examples/sum/build/xf_config_params.h | 2 +- .../threshold/build/xf_config_params.h | 4 +- .../tonemapping/build/xf_config_params.h | 4 +- .../warptransform/build/xf_config_params.h | 4 +- .../tests/3dlut/3dlut_uram/xf_config_params.h | 4 +- .../accumulate_NO/xf_config_params.h | 4 +- .../accumulate_NO_RGBA/xf_config_params.h | 4 +- .../accumulate_RO/xf_config_params.h | 4 +- .../accumulate_squared_NO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../accumulate_squared_RO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../accumulate_weighted_NO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../accumulate_weighted_RO/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../addweighted_no/xf_config_params.h | 4 +- .../addweighted_ro/xf_config_params.h | 4 +- .../arithm/absdiff_no/xf_config_params.h | 4 +- .../arithm/absdiff_ro/xf_config_params.h | 4 +- .../tests/arithm/addS_no/xf_config_params.h | 4 +- .../tests/arithm/addS_ro/xf_config_params.h | 4 +- .../L2/tests/arithm/add_no/xf_config_params.h | 4 +- .../arithm/add_no_16S/xf_config_params.h | 4 +- .../L2/tests/arithm/add_ro/xf_config_params.h | 4 +- .../arithm/add_ro_16S/xf_config_params.h | 4 +- .../arithm/bitwise_and_no/xf_config_params.h | 4 +- .../arithm/bitwise_and_ro/xf_config_params.h | 4 +- .../arithm/bitwise_not_no/xf_config_params.h | 4 +- .../arithm/bitwise_not_ro/xf_config_params.h | 4 +- .../arithm/bitwise_or_no/xf_config_params.h | 4 +- .../arithm/bitwise_or_ro/xf_config_params.h | 4 +- .../arithm/bitwise_xor_no/xf_config_params.h | 4 +- .../arithm/bitwise_xor_ro/xf_config_params.h | 4 +- .../arithm/compareS_no/xf_config_params.h | 4 +- .../arithm/compareS_ro/xf_config_params.h | 4 +- .../arithm/compare_no/xf_config_params.h | 4 +- .../arithm/compare_ro/xf_config_params.h | 4 +- .../tests/arithm/maxS_no/xf_config_params.h | 4 +- .../tests/arithm/maxS_ro/xf_config_params.h | 4 +- .../L2/tests/arithm/max_no/xf_config_params.h | 4 +- .../L2/tests/arithm/max_ro/xf_config_params.h | 4 +- .../tests/arithm/minS_no/xf_config_params.h | 4 +- .../tests/arithm/minS_ro/xf_config_params.h | 4 +- .../L2/tests/arithm/min_no/xf_config_params.h | 4 +- .../L2/tests/arithm/min_ro/xf_config_params.h | 4 +- .../arithm/multiply_no/xf_config_params.h | 4 +- .../arithm/multiply_no_16S/xf_config_params.h | 4 +- .../arithm/multiply_ro/xf_config_params.h | 4 +- .../arithm/multiply_ro_16S/xf_config_params.h | 4 +- .../tests/arithm/setS_no/xf_config_params.h | 4 +- .../tests/arithm/setS_ro/xf_config_params.h | 4 +- .../tests/arithm/subRSS_no/xf_config_params.h | 4 +- .../tests/arithm/subRSS_ro/xf_config_params.h | 4 +- .../tests/arithm/subS_no/xf_config_params.h | 4 +- .../tests/arithm/subS_ro/xf_config_params.h | 4 +- .../L2/tests/arithm/sub_no/xf_config_params.h | 4 +- .../arithm/sub_no_16S/xf_config_params.h | 4 +- .../L2/tests/arithm/sub_ro/xf_config_params.h | 4 +- .../arithm/sub_ro_16S/xf_config_params.h | 4 +- .../tests/arithm/zero_no/xf_config_params.h | 4 +- .../tests/arithm/zero_ro/xf_config_params.h | 4 +- .../bilateral_RGBA_NO_3X3/xf_config_params.h | 4 +- .../bilateral_RGBA_NO_5x5/xf_config_params.h | 4 +- .../bilateral_RGBA_NO_7x7/xf_config_params.h | 4 +- .../bilateral_RGBA_RO_3X3/xf_config_params.h | 4 +- .../bilateral_RGBA_RO_5x5/xf_config_params.h | 4 +- .../bilateral_RGBA_RO_7x7/xf_config_params.h | 4 +- .../bilateralfilter_NO_3x3/xf_config_params.h | 4 +- .../bilateralfilter_NO_5x5/xf_config_params.h | 4 +- .../bilateralfilter_NO_7x7/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_NO_3/xf_config_params.h | 4 +- .../BOX_16S_NO_3_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_NO_5/xf_config_params.h | 4 +- .../BOX_16S_NO_5_URAM/xf_config_params.h | 4 +- .../BOX_16S_NO_7_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_3/xf_config_params.h | 4 +- .../BOX_16S_RO_3_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_5/xf_config_params.h | 4 +- .../BOX_16S_RO_5_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16S_RO_7/xf_config_params.h | 4 +- .../BOX_16S_RO_7_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_5/xf_config_params.h | 4 +- .../BOX_16U_NO_5_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_NO_7/xf_config_params.h | 4 +- .../BOX_16U_NO_7_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_3/xf_config_params.h | 4 +- .../BOX_16U_RO_3_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_5/xf_config_params.h | 4 +- .../BOX_16U_RO_5_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_16U_RO_7/xf_config_params.h | 4 +- .../BOX_16U_RO_7_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_3/xf_config_params.h | 4 +- .../BOX_8U_NO_3_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_5/xf_config_params.h | 4 +- .../BOX_8U_NO_5_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_NO_7/xf_config_params.h | 4 +- .../BOX_8U_NO_7_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_3/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_5/xf_config_params.h | 4 +- .../BOX_8U_RO_5_URAM/xf_config_params.h | 4 +- .../boxfilter/BOX_8U_RO_7/xf_config_params.h | 4 +- .../BOX_8U_RO_7_URAM/xf_config_params.h | 4 +- .../canny/Canny_L2_NO_3/xf_config_params.h | 4 +- .../canny/Canny_L2_NO_5/xf_config_params.h | 4 +- .../canny/Canny_L2_RO_3/xf_config_params.h | 4 +- .../canny/Canny_L2_RO_5/xf_config_params.h | 4 +- .../ccm_NO_bt2020_bt709/xf_config_params.h | 4 +- .../ccm_NO_bt709_bt2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_full_to_16_235/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_601/xf_config_params.h | 4 +- .../ccm_NO_rgb_yuv_709/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_2020/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_601/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_709/xf_config_params.h | 4 +- .../ccm_NO_yuv_rgb_709_16U/xf_config_params.h | 4 +- .../ccm_RO_bt2020_bt709/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_bt709_bt2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_full_to_16_235/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_2020/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_601/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_601_16U/xf_config_params.h | 4 +- .../ccm_RO_rgb_yuv_709/xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_2020/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_601/xf_config_params.h | 4 +- .../ccm_RO_yuv_rgb_709/xf_config_params.h | 4 +- .../convt_bit_NO_16sto32s/xf_config_params.h | 4 +- .../convt_bit_NO_16sto8u/xf_config_params.h | 4 +- .../convt_bit_NO_16uto32s/xf_config_params.h | 4 +- .../convt_bit_NO_16uto8u/xf_config_params.h | 4 +- .../convt_bit_NO_32sto16s/xf_config_params.h | 4 +- .../convt_bit_NO_32sto16u/xf_config_params.h | 4 +- .../convt_bit_NO_32sto8u/xf_config_params.h | 4 +- .../convt_bit_NO_8uto16S/xf_config_params.h | 4 +- .../convt_bit_NO_8uto16u/xf_config_params.h | 4 +- .../convt_bit_NO_8uto32S/xf_config_params.h | 4 +- .../convt_bit_RO_16sto8u/xf_config_params.h | 4 +- .../convt_bit_RO_16uto8u/xf_config_params.h | 4 +- .../convt_bit_RO_8uto16S/xf_config_params.h | 4 +- .../convt_bit_RO_8uto16u/xf_config_params.h | 4 +- .../convertScaleAbs_no/xf_config_params.h | 4 +- .../convertScaleAbs_ro/xf_config_params.h | 4 +- .../custom_BGR2Y8_NO/xf_config_params.h | 4 +- .../custom_BGR2Y8_RO/xf_config_params.h | 4 +- .../custconv_NO_3/xf_config_params.h | 4 +- .../custconv_NO_3_16/xf_config_params.h | 4 +- .../custconv_NO_3_RGBA/xf_config_params.h | 4 +- .../custconv_NO_5/xf_config_params.h | 4 +- .../custconv_NO_5_16/xf_config_params.h | 4 +- .../custconv_NO_5_RGBA/xf_config_params.h | 4 +- .../custconv_NO_7/xf_config_params.h | 4 +- .../custconv_NO_7_16/xf_config_params.h | 4 +- .../custconv_RO_3/xf_config_params.h | 4 +- .../custconv_RO_3_16/xf_config_params.h | 4 +- .../custconv_RO_5/xf_config_params.h | 4 +- .../custconv_RO_5_16/xf_config_params.h | 4 +- .../custconv_RO_7/xf_config_params.h | 4 +- .../custconv_RO_7_16/xf_config_params.h | 4 +- .../tests/cvtcolor/bgr2hsv/xf_config_params.h | 10 +- .../cvtcolor/iyuv2rgb/xf_config_params.h | 10 +- .../cvtcolor/iyuv2rgb_ro/xf_config_params.h | 10 +- .../cvtcolor/rgba2iyuv/xf_config_params.h | 10 +- .../demosaicing_1ppc_16bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../demosaicing_1ppc_8bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../demosaicing_2ppc_16bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../demosaicing_2ppc_8bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../demosaicing_4ppc_8bit/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_NO_3_CROSS/xf_config_params.h | 4 +- .../dilation_NO_3_ELLIPSE/xf_config_params.h | 4 +- .../dilation_NO_3_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_NO_5_CROSS/xf_config_params.h | 4 +- .../dilation_NO_5_ELLIPSE/xf_config_params.h | 4 +- .../dilation_NO_5_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_NO_7_CROSS/xf_config_params.h | 4 +- .../dilation_NO_7_ELLIPSE/xf_config_params.h | 4 +- .../dilation_NO_7_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_RGBA_NO/xf_config_params.h | 4 +- .../dilation_RGBA_RO/xf_config_params.h | 4 +- .../dilation_RO_3_CROSS/xf_config_params.h | 4 +- .../dilation_RO_3_ELLIPSE/xf_config_params.h | 4 +- .../dilation_RO_3_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_RO_5_CROSS/xf_config_params.h | 4 +- .../dilation_RO_5_ELLIPSE/xf_config_params.h | 4 +- .../dilation_RO_5_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../dilation_RO_7_CROSS/xf_config_params.h | 4 +- .../dilation_RO_7_ELLIPSE/xf_config_params.h | 4 +- .../dilation_RO_7_RECT/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../erosion_NO_3_CROSS/xf_config_params.h | 4 +- .../erosion_NO_3_ELLIPSE/xf_config_params.h | 4 +- .../erosion_NO_3_RECT/xf_config_params.h | 4 +- .../erosion_NO_3_RECT_ITER/xf_config_params.h | 4 +- .../erosion_NO_5_CROSS/xf_config_params.h | 4 +- .../erosion_NO_5_ELLIPSE/xf_config_params.h | 4 +- .../erosion_NO_5_RECT/xf_config_params.h | 4 +- .../erosion_NO_5_RECT_ITER/xf_config_params.h | 4 +- .../erosion_NO_7_CROSS/xf_config_params.h | 4 +- .../erosion_NO_7_ELLIPSE/xf_config_params.h | 4 +- .../erosion_NO_7_RECT/xf_config_params.h | 4 +- .../erosion_NO_7_RECT_ITER/xf_config_params.h | 4 +- .../erosion_RGBA_NO/xf_config_params.h | 4 +- .../erosion_RO_3_CROSS/xf_config_params.h | 4 +- .../erosion_RO_3_ELLIPSE/xf_config_params.h | 4 +- .../erosion_RO_3_RECT/xf_config_params.h | 4 +- .../erosion_RO_3_RECT_ITER/xf_config_params.h | 4 +- .../erosion_RO_5_CROSS/xf_config_params.h | 4 +- .../erosion_RO_5_ELLIPSE/xf_config_params.h | 4 +- .../erosion_RO_5_RECT/xf_config_params.h | 4 +- .../erosion_RO_5_RECT_ITER/xf_config_params.h | 4 +- .../erosion_RO_7_CROSS/xf_config_params.h | 4 +- .../erosion_RO_7_ELLIPSE/xf_config_params.h | 4 +- .../erosion_RO_7_RECT/xf_config_params.h | 4 +- .../erosion_RO_7_RECT_ITER/xf_config_params.h | 4 +- .../tests/fast/FAST_NO_NMS/xf_config_params.h | 4 +- .../fast/FAST_NO_NON_NMS/xf_config_params.h | 4 +- .../tests/fast/FAST_RO_NMS/xf_config_params.h | 4 +- .../fast/FAST_RO_NON_NMS/xf_config_params.h | 4 +- .../gauss_3x3_NO/xf_config_params.h | 4 +- .../gauss_3x3_RGBA/xf_config_params.h | 4 +- .../gauss_3x3_RO/xf_config_params.h | 4 +- .../gauss_5x5_NO/xf_config_params.h | 4 +- .../gauss_5x5_NO_RGBA/xf_config_params.h | 4 +- .../gauss_5x5_RO/xf_config_params.h | 4 +- .../gauss_7x7_NO/xf_config_params.h | 4 +- .../gauss_7x7_NO_RGBA/xf_config_params.h | 4 +- .../gauss_7x7_RO/xf_config_params.h | 4 +- .../gtm_NO_16U/xf_config_params.h | 4 +- .../gtm_RO_16U/xf_config_params.h | 4 +- .../harris/Harris_331_NO/xf_config_params.h | 4 +- .../Harris_331_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_331_RO/xf_config_params.h | 4 +- .../Harris_331_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_351_NO/xf_config_params.h | 4 +- .../Harris_351_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_351_RO/xf_config_params.h | 4 +- .../Harris_351_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_371_NO/xf_config_params.h | 4 +- .../Harris_371_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_371_RO/xf_config_params.h | 4 +- .../Harris_371_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_531_NO/xf_config_params.h | 4 +- .../Harris_531_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_531_RO/xf_config_params.h | 4 +- .../Harris_531_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_551_NO/xf_config_params.h | 4 +- .../Harris_551_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_551_RO/xf_config_params.h | 4 +- .../Harris_551_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_571_NO/xf_config_params.h | 4 +- .../Harris_571_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_571_RO/xf_config_params.h | 4 +- .../Harris_571_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_731_NO/xf_config_params.h | 4 +- .../Harris_731_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_731_RO/xf_config_params.h | 4 +- .../Harris_731_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_751_NO/xf_config_params.h | 4 +- .../Harris_751_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_751_RO/xf_config_params.h | 4 +- .../Harris_751_RO_URAM/xf_config_params.h | 4 +- .../harris/Harris_771_NO/xf_config_params.h | 4 +- .../Harris_771_NO_URAM/xf_config_params.h | 4 +- .../harris/Harris_771_RO/xf_config_params.h | 4 +- .../Harris_771_RO_URAM/xf_config_params.h | 4 +- .../hist_equalization_no/xf_config_params.h | 6 +- .../hist_equalization_ro/xf_config_params.h | 6 +- .../histogram/histogram_no/xf_config_params.h | 2 +- .../histogram_no_RGBA/xf_config_params.h | 2 +- .../histogram/histogram_ro/xf_config_params.h | 2 +- .../hog_nrb_gray_128_64/xf_config_params.h | 4 +- .../hog/hog_nrb_rgb_128_64/xf_config_params.h | 4 +- .../hog/hog_rb_gray_128_64/xf_config_params.h | 4 +- .../hog/hog_rb_rgb_128_64/xf_config_params.h | 4 +- .../houghlines/Hough_1_1/xf_config_params.h | 2 +- .../inrange/inrange_NO/xf_config_params.h | 4 +- .../inrange/inrange_NO_RGB/xf_config_params.h | 4 +- .../inrange/inrange_RO/xf_config_params.h | 4 +- .../inrange/inrange_RO_RGB/xf_config_params.h | 4 +- .../Integral_NO/xf_config_params.h | 4 +- .../ispstats_bayer/xf_config_params.h | 2 +- .../KF_128state/xf_config_params.h | 28 +- .../KF_16state/xf_config_params.h | 28 +- .../kalmanfilter/KF_5state/xf_config_params.h | 28 +- .../KF_64state_uram/xf_config_params.h | 28 +- .../laplacian_NO_3/xf_config_params.h | 4 +- .../laplacian_NO_3_16/xf_config_params.h | 4 +- .../laplacian_NO_3_RGBA/xf_config_params.h | 4 +- .../laplacian_NO_5/xf_config_params.h | 4 +- .../laplacian_NO_5_16/xf_config_params.h | 4 +- .../laplacian_NO_5_RGBA/xf_config_params.h | 4 +- .../laplacian_NO_7/xf_config_params.h | 4 +- .../laplacian_NO_7_16/xf_config_params.h | 4 +- .../laplacian_RO_3/xf_config_params.h | 4 +- .../laplacian_RO_3_16/xf_config_params.h | 4 +- .../laplacian_RO_5/xf_config_params.h | 4 +- .../laplacian_RO_5_16/xf_config_params.h | 4 +- .../laplacian_RO_7/xf_config_params.h | 4 +- .../laplacian_RO_7_16/xf_config_params.h | 4 +- .../lsc_NO_16U/xf_config_params.h | 4 +- .../lsc_NO_8U/xf_config_params.h | 4 +- .../lsc_RO_16U/xf_config_params.h | 4 +- .../lsc_RO_8U/xf_config_params.h | 4 +- .../densepyrof_300_11_50/xf_config_params.h | 12 +- .../lknpyroflow_NPPC1/xf_config_params.h | 8 +- .../lknpyroflow_NPPC1_URAM/xf_config_params.h | 8 +- .../lknpyroflow_NPPC2/xf_config_params.h | 8 +- .../lknpyroflow_NPPC2_URAM/xf_config_params.h | 8 +- vision/L2/tests/lut/lut_no/xf_config_params.h | 4 +- .../tests/lut/lut_rgba_no/xf_config_params.h | 4 +- vision/L2/tests/lut/lut_ro/xf_config_params.h | 4 +- .../Magnitude_NO_L1/xf_config_params.h | 4 +- .../Magnitude_NO_L2/xf_config_params.h | 4 +- .../Magnitude_RO_L1/xf_config_params.h | 4 +- .../Magnitude_RO_L2/xf_config_params.h | 4 +- .../meanstddev/mean_std_NO/xf_config_params.h | 2 +- .../mean_std_RGBA_NO/xf_config_params.h | 2 +- .../meanstddev/mean_std_RO/xf_config_params.h | 2 +- .../medianblur_3x3_NO/xf_config_params.h | 4 +- .../medianblur_3x3_RGB_NO/xf_config_params.h | 4 +- .../medianblur_3x3_RGB_RO/xf_config_params.h | 4 +- .../medianblur_3x3_RO/xf_config_params.h | 4 +- .../medianblur_5x5_NO/xf_config_params.h | 4 +- .../medianblur_5x5_RGB_NO/xf_config_params.h | 4 +- .../medianblur_5x5_RGB_RO/xf_config_params.h | 4 +- .../medianblur_5x5_RO/xf_config_params.h | 4 +- .../medianblur_7x7_NO/xf_config_params.h | 4 +- .../medianblur_7x7_RGB_NO/xf_config_params.h | 4 +- .../medianblur_7x7_RGB_RO/xf_config_params.h | 4 +- .../medianblur_7x7_RO/xf_config_params.h | 4 +- .../min_max_16s_no/xf_config_params.h | 2 +- .../min_max_16s_ro/xf_config_params.h | 2 +- .../min_max_16u_no/xf_config_params.h | 2 +- .../min_max_16u_ro/xf_config_params.h | 2 +- .../min_max_32s_no/xf_config_params.h | 2 +- .../min_max_32s_ro/xf_config_params.h | 2 +- .../min_max_8u_no/xf_config_params.h | 2 +- .../min_max_8u_ro/xf_config_params.h | 2 +- .../modefilter_NO_3x3/xf_config_params.h | 6 +- .../modefilter_NO_3x3_RGB/xf_config_params.h | 6 +- .../modefilter_NO_5x5/xf_config_params.h | 6 +- .../modefilter_NO_5x5_RGB/xf_config_params.h | 6 +- .../modefilter_NO_7x7/xf_config_params.h | 6 +- .../modefilter_NO_7x7_RGB/xf_config_params.h | 6 +- .../modefilter_RO_3x3/xf_config_params.h | 6 +- .../modefilter_RO_3x3_RGB/xf_config_params.h | 6 +- .../modefilter_RO_5x5/xf_config_params.h | 6 +- .../modefilter_RO_5x5_RGB/xf_config_params.h | 6 +- .../modefilter_RO_7x7/xf_config_params.h | 6 +- .../modefilter_RO_7x7_RGB/xf_config_params.h | 6 +- .../otsuthreshold/otsu_NO/xf_config_params.h | 2 +- .../otsuthreshold/otsu_RO/xf_config_params.h | 2 +- .../paintmask/Paintmask_NO/xf_config_params.h | 6 +- .../paintmask/Paintmask_RO/xf_config_params.h | 6 +- .../phase/PHASE_NO_DEG/xf_config_params.h | 6 +- .../phase/PHASE_NO_RAD/xf_config_params.h | 6 +- .../phase/PHASE_RO_DEG/xf_config_params.h | 6 +- .../phase/PHASE_RO_RAD/xf_config_params.h | 6 +- .../pyrdown/pyrdown_NO/xf_config_params.h | 4 +- .../pyrdown_NO_RGBA/xf_config_params.h | 4 +- .../pyrdown_NO_RGBA_URAM/xf_config_params.h | 4 +- .../pyrdown_NO_URAM/xf_config_params.h | 4 +- .../tests/pyrup/pyrup_NO/xf_config_params.h | 4 +- .../pyrup/pyrup_NO_RGBA/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../reduce_DIM_0_AVG/xf_config_params.h | 4 +- .../reduce_DIM_0_MAX/xf_config_params.h | 4 +- .../reduce_DIM_0_MIN/xf_config_params.h | 4 +- .../reduce_DIM_0_SUM/xf_config_params.h | 4 +- .../reduce_DIM_1_AVG/xf_config_params.h | 4 +- .../reduce_DIM_1_MAX/xf_config_params.h | 4 +- .../reduce_DIM_1_MIN/xf_config_params.h | 4 +- .../reduce_DIM_1_SUM/xf_config_params.h | 4 +- .../tests/remap/Remap_LI/xf_config_params.h | 8 +- .../remap/Remap_LI_RGB/xf_config_params.h | 8 +- .../Remap_LI_RGB_URAM/xf_config_params.h | 8 +- .../remap/Remap_LI_URAM/xf_config_params.h | 8 +- .../tests/remap/Remap_NN/xf_config_params.h | 8 +- .../remap/Remap_NN_RGB/xf_config_params.h | 8 +- .../Remap_NN_RGB_URAM/xf_config_params.h | 8 +- .../remap/Remap_NN_URAM/xf_config_params.h | 8 +- .../scharrfilter/scharr_NO/xf_config_params.h | 6 +- .../scharr_NO_RGBA/xf_config_params.h | 6 +- .../scharrfilter/scharr_RO/xf_config_params.h | 6 +- .../scharr_RO_RGBA/xf_config_params.h | 6 +- .../tests/sgbm/v64_16_300/xf_config_params.h | 6 +- .../sobelfilter/SOBEL_3_NO/xf_config_params.h | 6 +- .../SOBEL_3_NO_RGBA/xf_config_params.h | 6 +- .../SOBEL_3_NO_RGBA_URAM/xf_config_params.h | 6 +- .../SOBEL_3_NO_URAM/xf_config_params.h | 6 +- .../sobelfilter/SOBEL_3_RO/xf_config_params.h | 6 +- .../SOBEL_3_RO_RGBA/xf_config_params.h | 6 +- .../SOBEL_3_RO_RGBA_URAM/xf_config_params.h | 6 +- .../SOBEL_3_RO_URAM/xf_config_params.h | 6 +- .../sobelfilter/SOBEL_5_NO/xf_config_params.h | 6 +- .../SOBEL_5_NO_RGBA/xf_config_params.h | 6 +- .../SOBEL_5_NO_RGBA_URAM/xf_config_params.h | 6 +- .../SOBEL_5_NO_URAM/xf_config_params.h | 6 +- .../sobelfilter/SOBEL_5_RO/xf_config_params.h | 6 +- .../SOBEL_5_RO_RGBA/xf_config_params.h | 6 +- .../SOBEL_5_RO_RGBA_URAM/xf_config_params.h | 6 +- .../SOBEL_5_RO_URAM/xf_config_params.h | 6 +- .../sobelfilter/SOBEL_7_NO/xf_config_params.h | 6 +- .../SOBEL_7_NO_RGBA/xf_config_params.h | 6 +- .../SOBEL_7_NO_RGBA_URAM/xf_config_params.h | 6 +- .../SOBEL_7_NO_URAM/xf_config_params.h | 6 +- .../stereoBM_11_32_32/xf_config_params.h | 6 +- .../stereoBM_11_32_32_URAM/xf_config_params.h | 6 +- .../stereoBM_15_128_32/xf_config_params.h | 6 +- .../xf_config_params.h | 6 +- .../stereoBM_21_64_16/xf_config_params.h | 6 +- .../stereoBM_21_64_16_URAM/xf_config_params.h | 6 +- .../stereoBM_5_16_2/xf_config_params.h | 6 +- .../stereoBM_5_16_2_URAM/xf_config_params.h | 6 +- .../stereoBM_9_32_4/xf_config_params.h | 6 +- .../stereoBM_9_32_4_URAM/xf_config_params.h | 6 +- vision/L2/tests/sum/sum_NO/xf_config_params.h | 2 +- vision/L2/tests/sum/sum_RO/xf_config_params.h | 2 +- .../Threshold_NO_Binary/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../Threshold_NO_tozero/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../Threshold_NO_trunc/xf_config_params.h | 4 +- .../Threshold_RO_Binary/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../Threshold_RO_tozero/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../Threshold_RO_trunc/xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../xf_config_params.h | 4 +- .../benchmarks/colordetect/xf_config_params.h | 14 +- .../{all_in_one => all_in_one_adas}/Makefile | 37 +- .../build/xf_config_params.h | 38 +- .../description.json | 12 +- .../{all_in_one => all_in_one_adas}/utils.mk | 0 .../xf_isp_accel.cpp | 140 ++-- .../xf_isp_tb.cpp | 9 +- .../xf_isp_types.h | 0 .../{all_in_one => all_in_one_adas}/xrt.ini | 0 .../colordetect/build/xf_config_params.h | 12 +- .../cornertracker/build/xf_config_params.h | 20 +- vision/L3/examples/defect_detection/Makefile | 8 +- .../defect_detection/description.json | 0 vision/L3/examples/defect_detection/utils.mk | 0 .../defect_detection/xf_cca_custom_accel.cpp | 6 +- .../xf_gaussian_otsu_accel.cpp | 1 + .../defect_detection/xf_preprocess_accel.cpp | 16 +- .../defect_detection/xf_threshold_config.h | 8 +- .../defect_detection/xf_threshold_tb.cpp | 33 +- .../build/xf_config_params.h | 8 +- vision/L3/examples/isp_multistream/Makefile | 5 +- .../isp_multistream/build/xf_config_params.h | 5 +- .../examples/isp_multistream/xf_isp_accel.cpp | 338 +++++---- .../L3/examples/isp_multistream/xf_isp_tb.cpp | 47 +- .../examples/isp_multistream/xf_isp_types.h | 6 +- .../isppipeline_hdr/build/xf_config_params.h | 26 +- .../isppipeline_mono/build/xf_config_params.h | 20 +- .../build/xf_config_params.h | 22 +- .../letterbox/build/xf_config_params.h | 6 +- .../stereopipeline/build/xf_config_params.h | 18 +- .../colordetect_NO/xf_config_params.h | 12 +- .../cornertrack/xf_config_params.h | 20 +- .../DOG_NO_3/xf_config_params.h | 8 +- .../DOG_NO_5/xf_config_params.h | 8 +- .../DOG_NO_7/xf_config_params.h | 8 +- .../DOG_RO_3/xf_config_params.h | 8 +- .../DOG_RO_5/xf_config_params.h | 8 +- .../DOG_RO_7/xf_config_params.h | 8 +- .../MONO_ISP_NPC1_16/xf_config_params.h | 20 +- .../MONO_ISP_NPC2_8/xf_config_params.h | 20 +- .../letterbox/LETTERBOX_RO/xf_config_params.h | 6 +- .../stereo_config_1/xf_config_params.h | 18 +- vision/README.md | 4 + vision/docs/src/api-reference.rst | 2 +- vision/docs/src/design-examples.rst | 677 +++++++++++------- .../images/ISP_All_in_one_adas_Pipeline.PNG | Bin 0 -> 50183 bytes vision/docs/src/images/ISP_multistream.PNG | Bin 0 -> 33283 bytes vision/docs/src/include/isp_aio_adas.rst | 465 ++++++++++++ vision/docs/src/include/isp_multistream.rst | 444 ++++++++++++ vision/docs/src/releasenotesxfopencv.rst | 4 + 1058 files changed, 5053 insertions(+), 3057 deletions(-) rename vision/L3/examples/{all_in_one => all_in_one_adas}/Makefile (89%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/build/xf_config_params.h (75%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/description.json (94%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/utils.mk (100%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/xf_isp_accel.cpp (87%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/xf_isp_tb.cpp (99%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/xf_isp_types.h (100%) rename vision/L3/examples/{all_in_one => all_in_one_adas}/xrt.ini (100%) mode change 100755 => 100644 vision/L3/examples/defect_detection/Makefile mode change 100755 => 100644 vision/L3/examples/defect_detection/description.json mode change 100755 => 100644 vision/L3/examples/defect_detection/utils.mk create mode 100755 vision/docs/src/images/ISP_All_in_one_adas_Pipeline.PNG create mode 100755 vision/docs/src/images/ISP_multistream.PNG create mode 100755 vision/docs/src/include/isp_aio_adas.rst create mode 100755 vision/docs/src/include/isp_multistream.rst diff --git a/vision/Jenkinsfile b/vision/Jenkinsfile index af93cd5422..7883f82fd6 100644 --- a/vision/Jenkinsfile +++ b/vision/Jenkinsfile @@ -1,4 +1,4 @@ @Library('pipeline-library')_ -VitisLibPipeline (branch: 'next', libname: 'xf_opencv', TARGETS: 'hls_csim:hls_csynth:hls_cosim:vitis_sw_emu:vitis_hw_emu', - devtest: 'RunDeploy.sh', TOOLVERSION: '2022.2_stable_latest') +VitisLibPipeline (branch: 'main', libname: 'xf_opencv', TARGETS: 'hls_csim:hls_csynth:hls_cosim:vitis_sw_emu:vitis_hw_emu', + devtest: 'RunDeploy.sh', TOOLVERSION: '2022.2_released') diff --git a/vision/L1/examples/3dlut/build/xf_config_params.h b/vision/L1/examples/3dlut/build/xf_config_params.h index c03bda1b9c..3f68b14327 100755 --- a/vision/L1/examples/3dlut/build/xf_config_params.h +++ b/vision/L1/examples/3dlut/build/xf_config_params.h @@ -22,6 +22,6 @@ #define XF_USE_URAM 0 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/accumulate/build/xf_config_params.h b/vision/L1/examples/accumulate/build/xf_config_params.h index 36ab7b3b85..5b14be0f42 100644 --- a/vision/L1/examples/accumulate/build/xf_config_params.h +++ b/vision/L1/examples/accumulate/build/xf_config_params.h @@ -22,6 +22,6 @@ #define RGB 0 #define GRAY 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/accumulatesquared/build/xf_config_params.h b/vision/L1/examples/accumulatesquared/build/xf_config_params.h index 8d30550cf3..1ea40b6665 100644 --- a/vision/L1/examples/accumulatesquared/build/xf_config_params.h +++ b/vision/L1/examples/accumulatesquared/build/xf_config_params.h @@ -19,6 +19,6 @@ #define GRAY 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/accumulateweighted/build/xf_config_params.h b/vision/L1/examples/accumulateweighted/build/xf_config_params.h index e370747330..0a78cfbc7d 100644 --- a/vision/L1/examples/accumulateweighted/build/xf_config_params.h +++ b/vision/L1/examples/accumulateweighted/build/xf_config_params.h @@ -19,6 +19,6 @@ #define GRAY 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/addweighted/build/xf_config_params.h b/vision/L1/examples/addweighted/build/xf_config_params.h index e370747330..0a78cfbc7d 100644 --- a/vision/L1/examples/addweighted/build/xf_config_params.h +++ b/vision/L1/examples/addweighted/build/xf_config_params.h @@ -19,6 +19,6 @@ #define GRAY 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/aec/build/xf_config_params.h b/vision/L1/examples/aec/build/xf_config_params.h index 0df8a72ca5..54b85c7b73 100755 --- a/vision/L1/examples/aec/build/xf_config_params.h +++ b/vision/L1/examples/aec/build/xf_config_params.h @@ -19,5 +19,5 @@ #define T_8U 1 -#define XF_CV_DEPTH_IN 1 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/arithm/build/xf_config_params.h b/vision/L1/examples/arithm/build/xf_config_params.h index 4afff1591b..fdf1b6aad3 100644 --- a/vision/L1/examples/arithm/build/xf_config_params.h +++ b/vision/L1/examples/arithm/build/xf_config_params.h @@ -34,7 +34,7 @@ #define CV_FUNCT_NAME absdiff // //#define CV_EXTRA_ARG 0.05 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/autowhitebalance/build/xf_config_params.h b/vision/L1/examples/autowhitebalance/build/xf_config_params.h index fe5d8bd2da..b002981a51 100644 --- a/vision/L1/examples/autowhitebalance/build/xf_config_params.h +++ b/vision/L1/examples/autowhitebalance/build/xf_config_params.h @@ -23,6 +23,6 @@ #define T_12U 0 #define T_10U 0 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/axiconv/build/xf_config_params.h b/vision/L1/examples/axiconv/build/xf_config_params.h index 9c62199e34..c02a0d6aa9 100644 --- a/vision/L1/examples/axiconv/build/xf_config_params.h +++ b/vision/L1/examples/axiconv/build/xf_config_params.h @@ -20,4 +20,4 @@ #define GRAY 1 #define RGB 0 -#define XF_CV_DEPTH_IN_1 1 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 \ No newline at end of file diff --git a/vision/L1/examples/badpixelcorrection/build/xf_config_params.h b/vision/L1/examples/badpixelcorrection/build/xf_config_params.h index d1873f4875..5a7879b938 100644 --- a/vision/L1/examples/badpixelcorrection/build/xf_config_params.h +++ b/vision/L1/examples/badpixelcorrection/build/xf_config_params.h @@ -22,5 +22,5 @@ #define T_8U 1 #define T_16U 0 -#define XF_CV_DEPTH_IN_1 4 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/bilateralfilter/build/xf_config_params.h b/vision/L1/examples/bilateralfilter/build/xf_config_params.h index 6138f051f4..8f27d68183 100644 --- a/vision/L1/examples/bilateralfilter/build/xf_config_params.h +++ b/vision/L1/examples/bilateralfilter/build/xf_config_params.h @@ -26,6 +26,6 @@ #define GRAY 0 #define RGB 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/boxfilter/build/xf_config_params.h b/vision/L1/examples/boxfilter/build/xf_config_params.h index 48df343db0..5f0d9e380c 100644 --- a/vision/L1/examples/boxfilter/build/xf_config_params.h +++ b/vision/L1/examples/boxfilter/build/xf_config_params.h @@ -35,6 +35,6 @@ #define XF_USE_URAM false -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/channelcombine/build/xf_config_params.h b/vision/L1/examples/channelcombine/build/xf_config_params.h index 35bc252124..6208c5bab0 100644 --- a/vision/L1/examples/channelcombine/build/xf_config_params.h +++ b/vision/L1/examples/channelcombine/build/xf_config_params.h @@ -23,9 +23,9 @@ #define NPC XF_NPPC1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_IN_3 1 +#define XF_CV_DEPTH_IN_3 2 #define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 diff --git a/vision/L1/examples/clahe/build/xf_config_params.h b/vision/L1/examples/clahe/build/xf_config_params.h index 8b68ac5176..fcb51cf516 100755 --- a/vision/L1/examples/clahe/build/xf_config_params.h +++ b/vision/L1/examples/clahe/build/xf_config_params.h @@ -14,5 +14,5 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/colorcorrectionmatrix/build/xf_config_params.h b/vision/L1/examples/colorcorrectionmatrix/build/xf_config_params.h index e5236ded8c..2211d06255 100755 --- a/vision/L1/examples/colorcorrectionmatrix/build/xf_config_params.h +++ b/vision/L1/examples/colorcorrectionmatrix/build/xf_config_params.h @@ -22,5 +22,5 @@ #define T_8U 1 #define T_16U 0 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/colordetect/build/xf_config_params.h b/vision/L1/examples/colordetect/build/xf_config_params.h index 20c01ae935..c5674bdc26 100755 --- a/vision/L1/examples/colordetect/build/xf_config_params.h +++ b/vision/L1/examples/colordetect/build/xf_config_params.h @@ -14,10 +14,10 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_RGB2HSV 2 -#define XF_CV_DEPTH_HELP_1 3 -#define XF_CV_DEPTH_HELP_2 4 -#define XF_CV_DEPTH_HELP_3 5 -#define XF_CV_DEPTH_HELP_4 6 -#define XF_CV_DEPTH_OUT_1 7 +#define XF_CV_DEPTH_HELP_1 2 +#define XF_CV_DEPTH_HELP_2 2 +#define XF_CV_DEPTH_HELP_3 2 +#define XF_CV_DEPTH_HELP_4 2 +#define XF_CV_DEPTH_OUT_1 2 diff --git a/vision/L1/examples/convertbitdepth/build/xf_config_params.h b/vision/L1/examples/convertbitdepth/build/xf_config_params.h index 01a4158fa0..27dea662a4 100644 --- a/vision/L1/examples/convertbitdepth/build/xf_config_params.h +++ b/vision/L1/examples/convertbitdepth/build/xf_config_params.h @@ -30,5 +30,5 @@ #define XF_CONVERT16UTO32S 0 // set to convert bit depth from unsigned 16-bit to 32-bit signed #define XF_CONVERT16STO32S 1 // set to convert bit depth from signed 16-bit to 32-bit signed -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/convertscaleabs/build/xf_config_params.h b/vision/L1/examples/convertscaleabs/build/xf_config_params.h index 67dda5564d..d184a7010c 100644 --- a/vision/L1/examples/convertscaleabs/build/xf_config_params.h +++ b/vision/L1/examples/convertscaleabs/build/xf_config_params.h @@ -17,5 +17,5 @@ #define SPC 1 // Single Pixel per Clock operation #define MPC 0 // Multiple Pixels per Clock operation -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/custom_bgr2y8/build/xf_config_params.h b/vision/L1/examples/custom_bgr2y8/build/xf_config_params.h index bb613acd5a..e422eee445 100644 --- a/vision/L1/examples/custom_bgr2y8/build/xf_config_params.h +++ b/vision/L1/examples/custom_bgr2y8/build/xf_config_params.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 /* Set the optimisation type */ #define SPC 1 // Single Pixel per Clock operation diff --git a/vision/L1/examples/customconv/build/xf_config_params.h b/vision/L1/examples/customconv/build/xf_config_params.h index f0ad6187d2..4790341d71 100644 --- a/vision/L1/examples/customconv/build/xf_config_params.h +++ b/vision/L1/examples/customconv/build/xf_config_params.h @@ -30,5 +30,5 @@ #define GRAY 0 #define RGBA 1 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/cvtcolor/build/xf_config_params.h b/vision/L1/examples/cvtcolor/build/xf_config_params.h index 7348b41512..51ac1857b3 100644 --- a/vision/L1/examples/cvtcolor/build/xf_config_params.h +++ b/vision/L1/examples/cvtcolor/build/xf_config_params.h @@ -308,13 +308,13 @@ #endif -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 4 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 -#define XF_CV_DEPTH_IN_0 3 -#define XF_CV_DEPTH_OUT_0 4 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_OUT_0 2 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 #define XF_CV_DEPTH_IN_2 2 -#define XF_CV_DEPTH_OUT_2 4 \ No newline at end of file +#define XF_CV_DEPTH_OUT_2 2 \ No newline at end of file diff --git a/vision/L1/examples/demosaicing/build/xf_config_params.h b/vision/L1/examples/demosaicing/build/xf_config_params.h index 23eace3fd3..6c045dc021 100644 --- a/vision/L1/examples/demosaicing/build/xf_config_params.h +++ b/vision/L1/examples/demosaicing/build/xf_config_params.h @@ -25,5 +25,5 @@ #define XF_USE_URAM 0 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/dilation/build/xf_config_params.h b/vision/L1/examples/dilation/build/xf_config_params.h index c55bca8004..c139db76a8 100644 --- a/vision/L1/examples/dilation/build/xf_config_params.h +++ b/vision/L1/examples/dilation/build/xf_config_params.h @@ -25,5 +25,5 @@ #define ITERATIONS 1 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/erosion/build/xf_config_params.h b/vision/L1/examples/erosion/build/xf_config_params.h index c55bca8004..c139db76a8 100644 --- a/vision/L1/examples/erosion/build/xf_config_params.h +++ b/vision/L1/examples/erosion/build/xf_config_params.h @@ -25,5 +25,5 @@ #define ITERATIONS 1 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/fast/build/xf_config_params.h b/vision/L1/examples/fast/build/xf_config_params.h index 48aad9f77d..f83a53302e 100644 --- a/vision/L1/examples/fast/build/xf_config_params.h +++ b/vision/L1/examples/fast/build/xf_config_params.h @@ -24,5 +24,5 @@ #define MAXCORNERS 1024 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/gaincontrol/build/xf_config_params.h b/vision/L1/examples/gaincontrol/build/xf_config_params.h index c8cfec6394..5a7879b938 100644 --- a/vision/L1/examples/gaincontrol/build/xf_config_params.h +++ b/vision/L1/examples/gaincontrol/build/xf_config_params.h @@ -22,5 +22,5 @@ #define T_8U 1 #define T_16U 0 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/gammacorrection/build/xf_config_params.h b/vision/L1/examples/gammacorrection/build/xf_config_params.h index 956b6eec5b..070028f53d 100644 --- a/vision/L1/examples/gammacorrection/build/xf_config_params.h +++ b/vision/L1/examples/gammacorrection/build/xf_config_params.h @@ -19,5 +19,5 @@ #define GRAY 1 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/gaussiandifference/build/xf_config_params.h b/vision/L1/examples/gaussiandifference/build/xf_config_params.h index 75d1d379a1..d7a1150463 100644 --- a/vision/L1/examples/gaussiandifference/build/xf_config_params.h +++ b/vision/L1/examples/gaussiandifference/build/xf_config_params.h @@ -28,10 +28,10 @@ #define MPC 0 #define SPC 1 -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/gaussianfilter/build/xf_config_params.h b/vision/L1/examples/gaussianfilter/build/xf_config_params.h index d5a7c75e74..ac81d218da 100644 --- a/vision/L1/examples/gaussianfilter/build/xf_config_params.h +++ b/vision/L1/examples/gaussianfilter/build/xf_config_params.h @@ -24,5 +24,5 @@ #define GRAY 1 #define RGBA 0 -#define XF_CV_DEPTH_IN_1 1 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/examples/globaltonemapping/build/xf_config_params.h b/vision/L1/examples/globaltonemapping/build/xf_config_params.h index 41abc4515e..1ed361ca1a 100644 --- a/vision/L1/examples/globaltonemapping/build/xf_config_params.h +++ b/vision/L1/examples/globaltonemapping/build/xf_config_params.h @@ -20,5 +20,5 @@ /* Image type */ #define T_16U 1 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/harris/build/xf_config_params.h b/vision/L1/examples/harris/build/xf_config_params.h index 565a7bc00c..c089713cc7 100644 --- a/vision/L1/examples/harris/build/xf_config_params.h +++ b/vision/L1/examples/harris/build/xf_config_params.h @@ -25,5 +25,5 @@ #define XF_USE_URAM false -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/hdrextractfrms/build/xf_config_params.h b/vision/L1/examples/hdrextractfrms/build/xf_config_params.h index 2f9c729a82..f6bcbd97e0 100644 --- a/vision/L1/examples/hdrextractfrms/build/xf_config_params.h +++ b/vision/L1/examples/hdrextractfrms/build/xf_config_params.h @@ -31,6 +31,6 @@ #define XF_USE_URAM 0 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_LEF 3 -#define XF_CV_DEPTH_SEF 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_LEF 2 +#define XF_CV_DEPTH_SEF 2 diff --git a/vision/L1/examples/hdrmerge/build/xf_config_params.h b/vision/L1/examples/hdrmerge/build/xf_config_params.h index f44a0d69f8..2086d22965 100644 --- a/vision/L1/examples/hdrmerge/build/xf_config_params.h +++ b/vision/L1/examples/hdrmerge/build/xf_config_params.h @@ -56,6 +56,6 @@ #define NO_EXPS 2 #define NPIX XF_NPPC2 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/histequalize/build/xf_config_params.h b/vision/L1/examples/histequalize/build/xf_config_params.h index 59e8890c13..0e6d2f4ef3 100644 --- a/vision/L1/examples/histequalize/build/xf_config_params.h +++ b/vision/L1/examples/histequalize/build/xf_config_params.h @@ -16,6 +16,6 @@ #define MPC 0 // Multiple Pixels per Clock operation #define SPC 1 // Single Pixel per Clock operation -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/histogram/build/xf_config_params.h b/vision/L1/examples/histogram/build/xf_config_params.h index 9365a78e59..0d988bf4a9 100644 --- a/vision/L1/examples/histogram/build/xf_config_params.h +++ b/vision/L1/examples/histogram/build/xf_config_params.h @@ -19,4 +19,4 @@ #define GRAY 1 #define RGBA 0 -#define XF_CV_DEPTH_IN 3 +#define XF_CV_DEPTH_IN 2 diff --git a/vision/L1/examples/hog/build/xf_config_params.h b/vision/L1/examples/hog/build/xf_config_params.h index 0066dea0cc..555c104ea7 100644 --- a/vision/L1/examples/hog/build/xf_config_params.h +++ b/vision/L1/examples/hog/build/xf_config_params.h @@ -29,5 +29,5 @@ #define XF_WIN_HEIGHT 128 #define XF_WIN_WIDTH 64 #define XF_USE_URAM false -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/houghlines/build/xf_config_params.h b/vision/L1/examples/houghlines/build/xf_config_params.h index c69c4ff370..17f0af4151 100755 --- a/vision/L1/examples/houghlines/build/xf_config_params.h +++ b/vision/L1/examples/houghlines/build/xf_config_params.h @@ -14,4 +14,4 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 3 +#define XF_CV_DEPTH_IN_1 2 diff --git a/vision/L1/examples/inrange/build/xf_config_params.h b/vision/L1/examples/inrange/build/xf_config_params.h index c3a40986b3..7a16a1a9fd 100644 --- a/vision/L1/examples/inrange/build/xf_config_params.h +++ b/vision/L1/examples/inrange/build/xf_config_params.h @@ -18,5 +18,5 @@ #define MPC 0 // Multiple Pixels per Clock operation #define GRAY 1 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/integralimg/build/xf_config_params.h b/vision/L1/examples/integralimg/build/xf_config_params.h index 4c44e34316..450e21f4d8 100644 --- a/vision/L1/examples/integralimg/build/xf_config_params.h +++ b/vision/L1/examples/integralimg/build/xf_config_params.h @@ -18,5 +18,5 @@ #define HEIGHT 128 #define WIDTH 128 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/isppipeline-rgbir/build/xf_config_params.h b/vision/L1/examples/isppipeline-rgbir/build/xf_config_params.h index 1079887ac1..53cc792306 100644 --- a/vision/L1/examples/isppipeline-rgbir/build/xf_config_params.h +++ b/vision/L1/examples/isppipeline-rgbir/build/xf_config_params.h @@ -71,15 +71,15 @@ #define XF_USE_URAM 0 // uram enable #define XF_CV_DEPTH_3XWIDTH 3 * XF_WIDTH -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_IN_COPY1 3 -#define XF_CV_DEPTH_IN_COPY2 3 -#define XF_CV_DEPTH_FULLIR_OUT 3 -#define XF_CV_DEPTH_RRGB_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_DEMOSAIC_OUT 3 -#define XF_CV_DEPTH_DEMOOUT_FINAL 3 -#define XF_CV_DEPTH_LTM_IN 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_IN_COPY1 2 +#define XF_CV_DEPTH_IN_COPY2 2 +#define XF_CV_DEPTH_FULLIR_OUT 2 +#define XF_CV_DEPTH_RRGB_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_DEMOSAIC_OUT 2 +#define XF_CV_DEPTH_DEMOOUT_FINAL 2 +#define XF_CV_DEPTH_LTM_IN 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/isppipeline-rgbir/xf_isp_tb.cpp b/vision/L1/examples/isppipeline-rgbir/xf_isp_tb.cpp index 18d2480893..f7e113571d 100644 --- a/vision/L1/examples/isppipeline-rgbir/xf_isp_tb.cpp +++ b/vision/L1/examples/isppipeline-rgbir/xf_isp_tb.cpp @@ -361,14 +361,8 @@ int main(int argc, char** argv) { IR_at_R_wgts, IR_at_B_wgts, sub_wgts, rgain, bgain, gamma_lut, mode_reg, pawb); // Convert processed image back to CV image - // MultiPixelAXIvideo2Mat(dst_axi, final_output, 0); AXIvideo2cvMatxf(dst_axi, final_output); -#if T_8U AXIvideo2cvMatxf(ir_axi, ir_output); -#else - MultiPixelAXIvideo2Mat(ir_axi, ir_output, 0); -#endif - // AXIvideo2cvMatxf(ir_axi, ir_output); } imwrite("output.png", final_output); diff --git a/vision/L1/examples/isppipeline/build/xf_config_params.h b/vision/L1/examples/isppipeline/build/xf_config_params.h index 2f6d3bfbbd..887867d337 100755 --- a/vision/L1/examples/isppipeline/build/xf_config_params.h +++ b/vision/L1/examples/isppipeline/build/xf_config_params.h @@ -56,14 +56,14 @@ #define XF_USE_URAM 0 // uram enable -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_BPC_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_DEMOSAIC_OUT 3 -#define XF_CV_DEPTH_IMPOP 3 -#define XF_CV_DEPTH_LTM_IN 3 -#define XF_CV_DEPTH_LSC_OUT 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_BPC_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_DEMOSAIC_OUT 2 +#define XF_CV_DEPTH_IMPOP 2 +#define XF_CV_DEPTH_LTM_IN 2 +#define XF_CV_DEPTH_LSC_OUT 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/ispstats/build/xf_config_params.h b/vision/L1/examples/ispstats/build/xf_config_params.h index 4a164761fa..2936b51f01 100644 --- a/vision/L1/examples/ispstats/build/xf_config_params.h +++ b/vision/L1/examples/ispstats/build/xf_config_params.h @@ -17,4 +17,4 @@ #define BGR 1 #define BAYER 0 -#define XF_CV_DEPTH_IN 3 +#define XF_CV_DEPTH_IN 2 diff --git a/vision/L1/examples/kalmanfilter/build/xf_config_params.h b/vision/L1/examples/kalmanfilter/build/xf_config_params.h index adbfb205b0..2338ec2d3b 100644 --- a/vision/L1/examples/kalmanfilter/build/xf_config_params.h +++ b/vision/L1/examples/kalmanfilter/build/xf_config_params.h @@ -21,17 +21,17 @@ #define KF_MMU 1 #define XF_USE_URAM 0 #define KF_EKF 0 -#define XF_CV_DEPTH_A 3 -#define XF_CV_DEPTH_B 3 -#define XF_CV_DEPTH_UQ 3 -#define XF_CV_DEPTH_DQ 3 -#define XF_CV_DEPTH_H 3 -#define XF_CV_DEPTH_X0 3 -#define XF_CV_DEPTH_U0 3 -#define XF_CV_DEPTH_D0 3 -#define XF_CV_DEPTH_R 3 -#define XF_CV_DEPTH_U 3 -#define XF_CV_DEPTH_Y 3 -#define XF_CV_DEPTH_XOUT 3 -#define XF_CV_DEPTH_UOUT 3 -#define XF_CV_DEPTH_DOUT 3 \ No newline at end of file +#define XF_CV_DEPTH_A 2 +#define XF_CV_DEPTH_B 2 +#define XF_CV_DEPTH_UQ 2 +#define XF_CV_DEPTH_DQ 2 +#define XF_CV_DEPTH_H 2 +#define XF_CV_DEPTH_X0 2 +#define XF_CV_DEPTH_U0 2 +#define XF_CV_DEPTH_D0 2 +#define XF_CV_DEPTH_R 2 +#define XF_CV_DEPTH_U 2 +#define XF_CV_DEPTH_Y 2 +#define XF_CV_DEPTH_XOUT 2 +#define XF_CV_DEPTH_UOUT 2 +#define XF_CV_DEPTH_DOUT 2 \ No newline at end of file diff --git a/vision/L1/examples/lenshadingcorrection/build/xf_config_params.h b/vision/L1/examples/lenshadingcorrection/build/xf_config_params.h index a875024ef2..240111716b 100755 --- a/vision/L1/examples/lenshadingcorrection/build/xf_config_params.h +++ b/vision/L1/examples/lenshadingcorrection/build/xf_config_params.h @@ -22,5 +22,5 @@ #define BPATTERN XF_BAYER_BG -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/lkdensepyrof/build/xf_config_params.h b/vision/L1/examples/lkdensepyrof/build/xf_config_params.h index 550de33336..3f74a33aa1 100644 --- a/vision/L1/examples/lkdensepyrof/build/xf_config_params.h +++ b/vision/L1/examples/lkdensepyrof/build/xf_config_params.h @@ -29,9 +29,9 @@ #define NUM_LINES_FINDIT 50 #define XF_USE_URAM false -#define XF_CV_DEPTH_IN 1 -#define XF_CV_DEPTH_OUT 3 -#define XF_CV_DEPTH_CURR_IMG 1 -#define XF_CV_DEPTH_NEXT_IMG 3 -#define XF_CV_DEPTH_STREAM_IN 1 -#define XF_CV_DEPTH_STREAM_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 +#define XF_CV_DEPTH_CURR_IMG 2 +#define XF_CV_DEPTH_NEXT_IMG 2 +#define XF_CV_DEPTH_STREAM_IN 2 +#define XF_CV_DEPTH_STREAM_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/lknpyroflow/build/xf_config_params.h b/vision/L1/examples/lknpyroflow/build/xf_config_params.h index e47cd467e0..6cecc11702 100644 --- a/vision/L1/examples/lknpyroflow/build/xf_config_params.h +++ b/vision/L1/examples/lknpyroflow/build/xf_config_params.h @@ -22,7 +22,7 @@ #define OUT_BYTES_PER_CHANNEL 4 #define INPUT_PTR_WIDTH 64 #define OUTPUT_PTR_WIDTH 32 -#define XF_CV_DEPTH_IN_CURR 3 -#define XF_CV_DEPTH_IN_PREV 3 -#define XF_CV_DEPTH_OUTX 3 -#define XF_CV_DEPTH_OUTY 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_CURR 2 +#define XF_CV_DEPTH_IN_PREV 2 +#define XF_CV_DEPTH_OUTX 2 +#define XF_CV_DEPTH_OUTY 2 \ No newline at end of file diff --git a/vision/L1/examples/lut/build/xf_config_params.h b/vision/L1/examples/lut/build/xf_config_params.h index 8586eed3b6..248b7b9601 100644 --- a/vision/L1/examples/lut/build/xf_config_params.h +++ b/vision/L1/examples/lut/build/xf_config_params.h @@ -19,5 +19,5 @@ #define GRAY 1 #define RGBA 0 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/magnitude/build/xf_config_params.h b/vision/L1/examples/magnitude/build/xf_config_params.h index 47f82c3a5d..ff0614ba66 100644 --- a/vision/L1/examples/magnitude/build/xf_config_params.h +++ b/vision/L1/examples/magnitude/build/xf_config_params.h @@ -18,6 +18,6 @@ #define SPC 1 // Single Pixel per Clock operation #define L1NORM 1 -#define XF_CV_DEPTH_IN1 3 -#define XF_CV_DEPTH_IN2 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN1 2 +#define XF_CV_DEPTH_IN2 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/meanstddev/build/xf_config_params.h b/vision/L1/examples/meanstddev/build/xf_config_params.h index e35a346905..7b0046c392 100644 --- a/vision/L1/examples/meanstddev/build/xf_config_params.h +++ b/vision/L1/examples/meanstddev/build/xf_config_params.h @@ -18,4 +18,4 @@ #define MPC 0 // Multiple Pixels per Clock operation #define GRAY 1 -#define XF_CV_DEPTH_IN 3 +#define XF_CV_DEPTH_IN 2 diff --git a/vision/L1/examples/medianblur/build/xf_config_params.h b/vision/L1/examples/medianblur/build/xf_config_params.h index 91d4ab30e4..2deabd7182 100644 --- a/vision/L1/examples/medianblur/build/xf_config_params.h +++ b/vision/L1/examples/medianblur/build/xf_config_params.h @@ -24,5 +24,5 @@ /* set the height and weight */ #define HEIGHT 128 #define WIDTH 128 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/minmaxloc/build/xf_config_params.h b/vision/L1/examples/minmaxloc/build/xf_config_params.h index 3431dad01e..ae43229eda 100644 --- a/vision/L1/examples/minmaxloc/build/xf_config_params.h +++ b/vision/L1/examples/minmaxloc/build/xf_config_params.h @@ -23,4 +23,4 @@ #define T_16U 0 // Input type of 16U #define T_16S 1 // Input type of 16S #define T_32S 0 // Input type of 32S -#define XF_CV_DEPTH_IN 3 +#define XF_CV_DEPTH_IN 2 diff --git a/vision/L1/examples/modefilter/build/xf_config_params.h b/vision/L1/examples/modefilter/build/xf_config_params.h index 5f70226b7f..58a4905b6b 100644 --- a/vision/L1/examples/modefilter/build/xf_config_params.h +++ b/vision/L1/examples/modefilter/build/xf_config_params.h @@ -21,5 +21,5 @@ #define GRAY 0 /* Filter window size*/ #define WINDOW_SIZE 5 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/otsuthreshold/build/xf_config_params.h b/vision/L1/examples/otsuthreshold/build/xf_config_params.h index be9be6a5c7..e1a17c852a 100644 --- a/vision/L1/examples/otsuthreshold/build/xf_config_params.h +++ b/vision/L1/examples/otsuthreshold/build/xf_config_params.h @@ -16,4 +16,4 @@ #define SPC 1 #define MPC 0 -#define XF_CV_DEPTH_IN 3 +#define XF_CV_DEPTH_IN 2 diff --git a/vision/L1/examples/paintmask/build/xf_config_params.h b/vision/L1/examples/paintmask/build/xf_config_params.h index 73a10baa77..2be6fc612a 100644 --- a/vision/L1/examples/paintmask/build/xf_config_params.h +++ b/vision/L1/examples/paintmask/build/xf_config_params.h @@ -18,6 +18,6 @@ #define MPC 0 // Multiple Pixels per Clock operation #define GRAY 1 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_MASK_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_MASK_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/phase/build/xf_config_params.h b/vision/L1/examples/phase/build/xf_config_params.h index 4db23d90bd..3f3b1e71df 100644 --- a/vision/L1/examples/phase/build/xf_config_params.h +++ b/vision/L1/examples/phase/build/xf_config_params.h @@ -20,6 +20,6 @@ /* set the optimisation type */ #define SPC 1 // Single Pixel per Clock operation #define MPC 0 // Multiple Pixels per Clock operation -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/pyrdown/build/xf_config_params.h b/vision/L1/examples/pyrdown/build/xf_config_params.h index ecbe41e1bb..3c990e5460 100644 --- a/vision/L1/examples/pyrdown/build/xf_config_params.h +++ b/vision/L1/examples/pyrdown/build/xf_config_params.h @@ -21,5 +21,5 @@ #define GRAY 1 #define RGBA 0 #define XF_USE_URAM false -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/pyrup/build/xf_config_params.h b/vision/L1/examples/pyrup/build/xf_config_params.h index 0287dc199c..f4ee7730df 100644 --- a/vision/L1/examples/pyrup/build/xf_config_params.h +++ b/vision/L1/examples/pyrup/build/xf_config_params.h @@ -19,5 +19,5 @@ #define GRAY 1 #define RGBA 0 -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/quantizationdithering/build/xf_config_params.h b/vision/L1/examples/quantizationdithering/build/xf_config_params.h index 59617843f2..220de2b277 100644 --- a/vision/L1/examples/quantizationdithering/build/xf_config_params.h +++ b/vision/L1/examples/quantizationdithering/build/xf_config_params.h @@ -37,5 +37,5 @@ #define WIDTH 1024 // Maximum Input image width #define HEIGHT 676 // Maximum Input image height -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L1/examples/reduce/build/xf_config_params.h b/vision/L1/examples/reduce/build/xf_config_params.h index 20ab505700..f6c58f4821 100644 --- a/vision/L1/examples/reduce/build/xf_config_params.h +++ b/vision/L1/examples/reduce/build/xf_config_params.h @@ -28,5 +28,5 @@ #define DIM 0 #define REDUCTION_OP XF_REDUCE_AVG -#define XF_CV_DEPTH_IN 3 -#define XF_CV_DEPTH_OUT 3 \ No newline at end of file +#define XF_CV_DEPTH_IN 2 +#define XF_CV_DEPTH_OUT 2 \ No newline at end of file diff --git a/vision/L1/examples/tonemapping/build/xf_config_params.h b/vision/L1/examples/tonemapping/build/xf_config_params.h index 8b68ac5176..fcb51cf516 100755 --- a/vision/L1/examples/tonemapping/build/xf_config_params.h +++ b/vision/L1/examples/tonemapping/build/xf_config_params.h @@ -14,5 +14,5 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L1/include/common/xf_structs.hpp b/vision/L1/include/common/xf_structs.hpp index 6657779c71..596b2ccade 100644 --- a/vision/L1/include/common/xf_structs.hpp +++ b/vision/L1/include/common/xf_structs.hpp @@ -1043,7 +1043,6 @@ class MMIterIn : public _MMITER { // stride_bound_per_npc = _MMITER::cols_npc_aligned(stride); // strideBased_last_blk_width = _MMITER::last_blk_pxl_width(stride, stride_bound_per_npc); //} - int rd_cnt = 0; int rem = 0; @@ -1075,7 +1074,6 @@ class MMIterIn : public _MMITER { localbuffer = val.range(((ptr_width_plus - 1) - rem), (PTR_WIDTH - rem)); rem = rem - xf_bits_per_clock; } - bool bLast_width = (j == (cols_bound_per_npc - 1)); ap_uint localbuffer2 = 0; if (bLast_width == 0) @@ -1084,6 +1082,7 @@ class MMIterIn : public _MMITER { localbuffer2 = localbuffer.range(last_blk_width - 1, 0); if (j < cols_bound_per_npc) dout.write(localbuffer2); + j = (bLast) ? 0 : (j + 1); } } @@ -1286,11 +1285,11 @@ class MMIterOut : public _MMITER { int last_blk_width, int stride = -1) { ap_uint<16> strideBased_cols_bound_per_npc; - // if (stride == -1 || FILLZERO == 0) { - strideBased_cols_bound_per_npc = cols_bound_per_npc; - //} else { - // strideBased_cols_bound_per_npc = _MMITER::cols_npc_aligned(stride); - //} + if (stride == -1 || FILLZERO == 0) { + strideBased_cols_bound_per_npc = cols_bound_per_npc; + } else { + strideBased_cols_bound_per_npc = _MMITER::cols_npc_aligned(stride); + } ap_uint::cvalue + 1> filled = 0; // valid bits remaining in current buffer ap_uint localbuffer = 0; diff --git a/vision/L1/include/imgproc/xf_autowhitebalance.hpp b/vision/L1/include/imgproc/xf_autowhitebalance.hpp index ccf9edb40b..af703cf221 100644 --- a/vision/L1/include/imgproc/xf_autowhitebalance.hpp +++ b/vision/L1/include/imgproc/xf_autowhitebalance.hpp @@ -712,6 +712,217 @@ void AWBChannelGain(xf::cv::Mat& src, XF_WORDWIDTH(SRC_T, NPC), XF_WORDWIDTH(SRC_T, NPC), (COLS >> XF_BITSHIFT(NPC))>( src, dst, thresh, i_gain); } + +template +void hist_nor_awb(xf::cv::Mat& src1, + xf::cv::Mat& dst, + uint32_t hist0[3][HISTSIZE], + uint32_t hist1[3][HISTSIZE], + unsigned short rows, + unsigned short cols, + float thresh, + float inputMin, + float inputMax, + float outputMin, + float outputMax) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + xf::cv::Mat src2(rows, cols); +// clang-format off +#pragma HLS DATAFLOW + // clang-format on + AWBhistogram( + src1, src2, hist0, thresh, inputMin, inputMax, outputMin, outputMax); + + AWBNormalization( + src2, dst, hist1, thresh, inputMin, inputMax, outputMin, outputMax); +} + +template +void hist_nor_awb_wrap(xf::cv::Mat& src1, + xf::cv::Mat& dst, + uint32_t hist0[3][HISTSIZE], + uint32_t hist1[3][HISTSIZE], + unsigned short rows, + unsigned short cols, + float thresh, + float inputMin, + float inputMax, + float outputMin, + float outputMax, + bool& flag, + bool& eof) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + + if (!flag) { + hist_nor_awb( + src1, dst, hist0, hist1, rows, cols, thresh, inputMin, inputMax, outputMin, outputMax); + if (eof) flag = 1; + } else { + hist_nor_awb( + src1, dst, hist1, hist0, rows, cols, thresh, inputMin, inputMax, outputMin, outputMax); + if (eof) flag = 0; + } + return; +} + +template +void hist_nor_awb_multi(xf::cv::Mat& src1, + xf::cv::Mat& dst, + uint32_t hist0[STREAMS][3][HISTSIZE], + uint32_t hist1[STREAMS][3][HISTSIZE], + unsigned short rows, + unsigned short cols, + float inputMin, + float inputMax, + float outputMin, + float outputMax, + bool flag[STREAMS], + bool eof[STREAMS], + unsigned short pawb[STREAMS], + int strm_id) { +// clang-format off + +#pragma HLS ARRAY_PARTITION variable=hist0 complete dim=1 +#pragma HLS ARRAY_PARTITION variable=hist0 complete dim=2 +#pragma HLS ARRAY_PARTITION variable=hist1 complete dim=1 +#pragma HLS ARRAY_PARTITION variable=hist1 complete dim=2 +#pragma HLS ARRAY_PARTITION variable=flag complete dim=1 +#pragma HLS ARRAY_PARTITION variable=eof complete dim=1 +#pragma HLS ARRAY_PARTITION variable=pawb complete dim=1 + + // clang-format on + float thresh = (float)pawb[strm_id] / 256; + + hist_nor_awb_wrap( + src1, dst, hist0[strm_id], hist1[strm_id], rows, cols, thresh, inputMin, inputMax, outputMin, outputMax, + flag[strm_id], eof[strm_id]); +} + +template +void chgain_update_awb(xf::cv::Mat& src1, + xf::cv::Mat& dst, + float thresh, + int i_gain0[3], + int i_gain1[3], + unsigned short rows, + unsigned short cols) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + xf::cv::Mat src2(rows, cols); + +// clang-format off +#pragma HLS DATAFLOW + // clang-format on + AWBChannelGain(src1, src2, thresh, i_gain0); + AWBGainUpdate(src2, dst, thresh, i_gain1); + +} +template +void chgain_update_awb_wrap(xf::cv::Mat& src1, + xf::cv::Mat& dst, + float thresh, + int i_gain0[3], + int i_gain1[3], + unsigned short rows, + unsigned short cols, + bool &flag, + bool &eof) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + + if(!flag){ + chgain_update_awb(src1, dst, thresh, i_gain0, i_gain1, rows, cols); + + if(eof) flag = 1; + } + else { + + chgain_update_awb(src1, dst, thresh, i_gain1, i_gain0, rows, cols); + + if(eof) flag = 0; + } + return; +} +template +void chgain_update_awb_multi(xf::cv::Mat& src1, + xf::cv::Mat& dst, + int i_gain0[STREAMS][3], + int i_gain1[STREAMS][3], + unsigned short rows, + unsigned short cols, + bool flag[STREAMS], + bool eof[STREAMS], + unsigned short pawb[STREAMS], + int strm_id) { + +// clang-format off +#pragma HLS ARRAY_PARTITION variable= pawb dim=1 complete +#pragma HLS ARRAY_PARTITION variable=i_gain0 complete dim=1 +#pragma HLS ARRAY_PARTITION variable=i_gain0 complete dim=2 +#pragma HLS ARRAY_PARTITION variable=i_gain1 complete dim=1 +#pragma HLS ARRAY_PARTITION variable=i_gain1 complete dim=2 +#pragma HLS ARRAY_PARTITION variable=flag complete dim=1 +#pragma HLS ARRAY_PARTITION variable=eof complete dim=1 + + // clang-format on + float thresh = (float)pawb[strm_id] / 256; + + chgain_update_awb_wrap( + src1, dst, thresh, i_gain0[strm_id], i_gain1[strm_id], rows, cols, flag[strm_id], eof[strm_id]); +} } } #endif //_XF_AWB_HPP_ diff --git a/vision/L1/include/imgproc/xf_black_level.hpp b/vision/L1/include/imgproc/xf_black_level.hpp index da230d85ed..bca89b1477 100644 --- a/vision/L1/include/imgproc/xf_black_level.hpp +++ b/vision/L1/include/imgproc/xf_black_level.hpp @@ -68,7 +68,7 @@ template void blackLevelCorrection(xf::cv::Mat& _Src, xf::cv::Mat& _Dst, - XF_CTUNAME(SRC_T, NPPC) black_level, + unsigned short black_level, float mul_value // ap_uint mul_value ) { // clang-format off @@ -120,6 +120,29 @@ void blackLevelCorrection(xf::cv::Mat +void blackLevelCorrection_multi(xf::cv::Mat& _Src, + xf::cv::Mat& _Dst, + unsigned short black_level[STREAMS], + int stream_id) { +// clang-format off +#pragma HLS ARRAY_PARTITION variable= black_level dim=1 complete + // clang-format on + float inputMax = (1 << (XF_DTPIXELDEPTH(SRC_T, NPPC))) - 1; // 65535.0f; + float mul_value = (inputMax / (inputMax - black_level[stream_id])); + blackLevelCorrection(_Src, _Dst, black_level[stream_id], mul_value); +} } } diff --git a/vision/L1/include/imgproc/xf_cca_custom_imp.hpp b/vision/L1/include/imgproc/xf_cca_custom_imp.hpp index 257f11f5ea..b7194f3f6a 100644 --- a/vision/L1/include/imgproc/xf_cca_custom_imp.hpp +++ b/vision/L1/include/imgproc/xf_cca_custom_imp.hpp @@ -69,7 +69,7 @@ void process_row(uint8_t* in_ptr, uint8_t* tmp_out_ptr, bool* lab_arr, int& obj_ } template void process_mat_row(xf::cv::Mat& _src, - uint8_t* tmp_out_ptr, + xf::cv::Mat& tmp_out_ptr, bool* lab_arr, int& obj_pix, int offset, @@ -108,7 +108,7 @@ void process_mat_row(xf::cv::Mat& _src } lab_arr[j] = lab; - tmp_out_ptr[j] = out; + tmp_out_ptr.write(offset + j, out); a = b; b = c; c = lab_arr[j + 2]; @@ -187,7 +187,7 @@ void proc_write_to_out( template void fw_cca(xf::cv::Mat& _src, - uint8_t* tmp_out_ptr, + xf::cv::Mat& tmp_out_ptr, int& obj_pix, int height, int width) { @@ -210,8 +210,7 @@ void fw_cca(xf::cv::Mat& _src, // clang-format off #pragma HLS LOOP_TRIPCOUNT min=1 max=HEIGHT // clang-format on - process_mat_row(_src, tmp_out_ptr + offset, lab_arr, obj_pix, offset, - width); + process_mat_row(_src, tmp_out_ptr, lab_arr, obj_pix, offset, width); offset += width; } } diff --git a/vision/L1/include/imgproc/xf_demosaicing.hpp b/vision/L1/include/imgproc/xf_demosaicing.hpp index dc6261cbce..909a3432d9 100644 --- a/vision/L1/include/imgproc/xf_demosaicing.hpp +++ b/vision/L1/include/imgproc/xf_demosaicing.hpp @@ -445,6 +445,371 @@ void demosaicing(xf::cv::Mat& src_mat, } // end ROW loop } +// Multistream +template +void Core_Process_multi( + XF_DTUNAME(SRC_T, NPC) imgblock[5][buf_size], int& b, int& g, int& r, int row, int col, int loop) { + // if (BFORMAT == XF_BAYER_RG) { + /* if ((row & 0x00000001) == 0) { // if R row + if ((col & 0x00000001) == 0) { // We already have R value at this location + b = rb_kernel(imgblock, loop); + g = g_kernel(imgblock, loop); + r = imgblock[2][2 + loop]; + } else { // We already have G value at this location + b = rgb_bgr_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgr_bgb_kernel(imgblock, loop); + } + } else { // B row + if ((col & 0x00000001) == 0) { // We have already G value at this location + b = rgr_bgb_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgb_bgr_kernel(imgblock, loop); + } else { // We already have B value at this location + b = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + r = rb_kernel(imgblock, loop); + } + } + } else if (BFORMAT == XF_BAYER_BG) {*/ + if ((row & 0x00000001) == 0) { // if B row + if ((col & 0x00000001) == 0) { // Even row, even column - We already have + // B value at this location + r = rb_kernel(imgblock, loop); + g = g_kernel(imgblock, loop); + b = imgblock[2][2 + loop]; + } else { // Even row, odd column - We already have G value at this + // location + b = rgr_bgb_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgb_bgr_kernel(imgblock, loop); + } + } else { // if R row + if ((col & 0x00000001) == 0) { // Odd row, even column - We have G value at this location + b = rgb_bgr_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgr_bgb_kernel(imgblock, loop); + } else { // Odd row, odd column - We already have R value at this location + r = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + b = rb_kernel(imgblock, loop); + } + } + /* } else if (BFORMAT == XF_BAYER_GB) { + if ((row & 0x00000001) == 0) { // if B row + if ((col & 0x00000001) == 0) { // Even row, even column - We already have + // G value at this location + b = rgr_bgb_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgb_bgr_kernel(imgblock, loop); + } else { // Even row, odd column - We already have B value at this + // location + b = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + r = rb_kernel(imgblock, loop); + } + } else { // if R row + if ((col & 0x00000001) == 0) { // Odd row, even column - We have R value at this location + r = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + b = rb_kernel(imgblock, loop); + } else { // Odd row, odd column - We already have G value at this location + b = rgb_bgr_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgr_bgb_kernel(imgblock, loop); + } + } + } else if (BFORMAT == XF_BAYER_GR) { + if ((row & 0x00000001) == 0) { // if R row + if ((col & 0x00000001) == 0) { // Even row, even column - We already have + // G value at this location + b = rgb_bgr_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgr_bgb_kernel(imgblock, loop); + } else { // Even row, odd column - We already have R value at this + // location + r = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + b = rb_kernel(imgblock, loop); + } + } else { // if B row + if ((col & 0x00000001) == 0) { // Odd row, even column - We have B value at this location + b = imgblock[2][2 + loop]; + g = g_kernel(imgblock, loop); + r = rb_kernel(imgblock, loop); + } else { // Odd row, odd column - We already have G value at this location + b = rgr_bgb_kernel(imgblock, loop); + g = imgblock[2][2 + loop]; + r = rgb_bgr_kernel(imgblock, loop); + } + } + }*/ +} + +template +void demosaicing_multi(xf::cv::Mat& src_mat, + xf::cv::Mat& dst_mat, + unsigned short& bformat) { +#ifndef __SYNTHESIS__ + // assert(((BFORMAT == XF_BAYER_BG) || (BFORMAT == XF_BAYER_GB) || (BFORMAT == XF_BAYER_GR) || + // (BFORMAT == XF_BAYER_RG)) && + // ("Unsupported Bayer pattern. Use anyone among: " + // "XF_BAYER_BG;XF_BAYER_GB;XF_BAYER_GR;XF_BAYER_RG")); + assert(((src_mat.rows <= ROWS) && (src_mat.cols <= COLS)) && "ROWS and COLS should be greater than input image"); + assert(((NPC == 1) || (NPC == 2) || (NPC == 4)) && "Only 1, 2 and 4 pixel-parallelism are supported"); + assert(((SRC_T == XF_8UC1) || (SRC_T == XF_10UC1) || (SRC_T == XF_12UC1) || (SRC_T == XF_16UC1)) && + "Only 8, 10, 12 and 16 bit, single channel images are supported"); + assert(((DST_T == XF_8UC3) || (DST_T == XF_10UC3) || (DST_T == XF_12UC3) || (DST_T == XF_16UC3) || + (DST_T == XF_8UC4) || (DST_T == XF_10UC4) || (DST_T == XF_12UC4) || (DST_T == XF_16UC4)) && + "Only 8, 10, 12 and 16 bit, 3 and 4 channel images are supported"); +#endif + const int __BHEIGHT = 5; + const int __BHEIGHTMINUSONE = __BHEIGHT - 1; + const int __BWIDTH = NPC + __BHEIGHTMINUSONE + (((NPC - 1) >> 1) << 1); + +// clang-format off + #pragma HLS INLINE OFF + // clang-format on + XF_TNAME(SRC_T, NPC) linebuffer[__BHEIGHTMINUSONE][COLS >> XF_BITSHIFT(NPC)]; + if (USE_URAM) { +// clang-format off + #pragma HLS bind_storage variable=linebuffer type=RAM_T2P impl=URAM + #pragma HLS array_reshape variable=linebuffer dim=1 factor=4 cyclic + // clang-format on + } else { +// clang-format off + #pragma HLS bind_storage variable=linebuffer type=RAM_T2P impl=BRAM + #pragma HLS array_partition variable=linebuffer complete dim=1 + // clang-format on + } + XF_CTUNAME(SRC_T, NPC) imgblock[__BHEIGHT][__BWIDTH]; + const int pre_read_count = (2 / NPC) + ((NPC * NPC) >> 2); // 2-2-4 + const int post_read_count = pre_read_count + 2; // 4-4-6 + const int end_read_count = ((NPC << 1) >> (NPC * NPC)) + 1; // 2-1-1 + +// clang-format off + #pragma HLS array_partition variable=imgblock complete dim=0 + // clang-format on + + int lineStore = 3, read_index = 0, write_index = 0; +LineBuffer: + for (int i = 0; i < 2; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=2 max=2 + // clang-format on + for (int j = 0; j> XF_BITSHIFT(NPC); j++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=COLS/NPC max=COLS/NPC + #pragma HLS pipeline ii=1 + // clang-format on + XF_TNAME(SRC_T, NPC) tmp = src_mat.read(read_index++); + linebuffer[i][j] = 0; + linebuffer[i + 2][j] = tmp; + } + } + ap_uint<3> line0 = 3, line1 = 0, line2 = 1, line3 = 2; + int step = XF_DTPIXELDEPTH(SRC_T, NPC); + int out_step = XF_DTPIXELDEPTH(DST_T, NPC); + XF_TNAME(SRC_T, NPC) tmp; + +Row_Loop: + for (int i = 0; i < src_mat.rows; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=ROWS max=ROWS + // clang-format on + int bram_read_count = 0; + lineStore++; + if (lineStore > 3) { + lineStore = 0; + } + if (line0 == 0) { + line0 = 1; + line1 = 2; + line2 = 3; + line3 = 0; + } else if (line0 == 1) { + line0 = 2; + line1 = 3; + line2 = 0; + line3 = 1; + } else if (line0 == 2) { + line0 = 3; + line1 = 0; + line2 = 1; + line3 = 2; + } else { + line0 = 0; + line1 = 1; + line2 = 2; + line3 = 3; + } + + /*Image left corner case */ + Zero: + for (int p = 0; p < 4; ++p) { +// clang-format off + #pragma HLS PIPELINE ii=1 + // clang-format on + for (int k = 0; k < NPC + 2; k++) { + imgblock[p][k] = 0; + } + } + + /*Filling the data in the first four rows of 5x5/5x6/5x10 window from + * linebuffer */ + Datafill: + for (int n = 0, w = 0, v = 0; n < pre_read_count; ++n, ++v) { +// clang-format off + #pragma HLS UNROLL + // clang-format on + imgblock[0][2 + NPC + n] = linebuffer[line0][w].range((step + step * v) - 1, step * v); + imgblock[1][2 + NPC + n] = linebuffer[line1][w].range((step + step * v) - 1, step * v); + imgblock[2][2 + NPC + n] = linebuffer[line2][w].range((step + step * v) - 1, step * v); + imgblock[3][2 + NPC + n] = linebuffer[line3][w].range((step + step * v) - 1, step * v); + (NPC == 1) ? (bram_read_count++, w++, v = -1) : bram_read_count; // Read twice (for 3rd and 4th locations of + // imgblock) for NPPC1 + } + (NPC == 2 || NPC == 4) ? (bram_read_count++) : bram_read_count; + + Col_Loop: + for (int j = 0; j < ((src_mat.cols) >> XF_BITSHIFT(NPC)); j++) { +// clang-format off + #pragma HLS PIPELINE ii=1 + #pragma HLS dependence variable=linebuffer inter false + #pragma HLS LOOP_TRIPCOUNT min=COLS/NPC max=COLS/NPC + #pragma HLS LOOP_FLATTEN OFF + // clang-format on + + if (i < src_mat.rows - 2) { + tmp = src_mat.read(read_index++); // Reading 5th row element + } else { + tmp = 0; + } + + for (int z = 0; z < NPC; ++z) { + imgblock[4][2 + NPC + z] = tmp.range((step + step * z) - 1, step * z); + } + + // Shift the elements in imgblock by NPC + for (int k = 0; k < 5; k++) { + for (int m = 0; m < NPC; ++m) { + for (int l = 0; l < (__BWIDTH - 1); l++) { + imgblock[k][l] = imgblock[k][l + 1]; + } + } + } + XF_TNAME(SRC_T, NPC) + packed_read1, packed_read2, packed_read3, packed_read4, packed_store; + + if (j < (src_mat.cols >> XF_BITSHIFT(NPC)) - end_read_count) { // for each element being processed that is + // not at borders + + packed_read1 = linebuffer[line0][bram_read_count]; + packed_read2 = linebuffer[line1][bram_read_count]; + packed_read3 = linebuffer[line2][bram_read_count]; + packed_read4 = linebuffer[line3][bram_read_count]; + + for (int q = 0; q < NPC; ++q) { + imgblock[0][post_read_count + q] = packed_read1.range((step + step * q) - 1, step * q); + imgblock[1][post_read_count + q] = packed_read2.range((step + step * q) - 1, step * q); + imgblock[2][post_read_count + q] = packed_read3.range((step + step * q) - 1, step * q); + imgblock[3][post_read_count + q] = packed_read4.range((step + step * q) - 1, step * q); + imgblock[4][NPC + 2 + q] = tmp.range((step + step * q) - 1, step * q); + packed_store.range((step + step * q) - 1, step * q) = imgblock[4][2 + q]; + } + linebuffer[lineStore][j] = packed_store; + + } else { // For processing elements at the end of the line. + for (int r = 0; r < NPC; ++r) { + if (NPC == 1) { + imgblock[4][post_read_count + r - 1] = tmp.range((step + step * r) - 1, step * r); + } + linebuffer[lineStore][j].range((step + step * r) - 1, step * r) = imgblock[4][2 + r]; + + imgblock[0][post_read_count + r] = 0; + imgblock[1][post_read_count + r] = 0; + imgblock[2][post_read_count + r] = 0; + imgblock[3][post_read_count + r] = 0; + imgblock[4][post_read_count + r] = 0; + } + } + + bram_read_count++; + + // Calculate the resultant intensities at each pixel + int r, g, b; + XF_TNAME(DST_T, NPC) res_pixel[NPC]; + + short int candidateRow = i, candidateCol = 0; + for (int loop = 0; loop < NPC; loop++) { + candidateCol = j * NPC + loop; + + if (bformat == XF_BAYER_GB) { + candidateCol += 1; + } + + if (bformat == XF_BAYER_GR) { + candidateRow += 1; + } + + if (bformat == XF_BAYER_RG) { + candidateCol += 1; + candidateRow += 1; + } + Core_Process_multi(imgblock, b, g, r, candidateRow, + candidateCol, loop); + + b = xf_satcast(b); + g = xf_satcast(g); + r = xf_satcast(r); + + if (XF_CHANNELS(DST_T, NPC) == 4) { + res_pixel[loop].range(4 * out_step - 1, 3 * out_step) = MAXVAL(out_step); + } + res_pixel[loop].range(3 * out_step - 1, 2 * out_step) = r; // xf_satcast(r); + res_pixel[loop].range(2 * out_step - 1, out_step) = g; // xf_satcast(g); + res_pixel[loop].range(out_step - 1, 0) = b; // xf_satcast(b); + } + XF_TNAME(DST_T, NPC) packed_res_pixel; + int pstep = XF_PIXELWIDTH(DST_T, NPC); + for (int ploop = 0; ploop < NPC; ploop++) { + packed_res_pixel.range(pstep + pstep * ploop - 1, pstep * ploop) = res_pixel[ploop]; + } + + dst_mat.write(write_index++, packed_res_pixel); + + } // end COL loop + } // end ROW loop +} + +template +void demosaicing_multi_wrap(xf::cv::Mat& src_mat, + xf::cv::Mat& dst_mat, + unsigned short bformat[STREAMS], + int stream_id) { +// clang-format off +#pragma HLS ARRAY_PARTITION variable= bformat dim=1 complete + // clang-format on + demosaicing_multi( + src_mat, dst_mat, bformat[stream_id]); + +} + } // namespace cv }; // namespace xf #endif diff --git a/vision/L1/include/imgproc/xf_gaincontrol.hpp b/vision/L1/include/imgproc/xf_gaincontrol.hpp index db86e759e3..ce7ec0a1d4 100644 --- a/vision/L1/include/imgproc/xf_gaincontrol.hpp +++ b/vision/L1/include/imgproc/xf_gaincontrol.hpp @@ -194,6 +194,179 @@ void gaincontrol(xf::cv::Mat& src1, (COLS >> XF_BITSHIFT(NPC))>(src1, dst, src1.rows, width, rgain, bgain); } +template +void gaincontrolkernel_multi(xf::cv::Mat& src1, + xf::cv::Mat& dst, + uint16_t height, + uint16_t width, + unsigned short rgain, + unsigned short bgain, + unsigned short ggain, + unsigned char bayer_p) { + ap_uint<13> i, j, k, l; + + const int STEP = XF_PIXELWIDTH(SRC_T, NPC); + + XF_TNAME(SRC_T, NPC) pxl_pack_out; + XF_TNAME(SRC_T, NPC) pxl_pack1, pxl_pack2; +RowLoop: + for (i = 0; i < height; i++) { +#pragma HLS LOOP_TRIPCOUNT min = ROWS max = ROWS +#pragma HLS LOOP_FLATTEN OFF + ColLoop: + for (j = 0; j < width; j++) { +#pragma HLS LOOP_TRIPCOUNT min = TC max = TC +#pragma HLS pipeline + + pxl_pack1 = (src1.read(i * width + j)); // reading from 1st input stream + + ProcLoop: + for (l = 0; l < (XF_NPIXPERCYCLE(NPC) * XF_CHANNELS(SRC_T, NPC)); l++) { + XF_PTNAME(DEPTH_SRC) + pxl1 = pxl_pack1.range(l * STEP + STEP - 1, l * STEP); // extracting each pixel in case of 8-pixel mode + XF_PTNAME(DEPTH_SRC) t; + bool cond1 = 0, cond2 = 0; + + if (NPC == XF_NPPC1) { + cond1 = (j % 2 == 0); + cond2 = (j % 2 != 0); + } else { + cond1 = ((l % 2) == 0); + cond2 = ((l % 2) != 0); + } + + if (bayer_p == XF_BAYER_RG) { + if (i % 2 == 0 && cond1) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * rgain) >> 7); + t = xf_satcast_gain(v2); + } else if (i % 2 != 0 && cond2) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * bgain) >> 7); + t = xf_satcast_gain(v2); + } else { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * ggain) >> 7); + t = xf_satcast_gain(v2); + } + } + if (bayer_p == XF_BAYER_GR) { + if (i % 2 == 0 && cond2) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * rgain) >> 7); + t = xf_satcast_gain(v2); + } else if (i % 2 != 0 && cond1) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * bgain) >> 7); + t = xf_satcast_gain(v2); + } else { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * ggain) >> 7); + t = xf_satcast_gain(v2); + } + } + if (bayer_p == XF_BAYER_BG) { + if (i % 2 == 0 && cond1) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * bgain) >> 7); + t = xf_satcast_gain(v2); + } else if (i % 2 != 0 && cond2) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * rgain) >> 7); + t = xf_satcast_gain(v2); + } else { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * ggain) >> 7); + t = xf_satcast_gain(v2); + } + } + if (bayer_p == XF_BAYER_GB) { + if (i % 2 == 0 && cond2) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * bgain) >> 7); + t = xf_satcast_gain(v2); + } else if (i % 2 != 0 && cond1) { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * rgain) >> 7); + t = xf_satcast_gain(v2); + } else { + XF_CTUNAME(SRC_T, NPC) v1 = pxl1; + int v2 = (int)((v1 * ggain) >> 7); + t = xf_satcast_gain(v2); + } + } + + pxl_pack_out.range(l * STEP + STEP - 1, l * STEP) = t; + } + + dst.write(i * width + j, pxl_pack_out); // writing into ouput stream + } + } +} + +template +void gaincontrol_multi(xf::cv::Mat& src1, + xf::cv::Mat& dst, + unsigned short rgain, + unsigned short bgain, + unsigned short ggain, + unsigned short bayer_p) { +#pragma HLS INLINE OFF +#ifndef __SYNTHESIS__ + assert(((src1.rows == dst.rows) && (src1.cols == dst.cols)) && "Input and output image should be of same size"); + assert(((src1.rows <= ROWS) && (src1.cols <= COLS)) && "ROWS and COLS should be greater than input image"); +#endif + short width = src1.cols >> XF_BITSHIFT(NPC); + + gaincontrolkernel_multi> XF_BITSHIFT(NPC))>(src1, dst, src1.rows, width, rgain, + bgain, ggain, bayer_p); +} + +template +void gaincontrol_multi_wrap(xf::cv::Mat& src1, + xf::cv::Mat& dst, + unsigned short rgain[STREAMS], + unsigned short bgain[STREAMS], + unsigned short ggain[STREAMS], + unsigned short bayer_p[STREAMS], + int strm_id) { +// clang-format off +#pragma HLS ARRAY_PARTITION variable= rgain dim=1 complete +#pragma HLS ARRAY_PARTITION variable= bgain dim=1 complete +#pragma HLS ARRAY_PARTITION variable= ggain dim=1 complete +#pragma HLS ARRAY_PARTITION variable= bayer_p dim=1 complete + + // clang-format on + + gaincontrol_multi( + src1, dst, rgain[strm_id], bgain[strm_id], ggain[strm_id], bayer_p[strm_id]); + +} + template & src, XFCVDEPTH_OUT_1, XF_WORDWIDTH(SRC_T, NPC), XF_WORDWIDTH(SRC_T, NPC), (COLS >> XF_BITSHIFT(NPC))>( src, dst, lut_table, height, width); } + +template +void gammacorrection_multi(xf::cv::Mat& src, + xf::cv::Mat& dst, + unsigned char lut_table[STREAMS][256 * XF_CHANNELS(SRC_T, NPC)], + int strm_id) { +// clang-format off +#pragma HLS ARRAY_PARTITION variable= lut_table dim=1 complete + // clang-format on + + gammacorrection(src, dst, lut_table[strm_id]); +} } } diff --git a/vision/L1/include/imgproc/xf_hdrmerge.hpp b/vision/L1/include/imgproc/xf_hdrmerge.hpp index 929bf1bc78..843dc65093 100644 --- a/vision/L1/include/imgproc/xf_hdrmerge.hpp +++ b/vision/L1/include/imgproc/xf_hdrmerge.hpp @@ -20,7 +20,6 @@ #ifndef __cplusplus #error C++ is needed to include this header #endif - typedef unsigned short uint16_t; typedef unsigned char uchar; @@ -77,6 +76,7 @@ void Hdrmerge_bayer(xf::cv::Mat& _src_ma //FILE *fp1 = fopen("imagevals_hls.txt","w"); +HDRmerge_LOOP: for(int i = 0;i< height;i++){ // clang-format off #pragma HLS LOOP_TRIPCOUNT min=ROWS max=ROWS @@ -121,6 +121,34 @@ void Hdrmerge_bayer(xf::cv::Mat& _src_ma } //fclose(fp1); } + +template +void Hdrmerge_bayer_multi(xf::cv::Mat& _src_mat1, + xf::cv::Mat& _src_mat2, + xf::cv::Mat& _dst_mat, + short wr_hls[STREAMS][NO_EXPS * NPC * W_SIZE], + int stream_id){ + + + +// clang-format off + #pragma HLS ARRAY_PARTITION variable=wr_hls dim=1 complete +// clang-format on + + Hdrmerge_bayer(_src_mat1, _src_mat2, _dst_mat, wr_hls[stream_id]); +} + } // namespace cv } // namespace xf diff --git a/vision/L1/include/imgproc/xf_ltm.hpp b/vision/L1/include/imgproc/xf_ltm.hpp index 269a5a46a0..fad3a37cf1 100644 --- a/vision/L1/include/imgproc/xf_ltm.hpp +++ b/vision/L1/include/imgproc/xf_ltm.hpp @@ -602,6 +602,108 @@ class LTM { } }; +// multistream + +template +class LTM_multi { + public: + static constexpr int MinMaxVArrSize = LTMTile::MinMaxVArrSize; + static constexpr int MinMaxHArrSize = LTMTile::MinMaxHArrSize; + + static void LTM_multistream(xf::cv::Mat& in, + int block_rows, + int block_cols, + XF_CTUNAME(IN_TYPE, NPC) omin_r[MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omax_r[MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omin_w[MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omax_w[MinMaxVArrSize][MinMaxHArrSize], + xf::cv::Mat& out, + bool& flag, + bool& eof) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + + if (!flag) { + LTM::process( + in, block_rows, block_cols, omin_r, omax_r, omin_w, omax_w, out); + if (eof) flag = 1; + } else { + LTM::process( + in, block_rows, block_cols, omin_w, omax_w, omin_r, omax_r, out); + if (eof) flag = 0; + } + return; + } +}; + +template +class LTM_multi_wrap { + public: + static constexpr int MinMaxVArrSize = LTMTile::MinMaxVArrSize; + static constexpr int MinMaxHArrSize = LTMTile::MinMaxHArrSize; + + static void LTM_multistream_wrap(xf::cv::Mat& in, + unsigned short block_rows[STREAMS], + unsigned short block_cols[STREAMS], + XF_CTUNAME(IN_TYPE, NPC) omin_r[STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omax_r[STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omin_w[STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(IN_TYPE, NPC) omax_w[STREAMS][MinMaxVArrSize][MinMaxHArrSize], + xf::cv::Mat& out, + bool flag[STREAMS], + bool eof[STREAMS], + int strm_id) { +// clang-format off +#pragma HLS ARRAY_PARTITION variable= block_rows dim=1 complete +#pragma HLS ARRAY_PARTITION variable= block_cols dim=1 complete +#pragma HLS ARRAY_PARTITION variable=omin_r dim=1 complete +#pragma HLS ARRAY_PARTITION variable=omin_r dim=2 cyclic factor=2 +#pragma HLS ARRAY_PARTITION variable=omin_r dim=3 cyclic factor=2 + +#pragma HLS ARRAY_PARTITION variable=omax_r dim=1 complete +#pragma HLS ARRAY_PARTITION variable=omax_r dim=2 cyclic factor=2 +#pragma HLS ARRAY_PARTITION variable=omax_r dim=3 cyclic factor=2 + +#pragma HLS ARRAY_PARTITION variable=omin_w dim=1 complete +#pragma HLS ARRAY_PARTITION variable=omin_w dim=2 cyclic factor=2 +#pragma HLS ARRAY_PARTITION variable=omin_w dim=3 cyclic factor=2 + +#pragma HLS ARRAY_PARTITION variable=omax_w dim=1 complete +#pragma HLS ARRAY_PARTITION variable=omax_w dim=2 cyclic factor=2 +#pragma HLS ARRAY_PARTITION variable=omax_w dim=3 cyclic factor=2 + +#pragma HLS ARRAY_PARTITION variable=flag dim=1 complete +#pragma HLS ARRAY_PARTITION variable=eof dim=1 complete + + + // clang-format on + + LTM_multi::LTM_multistream(in, block_rows[strm_id], block_cols[strm_id], omin_r[strm_id], + omax_r[strm_id], omin_w[strm_id], omax_w[strm_id], out, flag[strm_id], eof[strm_id]); + +} + +}; + } // namespace cv } // namespace xf diff --git a/vision/L1/lib/hw/8_16/stitcher.xo b/vision/L1/lib/hw/8_16/stitcher.xo index 6cbd16eb085db748d36306731bad017273c26a94..90f68be7a609329fe1cc6ba6d895cda26d27ad45 100644 GIT binary patch literal 319566 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¥~HB(A7aOQ~u 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 z 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 $(RUN_SCRIPT) @echo 'exit $$return_code' >> $(RUN_SCRIPT) DATA_FILE := $(XFLIB_DIR)/data/cropped1_128x128.png $(XFLIB_DIR)/data/cropped3_128x128.png $(XFLIB_DIR)/data/input-lut-33.txt + DATA_DIR := SD_FILES += $(RUN_SCRIPT) SD_FILES += $(EXE_FILE) diff --git a/vision/L3/examples/all_in_one/build/xf_config_params.h b/vision/L3/examples/all_in_one_adas/build/xf_config_params.h similarity index 75% rename from vision/L3/examples/all_in_one/build/xf_config_params.h rename to vision/L3/examples/all_in_one_adas/build/xf_config_params.h index 3acb5b08c3..06b1c5c4fb 100644 --- a/vision/L3/examples/all_in_one/build/xf_config_params.h +++ b/vision/L3/examples/all_in_one_adas/build/xf_config_params.h @@ -16,8 +16,8 @@ #define XF_NPPC XF_NPPC1 // XF_NPPC1 --1PIXEL , XF_NPPC2--2PIXEL ,XF_NPPC4--4 and XF_NPPC8--8PIXEL -#define XF_WIDTH 3840 // MAX_COLS -#define XF_HEIGHT 2160 // MAX_ROWS +#define XF_WIDTH 1920 // 3840 // MAX_COLS +#define XF_HEIGHT 1080 // 2160 // MAX_ROWS #define XF_BAYER_PATTERN XF_BAYER_RG // bayer pattern Used in gaincontrol, demosaicing, rgbir2bayer @@ -61,20 +61,22 @@ #define NUM_H_BLANK 8 /* Used in HDR */ #define XF_USE_URAM 0 // uram enable Used in HDR, rgbir2bayer, lut3d -#define XF_CV_DEPTH_imgInput 3 -#define XF_CV_DEPTH_hdr_out 3 -#define XF_CV_DEPTH_LEF 3 -#define XF_CV_DEPTH_SEF 3 -#define XF_CV_DEPTH_rggb_out 3 -#define XF_CV_DEPTH_fullir_out 3 -#define XF_CV_DEPTH_bpc_out 3 -#define XF_CV_DEPTH_blc_out 3 -#define XF_CV_DEPTH_lsc_out 3 -#define XF_CV_DEPTH_gain_out 3 -#define XF_CV_DEPTH_demosaic_out 3 -#define XF_CV_DEPTH_ltm_in 3 -#define XF_CV_DEPTH_aecin 3 -#define XF_CV_DEPTH_dst 3 -#define XF_CV_DEPTH_ccm 3 -#define XF_CV_DEPTH_3dlut 3 +#define XF_CV_DEPTH_imgInput 2 +#define XF_CV_DEPTH_hdr_out 2 +#define XF_CV_DEPTH_LEF 2 +#define XF_CV_DEPTH_SEF 2 +#define XF_CV_DEPTH_rggb_out 2 +#define XF_CV_DEPTH_fullir_out 2 +#define XF_CV_DEPTH_bpc_out 2 +#define XF_CV_DEPTH_blc_out 2 +#define XF_CV_DEPTH_lsc_out 2 +#define XF_CV_DEPTH_gain_out 2 +#define XF_CV_DEPTH_demosaic_out 2 +#define XF_CV_DEPTH_ltm_in 2 +#define XF_CV_DEPTH_aecin 2 +#define XF_CV_DEPTH_dst 2 +#define XF_CV_DEPTH_ccm 2 +#define XF_CV_DEPTH_3dlut 2 +#define XF_CV_DEPTH_awb_out 2 +#define XF_CV_DEPTH_lut_out 2 #define XF_CV_DEPTH_3XWIDTH 3 * XF_WIDTH diff --git a/vision/L3/examples/all_in_one/description.json b/vision/L3/examples/all_in_one_adas/description.json similarity index 94% rename from vision/L3/examples/all_in_one/description.json rename to vision/L3/examples/all_in_one_adas/description.json index b5795f618f..e2869c574e 100755 --- a/vision/L3/examples/all_in_one/description.json +++ b/vision/L3/examples/all_in_one_adas/description.json @@ -1,7 +1,7 @@ { - "name": "Xilinx all_in_one L3 Test", + "name": "Xilinx all_in_one_adas L3 Test", "description": [ - "all_in_one L3 function example" + "all_in_one_adas L3 function example" ], "flow": "vitis", "platform_allowlist": [ @@ -138,11 +138,11 @@ "host_exe": "isppipeline", "compiler": { "sources": [ - "LIB_DIR/L3/examples/all_in_one/xf_isp_tb.cpp", + "LIB_DIR/L3/examples/all_in_one_adas/xf_isp_tb.cpp", "LIB_DIR/ext/xcl2/xcl2.cpp" ], "includepaths": [ - "LIB_DIR/L3/examples/all_in_one/build" + "LIB_DIR/L3/examples/all_in_one_adas/build" ], "options": "-O3 -I$(XILINX_HLS)/include -I$(XILINX_HLS)/include -I$(XILINX_HLS)/include", "symbols": [ @@ -154,7 +154,7 @@ "compiler": { "symbols": [], "includepaths": [ - "LIB_DIR/L3/examples/all_in_one/build" + "LIB_DIR/L3/examples/all_in_one_adas/build" ], "clflags": [] } @@ -165,7 +165,7 @@ "accelerators": [ { "name": "ISPPipeline_accel", - "location": "LIB_DIR/L3/examples/all_in_one/xf_isp_accel.cpp", + "location": "LIB_DIR/L3/examples/all_in_one_adas/xf_isp_accel.cpp", "frequency": 150.0 } ], diff --git a/vision/L3/examples/all_in_one/utils.mk b/vision/L3/examples/all_in_one_adas/utils.mk similarity index 100% rename from vision/L3/examples/all_in_one/utils.mk rename to vision/L3/examples/all_in_one_adas/utils.mk diff --git a/vision/L3/examples/all_in_one/xf_isp_accel.cpp b/vision/L3/examples/all_in_one_adas/xf_isp_accel.cpp similarity index 87% rename from vision/L3/examples/all_in_one/xf_isp_accel.cpp rename to vision/L3/examples/all_in_one_adas/xf_isp_accel.cpp index 6284bbc376..ceab0c16b9 100644 --- a/vision/L3/examples/all_in_one/xf_isp_accel.cpp +++ b/vision/L3/examples/all_in_one_adas/xf_isp_accel.cpp @@ -16,9 +16,7 @@ #include "xf_isp_types.h" -using namespace std; static bool flag = 0; - static uint32_t hist0_awb[3][HIST_SIZE] = {0}; static uint32_t hist1_awb[3][HIST_SIZE] = {0}; @@ -340,11 +338,18 @@ void function_rgbir_or_fifo(xf::cv::Mat -void function_3d_lut(xf::cv::Mat& _dst, - xf::cv::Mat& ccm_3dlut_out, - ap_uint* lut, - int lutDim) { +template +void function_3dlut(xf::cv::Mat& _dst, + xf::cv::Mat& lut_out, + ap_uint* lut, + int lutDim) { // clang-format off #pragma HLS INLINE OFF // clang-format on @@ -353,39 +358,65 @@ void function_3d_lut(xf::cv::Mat& _dst, #pragma HLS DATAFLOW xf::cv::Array2xfMat(lut, lutMat); xf::cv::lut3d(_dst, lutMat, ccm_3dlut_out, lutDim); + XFCVDEPTH_3dlut, XFCVDEPTH_lutout>(_dst, lutMat, lut_out, lutDim); } -template -void function_ccm_3dlut_fifo(xf::cv::Mat& _dst, - xf::cv::Mat& ccm_3dlut_out, - int lutDim, - ap_uint* lut, - unsigned short mode_reg, - unsigned short height, - unsigned short width) { +template +void function_3dlut_fifo(xf::cv::Mat& _dst, + xf::cv::Mat& lut_out, + ap_uint* lut, + int lutDim, + unsigned short mode_reg, + unsigned short height, + unsigned short width) { +// clang-format off +#pragma HLS INLINE OFF + // clang-format on + + ap_uint<16> mode = (ap_uint<16>)mode_reg; + ap_uint<1> mode_lut3d = mode.range(LUT3D_EN_LSB, LUT3D_EN_LSB); + + if (mode_lut3d) { + function_3dlut(_dst, lut_out, lut, lutDim); + + } else { + fifo_copy(_dst, lut_out, + height, width); + } +} + +template +void function_ccm_fifo(xf::cv::Mat& awb_out, + xf::cv::Mat& ccm_out, + unsigned short mode_reg, + unsigned short height, + unsigned short width) { // clang-format off #pragma HLS INLINE OFF // clang-format on ap_uint<16> mode = (ap_uint<16>)mode_reg; ap_uint<1> mode_ccm = mode.range(CCM_EN_LSB, CCM_EN_LSB); - ap_uint<1> mode_lut_3d = mode.range(LUT3D_EN_LSB, LUT3D_EN_LSB); - - if (mode_lut_3d) { - function_3d_lut(_dst, ccm_3dlut_out, - lut, lutDim); - } else if (mode_ccm) { - xf::cv::colorcorrectionmatrix(_dst, ccm_3dlut_out); + + if (mode_ccm) { + xf::cv::colorcorrectionmatrix(awb_out, ccm_out); } else { - fifo_copy(_dst, ccm_3dlut_out, + fifo_copy(awb_out, ccm_out, height, width); } } -template -void function_csc(xf::cv::Mat& ccm_3dlut_out, +template +void function_csc(xf::cv::Mat& csc_out, ap_uint* img_out, unsigned short height, unsigned short width) { @@ -393,18 +424,18 @@ void function_csc(xf::cv::Mat& ccm_3dlut_ #pragma HLS INLINE OFF // clang-format on - xf::cv::Mat _imgOutput(height, width); + xf::cv::Mat _imgOutput(height, width); // clang-format off #pragma HLS DATAFLOW // clang-format on - xf::cv::rgb2yuyv(ccm_3dlut_out, _imgOutput); - xf::cv::xfMat2Array(_imgOutput, img_out); + xf::cv::rgb2yuyv(csc_out, _imgOutput); + xf::cv::xfMat2Array(_imgOutput, img_out); } -template -void function_csc_or_mat_array(xf::cv::Mat& ccm_3dlut_out, +template +void function_csc_or_mat_array(xf::cv::Mat& csc_out, ap_uint* img_out, unsigned short mode_reg, unsigned short height, @@ -417,10 +448,9 @@ void function_csc_or_mat_array(xf::cv::Mat mode_csc = mode.range(CSC_EN_LSB, CSC_EN_LSB); if (mode_csc) { - function_csc(ccm_3dlut_out, img_out, height, width); + function_csc(csc_out, img_out, height, width); } else { - xf::cv::xfMat2Array(ccm_3dlut_out, - img_out); + xf::cv::xfMat2Array(csc_out, img_out); } } @@ -488,10 +518,11 @@ void ISPpipeline(ap_uint* img_inp, xf::cv::Mat LscOut(height, width); xf::cv::Mat gain_out(height, width); xf::cv::Mat demosaic_out(height, width); - xf::cv::Mat ltm_in(height, width); + xf::cv::Mat awb_out(height, width); + xf::cv::Mat ccm_out(height, width); xf::cv::Mat aecin(height, width); xf::cv::Mat _dst(height, width); - xf::cv::Mat ccm_3dlut_out(height, width); + xf::cv::Mat lut_out(height, width); // clang-format off #pragma HLS DATAFLOW @@ -513,14 +544,14 @@ void ISPpipeline(ap_uint* img_inp, hdr_out, rggb_out, img_out_ir, R_IR_C1_wgts, R_IR_C2_wgts, B_at_R_wgts, IR_at_R_wgts, IR_at_B_wgts, sub_wgts, mode_reg, height, width); - xf::cv::badpixelcorrection( - rggb_out, bpc_out); + xf::cv::blackLevelCorrection(rggb_out, blc_out, BLACK_LEVEL, mul_fact); - xf::cv::blackLevelCorrection(bpc_out, blc_out, BLACK_LEVEL, mul_fact); + xf::cv::badpixelcorrection( + blc_out, bpc_out); - xf::cv::Lscdistancebased(blc_out, LscOut); + xf::cv::Lscdistancebased(bpc_out, LscOut); xf::cv::gaincontrol(LscOut, gain_out, rgain, bgain); @@ -528,25 +559,28 @@ void ISPpipeline(ap_uint* img_inp, xf::cv::demosaicing(gain_out, demosaic_out); - function_awb( - demosaic_out, ltm_in, hist0, hist1, gain0, gain1, height, width, mode_reg, thresh); + function_awb( + demosaic_out, awb_out, hist0, hist1, gain0, gain1, height, width, mode_reg, thresh); + + function_ccm_fifo( + awb_out, ccm_out, mode_reg, height, width); if (XF_DST_T == XF_8UC3) { - fifo_copy( - ltm_in, aecin, height, width); + fifo_copy(ccm_out, aecin, + height, width); } else { - function_tm( - ltm_in, aecin, omin_r, omax_r, omin_w, omax_w, blk_height, blk_width, mean1, mean2, L_max1, L_max2, L_min1, + function_tm( + ccm_out, aecin, omin_r, omax_r, omin_w, omax_w, blk_height, blk_width, mean1, mean2, L_max1, L_max2, L_min1, L_min2, c1, c2, mode_reg, height, width); } xf::cv::gammacorrection( aecin, _dst, gamma_lut); - function_ccm_3dlut_fifo(_dst, ccm_3dlut_out, lutDim, lut, mode_reg, height, width); + function_3dlut_fifo(_dst, lut_out, lut, lutDim, mode_reg, height, width); - function_csc_or_mat_array(ccm_3dlut_out, img_out, mode_reg, - height, width); + function_csc_or_mat_array(lut_out, img_out, mode_reg, + height, width); } /********************************************************************************* * Function: ISPPipeline_accel diff --git a/vision/L3/examples/all_in_one/xf_isp_tb.cpp b/vision/L3/examples/all_in_one_adas/xf_isp_tb.cpp similarity index 99% rename from vision/L3/examples/all_in_one/xf_isp_tb.cpp rename to vision/L3/examples/all_in_one_adas/xf_isp_tb.cpp index b1ff7b0263..ad58f6442c 100644 --- a/vision/L3/examples/all_in_one/xf_isp_tb.cpp +++ b/vision/L3/examples/all_in_one_adas/xf_isp_tb.cpp @@ -23,10 +23,10 @@ unsigned char awb_en = 1; unsigned char hdr_en = 1; unsigned char rgbir_en = 0; unsigned char qnd_en = 0; -unsigned char ltm_en = 0; -unsigned char gtm_en = 1; +unsigned char ltm_en = 1; +unsigned char gtm_en = 0; unsigned char ccm_en = 1; -unsigned char lut3d_en = 0; +unsigned char lut3d_en = 1; unsigned char csc_en = 1; int g_value_com(unsigned short& value_in, float& alpha, float& ob) { @@ -291,7 +291,6 @@ int main(int argc, char** argv) { mode_reg = (awb_en << AWB_EN_LSB) + (hdr_en << HDR_EN_LSB) + (rgbir_en << RGBIR_EN_LSB) + (qnd_en << QnD_EN_LSB) + (ltm_en << LTM_EN_LSB) + (gtm_en << GTM_EN_LSB) + (ccm_en << CCM_EN_LSB) + (lut3d_en << LUT3D_EN_LSB) + (csc_en << CSC_EN_LSB); - size_t image_out_size_bytes; size_t image_in_size_bytes; @@ -580,7 +579,6 @@ int main(int argc, char** argv) { diff_prof = end - start; std::cout << (diff_prof / 1000000) << "ms" << std::endl; - // Copying Device result data to Host memory q.enqueueReadBuffer(imageFromDevice, CL_TRUE, 0, image_out_size_bytes, out_img.data); if (rgbir_en) { @@ -589,7 +587,6 @@ int main(int argc, char** argv) { } q.finish(); - /////////////////////////////////////// end of CL //////////////////////// // Write output image diff --git a/vision/L3/examples/all_in_one/xf_isp_types.h b/vision/L3/examples/all_in_one_adas/xf_isp_types.h similarity index 100% rename from vision/L3/examples/all_in_one/xf_isp_types.h rename to vision/L3/examples/all_in_one_adas/xf_isp_types.h diff --git a/vision/L3/examples/all_in_one/xrt.ini b/vision/L3/examples/all_in_one_adas/xrt.ini similarity index 100% rename from vision/L3/examples/all_in_one/xrt.ini rename to vision/L3/examples/all_in_one_adas/xrt.ini diff --git a/vision/L3/examples/colordetect/build/xf_config_params.h b/vision/L3/examples/colordetect/build/xf_config_params.h index 20c01ae935..c5674bdc26 100755 --- a/vision/L3/examples/colordetect/build/xf_config_params.h +++ b/vision/L3/examples/colordetect/build/xf_config_params.h @@ -14,10 +14,10 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_RGB2HSV 2 -#define XF_CV_DEPTH_HELP_1 3 -#define XF_CV_DEPTH_HELP_2 4 -#define XF_CV_DEPTH_HELP_3 5 -#define XF_CV_DEPTH_HELP_4 6 -#define XF_CV_DEPTH_OUT_1 7 +#define XF_CV_DEPTH_HELP_1 2 +#define XF_CV_DEPTH_HELP_2 2 +#define XF_CV_DEPTH_HELP_3 2 +#define XF_CV_DEPTH_HELP_4 2 +#define XF_CV_DEPTH_OUT_1 2 diff --git a/vision/L3/examples/cornertracker/build/xf_config_params.h b/vision/L3/examples/cornertracker/build/xf_config_params.h index 01981f12e1..55f9bf499f 100644 --- a/vision/L3/examples/cornertracker/build/xf_config_params.h +++ b/vision/L3/examples/cornertracker/build/xf_config_params.h @@ -38,17 +38,17 @@ #define MAXCORNERS 10000 #define XF_USE_URAM false -#define XF_CV_DEPTH_IN_HARRIS 1 -#define XF_CV_DEPTH_OUT_HARRIS 3 +#define XF_CV_DEPTH_IN_HARRIS 2 +#define XF_CV_DEPTH_OUT_HARRIS 2 #define XF_CV_DEPTH_CORNER_UPDATE -1 -#define XF_CV_DEPTH_PDOF_1 3 -#define XF_CV_DEPTH_PDOF_2 3 -#define XF_CV_DEPTH_PDOF_3 3 -#define XF_CV_DEPTH_PDOF_4 3 +#define XF_CV_DEPTH_PDOF_1 2 +#define XF_CV_DEPTH_PDOF_2 2 +#define XF_CV_DEPTH_PDOF_3 2 +#define XF_CV_DEPTH_PDOF_4 2 -#define XF_CV_DEPTH_PD_1 3 -#define XF_CV_DEPTH_PD_2 3 -#define XF_CV_DEPTH_PD_3 3 -#define XF_CV_DEPTH_PD_4 3 \ No newline at end of file +#define XF_CV_DEPTH_PD_1 2 +#define XF_CV_DEPTH_PD_2 2 +#define XF_CV_DEPTH_PD_3 2 +#define XF_CV_DEPTH_PD_4 2 \ No newline at end of file diff --git a/vision/L3/examples/defect_detection/Makefile b/vision/L3/examples/defect_detection/Makefile old mode 100755 new mode 100644 index 79a8e1df4b..e638a15f8f --- a/vision/L3/examples/defect_detection/Makefile +++ b/vision/L3/examples/defect_detection/Makefile @@ -35,7 +35,7 @@ help:: $(ECHO) " Run the sdk.sh script from the common-image directory to install sysroot using the command : ./sdk.sh -y -d ./ -p " $(ECHO) " Unzip the rootfs file : gunzip ./rootfs.ext4.gz" $(ECHO) " export SYSROOT=< path-to-platform-sysroot >" - $(ECHO) " b. User could also define SYSROOT, K_IMAGE and ROOTFS by themselves: " + $(ECHO) " b.User could also define SYSROOT, K_IMAGE and ROOTFS by themselves: " $(ECHO) " export SYSROOT=< path-to-platform-sysroot >" $(ECHO) " export K_IMAGE=< path-to-Image-files >" $(ECHO) " export ROOTFS=< path-to-rootfs >" @@ -43,7 +43,7 @@ help:: $(ECHO) " make clean " $(ECHO) " Command to remove the generated non-hardware files." $(ECHO) "" - $(ECHO) " make cleanall" + $(ECHO) " make cleanall TARGET=" $(ECHO) " Command to remove all the generated files." $(ECHO) "" @@ -455,11 +455,11 @@ endif ############################## Cleaning Rules ############################## cleanh: -$(RMDIR) $(EXE_FILE) vitis_* TempConfig system_estimate.xtxt *.rpt .run/ - -$(RMDIR) src/*.ll _xocc_* .Xil dltmp* xmltmp* *.log *.jou *.wcfg *.wdb sample_link.ini sample_compile.ini obj* bin* *.csv *.jpg *.jpeg *.png + -$(RMDIR) src/*.ll _xocc_* .Xil dltmp* xmltmp* *.log *.jou *.wcfg *.wdb sample_link.ini sample_compile.ini obj* bin* *.csv *.jpg *.jpeg *.png *.db cleank: -$(RMDIR) $(BUILD_DIR)/*.xclbin _vimage *xclbin.run_summary qemu-memory-_* emulation/ _vimage/ pl*start_simulation. sh *.xclbin - -$(RMDIR) _x_temp.* + -$(RMDIR) _x_temp.* _x* cleanall: cleanh cleank -$(RMDIR) $(BUILD_DIR) emconfig.json *.html $(TEMP_DIR) $(CUR_DIR)/reports *.csv *.run_summary $(CUR_DIR)/*.raw package_* $(BUILD_DIR)/run_script.sh .ipcache *.str diff --git a/vision/L3/examples/defect_detection/description.json b/vision/L3/examples/defect_detection/description.json old mode 100755 new mode 100644 diff --git a/vision/L3/examples/defect_detection/utils.mk b/vision/L3/examples/defect_detection/utils.mk old mode 100755 new mode 100644 diff --git a/vision/L3/examples/defect_detection/xf_cca_custom_accel.cpp b/vision/L3/examples/defect_detection/xf_cca_custom_accel.cpp index ec34a1f35f..d1cdc78a43 100644 --- a/vision/L3/examples/defect_detection/xf_cca_custom_accel.cpp +++ b/vision/L3/examples/defect_detection/xf_cca_custom_accel.cpp @@ -28,7 +28,7 @@ void cca_custom_accel(uint8_t* in_ptr, uint8_t* fwd_ptr, uint8_t* out_ptr, int* #pragma HLS INTERFACE s_axilite port=return // clang-format on - xf::cv::Mat rev_out_mat(height, width); + xf::cv::Mat rev_out_mat(height, width); // clang-format off #pragma HLS DATAFLOW @@ -36,8 +36,8 @@ void cca_custom_accel(uint8_t* in_ptr, uint8_t* fwd_ptr, uint8_t* out_ptr, int* int tmp_def; - xf::cv::rev_cca(in_ptr, rev_out_mat, height, width); - xf::cv::pass_2(fwd_ptr, rev_out_mat, out_ptr, tmp_def, height, width); + xf::cv::rev_cca(in_ptr, rev_out_mat, height, width); + xf::cv::pass_2(fwd_ptr, rev_out_mat, out_ptr, tmp_def, height, width); // xf::cv::ccaCustom(fwd_ptr, in_ptr, rev_out_mat, out_ptr, tmp_def, height, // width); diff --git a/vision/L3/examples/defect_detection/xf_gaussian_otsu_accel.cpp b/vision/L3/examples/defect_detection/xf_gaussian_otsu_accel.cpp index 9502453f79..9a822592a1 100644 --- a/vision/L3/examples/defect_detection/xf_gaussian_otsu_accel.cpp +++ b/vision/L3/examples/defect_detection/xf_gaussian_otsu_accel.cpp @@ -28,6 +28,7 @@ void gaussian_otsu_accel(ap_uint* img_inp, #pragma HLS INTERFACE m_axi port=img_inp offset=slave bundle=gmem1 #pragma HLS INTERFACE m_axi port=img_out offset=slave bundle=gmem2 #pragma HLS INTERFACE m_axi port=Otsuval offset=slave bundle=gmem3 + #pragma HLS INTERFACE m_axi port=array_params depth=12 #pragma HLS INTERFACE s_axilite port=sigma #pragma HLS INTERFACE s_axilite port=rows #pragma HLS INTERFACE s_axilite port=cols diff --git a/vision/L3/examples/defect_detection/xf_preprocess_accel.cpp b/vision/L3/examples/defect_detection/xf_preprocess_accel.cpp index b9adceb299..eaa57ea48c 100644 --- a/vision/L3/examples/defect_detection/xf_preprocess_accel.cpp +++ b/vision/L3/examples/defect_detection/xf_preprocess_accel.cpp @@ -19,12 +19,13 @@ extern "C" { void preprocess_accel(ap_uint* img_inp, ap_uint* img_out, - uint8_t* fw_img_out, + ap_uint* fw_img_out, int* obj_pix, unsigned char thresh, unsigned char maxval, int rows, - int cols) { + int cols, + int stride) { // clang-format off #pragma HLS INTERFACE m_axi port=img_inp offset=slave bundle=gmem1 #pragma HLS INTERFACE m_axi port=img_out offset=slave bundle=gmem2 @@ -35,6 +36,7 @@ void preprocess_accel(ap_uint* img_inp, #pragma HLS INTERFACE s_axilite port=maxval #pragma HLS INTERFACE s_axilite port=rows #pragma HLS INTERFACE s_axilite port=cols + #pragma HLS INTERFACE s_axilite port=stride #pragma HLS INTERFACE s_axilite port=return // clang-format on @@ -48,6 +50,7 @@ void preprocess_accel(ap_uint* img_inp, xf::cv::Mat out_mat(rows, cols); + xf::cv::Mat in_mat_fw(rows, cols); xf::cv::Mat out_mat_fw(rows, cols); xf::cv::Mat out_mat_ret(rows, cols); @@ -66,11 +69,14 @@ void preprocess_accel(ap_uint* img_inp, xf::cv::xfMat2Array(imgOutput, img_out);*/ xf::cv::duplicateMat( - out_mat, out_mat_fw, out_mat_ret); + out_mat, in_mat_fw, out_mat_ret); - xf::cv::fw_cca(out_mat_fw, fw_img_out, tmp_obj, rows, cols); + xf::cv::fw_cca(in_mat_fw, out_mat_fw, tmp_obj, rows, cols); - xf::cv::xfMat2Array(out_mat_ret, img_out); + xf::cv::xfMat2Array(out_mat_ret, img_out, stride); + + xf::cv::xfMat2Array(out_mat_fw, fw_img_out, + stride); *obj_pix = tmp_obj; } diff --git a/vision/L3/examples/defect_detection/xf_threshold_config.h b/vision/L3/examples/defect_detection/xf_threshold_config.h index b83c28a8a0..5a83ce961f 100644 --- a/vision/L3/examples/defect_detection/xf_threshold_config.h +++ b/vision/L3/examples/defect_detection/xf_threshold_config.h @@ -41,6 +41,7 @@ typedef ap_uint<64> ap_uint64_t; /* set the height and weight */ #define HEIGHT 1080 #define WIDTH 1920 +#define STRIDE 2048 #define RGB2GRAY 0 #define GRAY 1 @@ -48,13 +49,6 @@ typedef ap_uint<64> ap_uint64_t; #define NPIX XF_NPPC1 #define NPC1 XF_NPPC1 -#if MPC -#define NPIX XF_NPPC8 -#endif -#if SPC -#define NPIX XF_NPPC1 -#endif - #define TYPE XF_8UC1 #if L1NORM diff --git a/vision/L3/examples/defect_detection/xf_threshold_tb.cpp b/vision/L3/examples/defect_detection/xf_threshold_tb.cpp index 1ac27463c2..93e781b0ec 100644 --- a/vision/L3/examples/defect_detection/xf_threshold_tb.cpp +++ b/vision/L3/examples/defect_detection/xf_threshold_tb.cpp @@ -96,12 +96,13 @@ int main(int argc, char** argv) { in_height = in_img.rows; in_depth = in_img.depth(); + int stride = STRIDE; fprintf(stderr, "row = %d col = %d depth = %d\n", in_height, in_width, in_depth); ocv_ref.create(in_img.rows, in_img.cols, in_img.depth()); out_img.create(in_img.rows, in_img.cols, CV_8UC1); - preout_img.create(in_img.rows, in_img.cols, CV_8UC1); - fw_outimg.create(in_img.rows, in_img.cols, CV_8UC1); + preout_img.create(in_img.rows, stride, CV_8UC1); + fw_outimg.create(in_img.rows, stride, CV_8UC1); diff.create(in_img.rows, in_img.cols, in_img.depth()); //////////////// reference code //////////////// @@ -193,8 +194,8 @@ int main(int argc, char** argv) { OCL_CHECK(err, cl::Kernel krnl(program, "preprocess_accel", &err)); OCL_CHECK(err, cl::Buffer imageToDevice(context, CL_MEM_READ_ONLY, (height * width), NULL, &err)); - OCL_CHECK(err, cl::Buffer imageFromDevice(context, CL_MEM_READ_WRITE, (height * width), NULL, &err)); - OCL_CHECK(err, cl::Buffer cca_tempbuffer(context, CL_MEM_READ_WRITE, (height * width), NULL, &err)); + OCL_CHECK(err, cl::Buffer imageFromDevice(context, CL_MEM_READ_WRITE, (height * stride), NULL, &err)); + OCL_CHECK(err, cl::Buffer cca_tempbuffer(context, CL_MEM_READ_WRITE, (height * stride), NULL, &err)); OCL_CHECK(err, cl::Buffer obj_pix_buffer(context, CL_MEM_READ_WRITE, 4, NULL, &err)); // Profiling Objects @@ -210,16 +211,16 @@ int main(int argc, char** argv) { unsigned char* tmp_out_data1 = (unsigned char*)malloc(height * width); unsigned char* tmp_out_data2 = (unsigned char*)malloc(height * width); cv::Mat cca_outimg; - cca_outimg.create(in_img.rows, in_img.cols, CV_8UC1); + cca_outimg.create(in_img.rows, stride, CV_8UC1); int def_pix, obj_pix; double time_taken; OCL_CHECK(err, cl::Kernel cca_krnl(program, "cca_custom_accel", &err)); - OCL_CHECK(err, cl::Buffer cca_imageToDevice(context, CL_MEM_READ_ONLY, (height * width), NULL, &err)); - OCL_CHECK(err, cl::Buffer cca_tempbuffer_2(context, CL_MEM_READ_ONLY, (height * width), NULL, &err)); - OCL_CHECK(err, cl::Buffer cca_imageFromDevice(context, CL_MEM_READ_WRITE, (height * width), NULL, &err)); - OCL_CHECK(err, cl::Buffer def_pix_buffer(context, CL_MEM_READ_WRITE, (height * width), NULL, &err)); + OCL_CHECK(err, cl::Buffer cca_imageToDevice(context, CL_MEM_READ_ONLY, (height * stride), NULL, &err)); + OCL_CHECK(err, cl::Buffer cca_tempbuffer_2(context, CL_MEM_READ_ONLY, (height * stride), NULL, &err)); + OCL_CHECK(err, cl::Buffer cca_imageFromDevice(context, CL_MEM_READ_WRITE, (height * stride), NULL, &err)); + OCL_CHECK(err, cl::Buffer def_pix_buffer(context, CL_MEM_READ_WRITE, 4, NULL, &err)); // Set the kernel arguments OCL_CHECK(err, err = cca_krnl.setArg(0, cca_imageToDevice)); @@ -227,7 +228,7 @@ int main(int argc, char** argv) { OCL_CHECK(err, err = cca_krnl.setArg(2, cca_imageFromDevice)); OCL_CHECK(err, err = cca_krnl.setArg(3, def_pix_buffer)); OCL_CHECK(err, err = cca_krnl.setArg(4, height)); - OCL_CHECK(err, err = cca_krnl.setArg(5, width)); + OCL_CHECK(err, err = cca_krnl.setArg(5, stride)); OCL_CHECK(err, q.enqueueWriteBuffer(imageToGaus, // buffer on the FPGA CL_TRUE, // blocking call @@ -308,6 +309,7 @@ int main(int argc, char** argv) { OCL_CHECK(err, err = krnl.setArg(5, maxval)); OCL_CHECK(err, err = krnl.setArg(6, height)); OCL_CHECK(err, err = krnl.setArg(7, width)); + OCL_CHECK(err, err = krnl.setArg(8, stride)); OCL_CHECK(err, q.enqueueWriteBuffer(imageToDevice, CL_TRUE, 0, (height * width), out_img.data)); @@ -330,8 +332,8 @@ int main(int argc, char** argv) { std::cout << (th_diff_prof / 1000000) << "pre-process took ms" << std::endl; // Copying Device result data to Host memory - q.enqueueReadBuffer(imageFromDevice, CL_TRUE, 0, (height * width), preout_img.data, nullptr, &event_sp); - q.enqueueReadBuffer(cca_tempbuffer, CL_TRUE, 0, (height * width), fw_outimg.data, nullptr, &event_sp); + q.enqueueReadBuffer(imageFromDevice, CL_TRUE, 0, (height * stride), preout_img.data, nullptr, &event_sp); + q.enqueueReadBuffer(cca_tempbuffer, CL_TRUE, 0, (height * stride), fw_outimg.data, nullptr, &event_sp); q.enqueueReadBuffer(obj_pix_buffer, CL_TRUE, 0, 4, &obj_pix); #if ENABLE_DEBUG_LOG @@ -340,6 +342,7 @@ int main(int argc, char** argv) { #if ENABLE_INERMEDIATE_STORE imwrite("preprocess.jpg", preout_img); + imwrite("fw_img.jpg", fw_outimg); #endif q.finish(); @@ -355,8 +358,8 @@ int main(int argc, char** argv) { cl_kernel_mgr::exec_all(); */ - OCL_CHECK(err, q.enqueueWriteBuffer(cca_imageToDevice, CL_TRUE, 0, (height * width), preout_img.data)); - OCL_CHECK(err, q.enqueueWriteBuffer(cca_tempbuffer_2, CL_TRUE, 0, (height * width), fw_outimg.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(cca_imageToDevice, CL_TRUE, 0, (height * stride), preout_img.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(cca_tempbuffer_2, CL_TRUE, 0, (height * stride), fw_outimg.data)); OCL_CHECK(err, err = q.enqueueTask(cca_krnl, NULL, &cca_event_sp)); clWaitForEvents(1, (const cl_event*)&cca_event_sp); @@ -368,7 +371,7 @@ int main(int argc, char** argv) { cca_diff_prof = cca_end - cca_start; std::cout << (cca_diff_prof / 1000000) << "cca took ms" << std::endl; - q.enqueueReadBuffer(cca_imageFromDevice, CL_TRUE, 0, (height * width), cca_outimg.data); + q.enqueueReadBuffer(cca_imageFromDevice, CL_TRUE, 0, (height * stride), cca_outimg.data); q.enqueueReadBuffer(def_pix_buffer, CL_TRUE, 0, 4, &def_pix); printf("Mango Pixel = %d Defect Pixel = %d\n", obj_pix, def_pix); diff --git a/vision/L3/examples/gaussiandifference/build/xf_config_params.h b/vision/L3/examples/gaussiandifference/build/xf_config_params.h index 56cc215f94..784955aba0 100644 --- a/vision/L3/examples/gaussiandifference/build/xf_config_params.h +++ b/vision/L3/examples/gaussiandifference/build/xf_config_params.h @@ -29,10 +29,10 @@ #define MPC 0 #define SPC 1 -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L3/examples/isp_multistream/Makefile b/vision/L3/examples/isp_multistream/Makefile index 1da5f81767..308856241b 100644 --- a/vision/L3/examples/isp_multistream/Makefile +++ b/vision/L3/examples/isp_multistream/Makefile @@ -272,7 +272,8 @@ endif @echo 'fi' >> $(RUN_SCRIPT) @echo 'echo "INFO: Embedded host run completed."' >> $(RUN_SCRIPT) @echo 'exit $$return_code' >> $(RUN_SCRIPT) -DATA_FILE := $(XFLIB_DIR)/data/128x128_3_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_3_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_2_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_2_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_1_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_1_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_bayer_16bit_sef.png $(custom_data_file) +DATA_FILE := $(XFLIB_DIR)/data/128x128_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_1_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_1_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_2_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_2_bayer_16bit_lef.png $(XFLIB_DIR)/data/128x128_3_bayer_16bit_sef.png $(XFLIB_DIR)/data/128x128_3_bayer_16bit_lef.png $(custom_data_file) + DATA_DIR := $(custom_data_dir) SD_FILES += $(RUN_SCRIPT) SD_FILES += $(EXE_FILE) @@ -405,4 +406,4 @@ cleanall: cleanh cleank -$(RMDIR) $(CUR_DIR)/Work $(CUR_DIR)/*.xpe $(CUR_DIR)/hw.o $(CUR_DIR)/*.xsa $(CUR_DIR)/xnwOut -$(RMDIR) -clean: cleanh \ No newline at end of file +clean: cleanh diff --git a/vision/L3/examples/isp_multistream/build/xf_config_params.h b/vision/L3/examples/isp_multistream/build/xf_config_params.h index 83fb75f5cd..43a122096f 100644 --- a/vision/L3/examples/isp_multistream/build/xf_config_params.h +++ b/vision/L3/examples/isp_multistream/build/xf_config_params.h @@ -61,9 +61,8 @@ #define AEC_EN 0 #define XF_AXI_GBR 1 - -#define INPUT_PTR_WIDTH 32 -#define OUTPUT_PTR_WIDTH 32 +#define INPUT_PTR_WIDTH 64 +#define OUTPUT_PTR_WIDTH 64 #define NUM_V_BLANK_LINES 8 #define NUM_H_BLANK 8 diff --git a/vision/L3/examples/isp_multistream/xf_isp_accel.cpp b/vision/L3/examples/isp_multistream/xf_isp_accel.cpp index 69e81afe5e..c6e2ad2e89 100644 --- a/vision/L3/examples/isp_multistream/xf_isp_accel.cpp +++ b/vision/L3/examples/isp_multistream/xf_isp_accel.cpp @@ -27,9 +27,11 @@ static XF_CTUNAME(XF_DST_T, XF_NPPC) omax_r[NUM_STREAMS][MinMaxVArrSize][MinMaxH static XF_CTUNAME(XF_DST_T, XF_NPPC) omin_w[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize]; static XF_CTUNAME(XF_DST_T, XF_NPPC) omax_w[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize]; -static int igain_0[3] = {0}; -static int igain_1[3] = {0}; -static bool flag[NUM_STREAMS] = {0}; +static int igain_0[NUM_STREAMS][3] = {0}; +static int igain_1[NUM_STREAMS][3] = {0}; + +static bool flag_awb[NUM_STREAMS] = {0}; +static bool flag_ltm[NUM_STREAMS] = {0}; template void fifo_copy(xf::cv::Mat& demosaic_out, @@ -62,62 +64,38 @@ void fifo_copy(xf::cv::Mat& demosaic_out } } } -template -void fifo_awb(xf::cv::Mat& demosaic_out, - xf::cv::Mat& ltm_in, - uint32_t hist0[3][HIST_SIZE], - uint32_t hist1[3][HIST_SIZE], - int gain0[3], - int gain1[3], - unsigned short height, - unsigned short width, - float thresh) { -// clang-format off -#pragma HLS INLINE OFF - // clang-format on - xf::cv::Mat impop(height, width); - - float inputMin = 0.0f; - float inputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; - float outputMin = 0.0f; - float outputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; - -// clang-format off -#pragma HLS DATAFLOW - // clang-format on - if (WB_TYPE) { - xf::cv::AWBhistogram(demosaic_out, impop, hist0, thresh, inputMin, inputMax, outputMin, - outputMax); - xf::cv::AWBNormalization(impop, ltm_in, hist1, thresh, inputMin, inputMax, outputMin, - outputMax); - - } else { - xf::cv::AWBChannelGain( - demosaic_out, impop, thresh, gain0); - xf::cv::AWBGainUpdate( - impop, ltm_in, thresh, gain1); - } -} -template +template void function_awb(xf::cv::Mat& demosaic_out, xf::cv::Mat& ltm_in, - uint32_t hist0[3][HIST_SIZE], - uint32_t hist1[3][HIST_SIZE], - int gain0[3], - int gain1[3], + uint32_t hist0[STREAMS][3][HIST_SIZE], + uint32_t hist1[STREAMS][3][HIST_SIZE], + int gain0[STREAMS][3], + int gain1[STREAMS][3], unsigned short height, unsigned short width, - // unsigned char mode_reg, - float thresh) { + bool flag_awb[STREAMS], + bool eof_awb[STREAMS], + unsigned short pawb[STREAMS], + int stream_id) { // clang-format off #pragma HLS INLINE OFF // clang-format on + float inputMin = 0.0f; + float inputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; + float outputMin = 0.0f; + float outputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; - fifo_awb( - demosaic_out, ltm_in, hist0, hist1, gain0, gain1, height, width, thresh); + if (WB_TYPE) { + xf::cv::hist_nor_awb_multi(demosaic_out, ltm_in, hist0, hist1, height, width, + inputMin, inputMax, outputMin, outputMax, flag_awb, + eof_awb, pawb, stream_id); + } else { + xf::cv::chgain_update_awb_multi(demosaic_out, ltm_in, gain0, gain1, height, + width, flag_awb, eof_awb, pawb, stream_id); + } } static constexpr int MAX_HEIGHT = STRM_HEIGHT * 2; @@ -126,21 +104,50 @@ void Streampipeline(ap_uint* img_inp, ap_uint* img_out, unsigned short height, unsigned short width, - uint32_t hist0[3][HIST_SIZE], - uint32_t hist1[3][HIST_SIZE], - int gain0[3], - int gain1[3], - struct ispparams_config params, - unsigned char _gamma_lut[256 * 3], - short wr_hls[NO_EXPS * XF_NPPC * W_B_SIZE], - XF_CTUNAME(XF_DST_T, XF_NPPC) omin_r[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omax_r[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omin_w[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omax_w[MinMaxVArrSize][MinMaxHArrSize]) { + uint32_t hist0[NUM_STREAMS][3][HIST_SIZE], + uint32_t hist1[NUM_STREAMS][3][HIST_SIZE], + int gain0[NUM_STREAMS][3], + int gain1[NUM_STREAMS][3], + bool flag_awb[NUM_STREAMS], + bool eof_awb[NUM_STREAMS], + unsigned short array_params[NUM_STREAMS][10], + unsigned char gamma_lut[NUM_STREAMS][256 * 3], + short wr_hls[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE], + XF_CTUNAME(XF_DST_T, XF_NPPC) omin_r[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(XF_DST_T, XF_NPPC) omax_r[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(XF_DST_T, XF_NPPC) omin_w[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize], + XF_CTUNAME(XF_DST_T, XF_NPPC) omax_w[NUM_STREAMS][MinMaxVArrSize][MinMaxHArrSize], + bool flag_ltm[NUM_STREAMS], + bool eof_ltm[NUM_STREAMS], + int stream_id) { int max_height, max_width; + static unsigned short black_level[NUM_STREAMS]; + static unsigned short rgain[NUM_STREAMS]; + static unsigned short bgain[NUM_STREAMS]; + static unsigned short ggain[NUM_STREAMS]; + static unsigned short bayer_p[NUM_STREAMS]; + static unsigned short bformat[NUM_STREAMS]; + static unsigned short pawb[NUM_STREAMS]; + static unsigned short block_height[NUM_STREAMS]; + static unsigned short block_width[NUM_STREAMS]; + max_height = height * 2; max_width = width + NUM_H_BLANK; +ARRAY_PARAMS_ASSIGN_LOOP: + + for (int i = 0; i < NUM_STREAMS; i++) { + black_level[i] = array_params[i][5]; + rgain[i] = array_params[i][0]; + bgain[i] = array_params[i][1]; + ggain[i] = array_params[i][2]; + bayer_p[i] = array_params[i][4]; + bformat[i] = array_params[i][4]; + pawb[i] = array_params[i][3]; + block_height[i] = array_params[i][8]; + block_width[i] = array_params[i][9]; + } + xf::cv::Mat imgInput(max_height, max_width); xf::cv::Mat LEF_Img(height, width); xf::cv::Mat SEF_Img(height, width); @@ -161,32 +168,28 @@ void Streampipeline(ap_uint* img_inp, // clang-format on const int Q_VAL = 1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC)); - float thresh = (float)params.pawb / 256; - float inputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; - - float mul_fact = (inputMax / (inputMax - params.black_level)); - xf::cv::Array2xfMat(img_inp, imgInput); xf::cv::extractExposureFrames(imgInput, LEF_Img, SEF_Img); - xf::cv::Hdrmerge_bayer(LEF_Img, SEF_Img, hdr_out, wr_hls); + xf::cv::Hdrmerge_bayer_multi(LEF_Img, SEF_Img, hdr_out, wr_hls, + stream_id); - xf::cv::blackLevelCorrection(hdr_out, blc_out, params.black_level, mul_fact); + xf::cv::blackLevelCorrection_multi(hdr_out, blc_out, black_level, stream_id); // xf::cv::badpixelcorrection(imgInput2, bpc_out); - xf::cv::gaincontrol( - blc_out, gain_out, params.rgain, params.bgain, params.ggain, params.bayer_p); + xf::cv::gaincontrol_multi_wrap(blc_out, gain_out, rgain, bgain, ggain, bayer_p, stream_id); - xf::cv::demosaicing( - gain_out, demosaic_out, params.bayer_p); + xf::cv::demosaicing_multi_wrap(gain_out, demosaic_out, bformat, stream_id); - function_awb( - demosaic_out, ltm_in, hist0, hist1, gain0, gain1, height, width, thresh); + function_awb( + demosaic_out, ltm_in, hist0, hist1, gain0, gain1, height, width, flag_awb, eof_awb, pawb, stream_id); xf::cv::colorcorrectionmatrix(ltm_in, lsc_out); @@ -195,14 +198,19 @@ void Streampipeline(ap_uint* img_inp, fifo_copy( lsc_out, aecin, height, width); } else { - xf::cv::LTM::process(lsc_out, params.blk_height, params.blk_width, omin_r, omax_r, omin_w, - omax_w, aecin); + xf::cv::LTM_multi_wrap::LTM_multistream_wrap(lsc_out, + block_height, + block_width, + omin_r, omax_r, + omin_w, omax_w, + aecin, flag_ltm, + eof_ltm, + stream_id); } - xf::cv::gammacorrection( - aecin, _dst, _gamma_lut); + xf::cv::gammacorrection_multi(aecin, _dst, gamma_lut, stream_id); - // ColorMat2AXIvideo(_dst, m_axis_video); xf::cv::rgb2yuyv( _dst, imgOutput); @@ -212,41 +220,6 @@ void Streampipeline(ap_uint* img_inp, return; } -void Streampipeline_wrap(ap_uint* img_inp, - ap_uint* img_out, - unsigned short height, - unsigned short width, - uint32_t hist0[3][HIST_SIZE], - uint32_t hist1[3][HIST_SIZE], - int gain0[3], - int gain1[3], - struct ispparams_config params, - unsigned char _gamma_lut[256 * 3], - short wr_hls[NO_EXPS * XF_NPPC * W_B_SIZE], - XF_CTUNAME(XF_DST_T, XF_NPPC) omin_r[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omax_r[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omin_w[MinMaxVArrSize][MinMaxHArrSize], - XF_CTUNAME(XF_DST_T, XF_NPPC) omax_w[MinMaxVArrSize][MinMaxHArrSize], - bool& flag, - bool& eof) { -// clang-format off - #pragma HLS INLINE OFF - // clang-format on - - if (!flag) { - Streampipeline(img_inp, img_out, height, width, hist0, hist1, gain0, gain1, params, _gamma_lut, wr_hls, omin_r, - omax_r, omin_w, omax_w); - if (eof) flag = 1; - - } else { - Streampipeline(img_inp, img_out, height, width, hist1, hist0, gain1, gain0, params, _gamma_lut, wr_hls, omin_w, - omax_w, omin_r, omax_r); - if (eof) flag = 0; - } - - return; -} - /********************************************************************************* * Function: ISPPipeline_accel * Parameters: input and output image pointers, image resolution @@ -266,22 +239,17 @@ void ISPPipeline_accel(ap_uint* img_inp1, unsigned char gamma_lut[NUM_STREAMS][256 * 3], short wr_hls[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]) { // clang-format off -#pragma HLS INTERFACE m_axi port=img_inp1 offset=slave bundle=gmem1 -#pragma HLS INTERFACE m_axi port=img_inp2 offset=slave bundle=gmem2 -#pragma HLS INTERFACE m_axi port=img_inp3 offset=slave bundle=gmem3 -#pragma HLS INTERFACE m_axi port=img_inp4 offset=slave bundle=gmem4 -#pragma HLS INTERFACE m_axi port=img_out1 offset=slave bundle=gmem5 -#pragma HLS INTERFACE m_axi port=img_out2 offset=slave bundle=gmem6 -#pragma HLS INTERFACE m_axi port=img_out3 offset=slave bundle=gmem7 -#pragma HLS INTERFACE m_axi port=img_out4 offset=slave bundle=gmem8 -#pragma HLS INTERFACE m_axi port=wr_hls offset=slave bundle=gmem9 -// clang-format on - -// clang-format off -#pragma HLS ARRAY_PARTITION variable=hist0_awb complete dim=1 -#pragma HLS ARRAY_PARTITION variable=hist1_awb complete dim=1 -#pragma HLS ARRAY_PARTITION variable=hist0_awb complete dim=2 -#pragma HLS ARRAY_PARTITION variable=hist1_awb complete dim=2 +#pragma HLS INTERFACE m_axi port=img_inp1 offset=slave bundle=gmem1 +#pragma HLS INTERFACE m_axi port=img_inp2 offset=slave bundle=gmem2 +#pragma HLS INTERFACE m_axi port=img_inp3 offset=slave bundle=gmem3 +#pragma HLS INTERFACE m_axi port=img_inp4 offset=slave bundle=gmem4 +#pragma HLS INTERFACE m_axi port=img_out1 offset=slave bundle=gmem5 +#pragma HLS INTERFACE m_axi port=img_out2 offset=slave bundle=gmem6 +#pragma HLS INTERFACE m_axi port=img_out3 offset=slave bundle=gmem7 +#pragma HLS INTERFACE m_axi port=img_out4 offset=slave bundle=gmem8 +#pragma HLS INTERFACE m_axi port=array_params offset=slave bundle=gmem9 +#pragma HLS INTERFACE m_axi port=gamma_lut offset=slave bundle=gmem10 +#pragma HLS INTERFACE m_axi port=wr_hls offset=slave bundle=gmem11 // clang-format on @@ -289,33 +257,43 @@ void ISPPipeline_accel(ap_uint* img_inp1, uint32_t tot_rows = 0; int rem_rows[NUM_STREAMS]; - short wr_hls_tmp[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]; -PARAMS_SET_LOOP: + static short wr_hls_tmp[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]; + static unsigned char gamma_lut_tmp[NUM_STREAMS][256 * 3]; + + unsigned short height_arr[NUM_STREAMS], width_arr[NUM_STREAMS]; + +ARRAY_PARAMS_LOOP: for (int i = 0; i < NUM_STREAMS; i++) { // clang-format off #pragma HLS LOOP_TRIPCOUNT min=1 max=NUM_STREAMS // clang-format on - - params[i].rgain = array_params[i][0]; - params[i].bgain = array_params[i][1]; - params[i].ggain = array_params[i][2]; - params[i].pawb = array_params[i][3]; - params[i].bayer_p = array_params[i][4]; - params[i].black_level = array_params[i][5]; - params[i].height = array_params[i][6]; - params[i].width = array_params[i][7]; - params[i].blk_height = array_params[i][8]; - params[i].blk_width = array_params[i][9]; - - params[i].height = params[i].height * 2; - tot_rows = tot_rows + params[i].height; - rem_rows[i] = params[i].height; + height_arr[i] = array_params[i][6]; + width_arr[i] = array_params[i][7]; + height_arr[i] = height_arr[i] * 2; + tot_rows = tot_rows + height_arr[i]; + rem_rows[i] = height_arr[i]; } + int glut_TC = 256 * 3; -WR_HLS_INIT_LOOP: +GAMMA_LUT_LOOP: for (int n = 0; n < NUM_STREAMS; n++) { // clang-format off +#pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS + // clang-format on + for(int i=0; i < glut_TC; i++){ +// clang-format off +#pragma HLS LOOP_TRIPCOUNT min=glut_TC max=glut_TC + // clang-format on + + gamma_lut_tmp[n][i] = gamma_lut[n][i]; + + } + } + +WR_HLS_INIT_LOOP: + for(int n =0; n < NUM_STREAMS; n++) { +// clang-format off #pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS // clang-format on for (int k = 0; k < XF_NPPC; k++) { @@ -343,10 +321,11 @@ void ISPPipeline_accel(ap_uint* img_inp1, } const uint16_t TC = tot_rows / max; - uint32_t num_rows; + uint32_t addrbound, wr_addrbound, num_rows; - int idx = 0; - bool eof[NUM_STREAMS] = {0}; + int strm_id = 0, idx = 0; + bool eof_awb[NUM_STREAMS] = {0}; + bool eof_ltm[NUM_STREAMS] = {0}; uint32_t rd_offset1 = 0, rd_offset2 = 0, rd_offset3 = 0, rd_offset4 = 0; uint32_t wr_offset1 = 0, wr_offset2 = 0, wr_offset3 = 0, wr_offset4 = 0; @@ -355,46 +334,51 @@ void ISPPipeline_accel(ap_uint* img_inp1, for (int r = 0; r < tot_rows;) { // clang-format off #pragma HLS LOOP_TRIPCOUNT min=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS max=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS - // clang-format on + // clang-format on + // Compute no.of rows to process if (rem_rows[idx] / 2 > pt[idx]) { // Check number for remaining rows of 1 interleaved image num_rows = pt[idx]; - eof[idx] = 0; // 1 interleaved image/stream is not done + eof_awb[idx] = 0; // 1 interleaved image/stream is not done + eof_ltm[idx] = 0; } else { num_rows = rem_rows[idx] / 2; - eof[idx] = 1; // 1 interleaved image/stream done + eof_awb[idx] = 1; // 1 interleaved image/stream done + eof_ltm[idx] = 1; } + strm_id = idx; + if (idx == 0 && num_rows > 0) { - Streampipeline_wrap(img_inp1 + rd_offset1, img_out1 + wr_offset1, num_rows, params[idx].width, - hist0_awb[idx], hist1_awb[idx], igain_0, igain_1, params[idx], gamma_lut[idx], wr_hls_tmp[idx], - omin_r[idx], omax_r[idx], omin_w[idx], omax_w[idx], flag[idx], eof[idx]); + Streampipeline(img_inp1 + rd_offset1, img_out1 + wr_offset1, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); - rd_offset1 += 2 * num_rows * ((params[idx].width + 8) >> XF_BITSHIFT(XF_NPPC)); - wr_offset1 += num_rows * (params[idx].width >> XF_BITSHIFT(XF_NPPC)); + rd_offset1 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset1 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; } else if (idx == 1 && num_rows > 0) { - Streampipeline_wrap(img_inp2 + rd_offset2, img_out2 + wr_offset2, num_rows, params[idx].width, - hist0_awb[idx], hist1_awb[idx], igain_0, igain_1, params[idx], gamma_lut[idx], wr_hls_tmp[idx], - omin_r[idx], omax_r[idx], omin_w[idx], omax_w[idx], flag[idx], eof[idx]); + Streampipeline(img_inp2 + rd_offset2, img_out2 + wr_offset2, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); - rd_offset2 += 2 * num_rows * ((params[idx].width + 8) >> XF_BITSHIFT(XF_NPPC)); - wr_offset2 += num_rows * (params[idx].width >> XF_BITSHIFT(XF_NPPC)); + rd_offset2 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset2 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; } else if (idx == 2 && num_rows > 0) { - Streampipeline_wrap(img_inp3 + rd_offset3, img_out3 + wr_offset3, num_rows, params[idx].width, - hist0_awb[idx], hist1_awb[idx], igain_0, igain_1, params[idx], gamma_lut[idx], wr_hls_tmp[idx], - omin_r[idx], omax_r[idx], omin_w[idx], omax_w[idx], flag[idx], eof[idx]); + Streampipeline(img_inp3 + rd_offset3, img_out3 + wr_offset3, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); - rd_offset3 += 2 * num_rows * ((params[idx].width + 8) >> XF_BITSHIFT(XF_NPPC)); - wr_offset3 += num_rows * (params[idx].width >> XF_BITSHIFT(XF_NPPC)); + rd_offset3 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset3 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; } else if (idx == 3 && num_rows > 0) { - Streampipeline_wrap(img_inp4 + rd_offset4, img_out4 + wr_offset4, num_rows, params[idx].width, - hist0_awb[idx], hist1_awb[idx], igain_0, igain_1, params[idx], gamma_lut[idx], wr_hls_tmp[idx], - omin_r[idx], omax_r[idx], omin_w[idx], omax_w[idx], flag[idx], eof[idx]); + Streampipeline(img_inp4 + rd_offset4, img_out4 + wr_offset4, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); - rd_offset4 += 2 * num_rows * ((params[idx].width + 8) >> XF_BITSHIFT(XF_NPPC)); - wr_offset4 += num_rows * (params[idx].width >> XF_BITSHIFT(XF_NPPC)); + rd_offset4 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset4 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; } // Update remaining rows to process rem_rows[idx] = rem_rows[idx] - num_rows * 2; diff --git a/vision/L3/examples/isp_multistream/xf_isp_tb.cpp b/vision/L3/examples/isp_multistream/xf_isp_tb.cpp index c6f462bcee..74e51faa96 100644 --- a/vision/L3/examples/isp_multistream/xf_isp_tb.cpp +++ b/vision/L3/examples/isp_multistream/xf_isp_tb.cpp @@ -162,7 +162,7 @@ int main(int argc, char** argv) { /* reading in the color image */ #if T_8U - std::cout << "T_8U selected" << std::endl; + in_img1 = cv::imread(argv[1], 0); in_img2 = cv::imread(argv[2], 0); in_img3 = cv::imread(argv[3], 0); @@ -233,6 +233,23 @@ int main(int argc, char** argv) { interleaved_img3.create(cv::Size(in_img1.cols + NUM_H_BLANK, in_img1.rows * 2), CV_16UC1); interleaved_img4.create(cv::Size(in_img1.cols + NUM_H_BLANK, in_img1.rows * 2), CV_16UC1); + struct ispparams_config params[NUM_STREAMS]; + + unsigned short array_params[NUM_STREAMS][10]; + + for (int i = 0; i < NUM_STREAMS; i++) { + array_params[i][0] = params[i].rgain; + array_params[i][1] = params[i].bgain; + array_params[i][2] = params[i].ggain; + array_params[i][3] = params[i].pawb; + array_params[i][4] = params[i].bayer_p; + array_params[i][5] = params[i].black_level; + array_params[i][6] = params[i].height; + array_params[i][7] = params[i].width; + array_params[i][8] = params[i].blk_height; + array_params[i][9] = params[i].blk_width; + } + #if T_8U int sc = 1; int cnt = 0, cnt1 = 0; @@ -392,7 +409,6 @@ int main(int argc, char** argv) { cv::Mat out_img2(in_img2.rows, in_img2.cols, CV_16UC1); cv::Mat out_img3(in_img3.rows, in_img3.cols, CV_16UC1); cv::Mat out_img4(in_img4.rows, in_img4.cols, CV_16UC1); - #if T_8U size_t vec_in_size_bytes = NUM_STREAMS * 256 * 3 * sizeof(unsigned char); size_t vec_weight_size_bytes = NUM_STREAMS * NO_EXPS * XF_NPPC * W_B_SIZE * sizeof(short); @@ -412,6 +428,7 @@ int main(int argc, char** argv) { float rho = 512; float imax = (W_B_SIZE - 1); float t[NO_EXPS] = {1.0f, 0.25f}; //{1.0f,0.25f,0.0625f}; + short wr_ocv[NUM_STREAMS][NO_EXPS][W_B_SIZE]; // wr_ocv_gen function call @@ -430,23 +447,6 @@ int main(int argc, char** argv) { } } - struct ispparams_config params[NUM_STREAMS]; - - unsigned short array_params[NUM_STREAMS][10]; - - for (int i = 0; i < NUM_STREAMS; i++) { - array_params[i][0] = params[i].rgain; - array_params[i][1] = params[i].bgain; - array_params[i][2] = params[i].ggain; - array_params[i][3] = params[i].pawb; - array_params[i][4] = params[i].bayer_p; - array_params[i][5] = params[i].black_level; - array_params[i][6] = params[i].height; - array_params[i][7] = params[i].width; - array_params[i][8] = params[i].blk_height; - array_params[i][9] = params[i].blk_width; - } - unsigned char gamma_lut[NUM_STREAMS][256 * 3]; uint32_t hist0_awb[NUM_STREAMS][3][HIST_SIZE] = {0}; uint32_t hist1_awb[NUM_STREAMS][3][HIST_SIZE] = {0}; @@ -457,15 +457,11 @@ int main(int argc, char** argv) { compute_gamma(gamma_val_r, gamma_val_g, gamma_val_b, gamma_lut[1]); compute_gamma(gamma_val_r, gamma_val_g, gamma_val_b, gamma_lut[2]); compute_gamma(gamma_val_r, gamma_val_g, gamma_val_b, gamma_lut[3]); - - // int blk_height = 32; - // int blk_width = 32; // int channels=out_img.channels(); size_t array_size_bytes = NUM_STREAMS * 10 * sizeof(unsigned short); cl_int err; std::cout << "INFO: Running OpenCL section." << std::endl; - std::vector devices = xcl::get_xil_devices(); cl::Device device = devices[0]; OCL_CHECK(err, cl::Context context(device, NULL, NULL, NULL, &err)); @@ -494,7 +490,7 @@ int main(int argc, char** argv) { OCL_CHECK(err, cl::Buffer buffer_inVec_Weights(context, CL_MEM_READ_ONLY, vec_weight_size_bytes, NULL, &err)); OCL_CHECK(err, cl::Buffer buffer_array(context, CL_MEM_READ_ONLY, array_size_bytes, NULL, &err)); - // Set the kernel arguments + // Set kernel arguments OCL_CHECK(err, err = kernel.setArg(0, buffer_inImage1)); OCL_CHECK(err, err = kernel.setArg(1, buffer_inImage2)); OCL_CHECK(err, err = kernel.setArg(2, buffer_inImage3)); @@ -545,7 +541,6 @@ int main(int argc, char** argv) { event_sp.getProfilingInfo(CL_PROFILING_COMMAND_END, &end); diff_prof = end - start; std::cout << (diff_prof / 1000000) << "ms" << std::endl; - // Copying Device result data to Host memory q.enqueueReadBuffer(buffer_outImage1, CL_TRUE, 0, image_out_size_bytes, out_img1.data); q.enqueueReadBuffer(buffer_outImage2, CL_TRUE, 0, image_out_size_bytes, out_img2.data); @@ -553,9 +548,7 @@ int main(int argc, char** argv) { q.enqueueReadBuffer(buffer_outImage4, CL_TRUE, 0, image_out_size_bytes, out_img4.data); } q.finish(); - /////////////////////////////////////// end of CL //////////////////////// - // Write output image imwrite("hls_out1.png", out_img1); imwrite("hls_out2.png", out_img2); diff --git a/vision/L3/examples/isp_multistream/xf_isp_types.h b/vision/L3/examples/isp_multistream/xf_isp_types.h index 71447a365b..b3c4cf8bd0 100644 --- a/vision/L3/examples/isp_multistream/xf_isp_types.h +++ b/vision/L3/examples/isp_multistream/xf_isp_types.h @@ -30,9 +30,9 @@ // Requried Vision modules #include "imgproc/xf_bpc.hpp" -#include "imgproc/xf_gaincontrol_multi.hpp" +#include "imgproc/xf_gaincontrol.hpp" #include "imgproc/xf_autowhitebalance.hpp" -#include "imgproc/xf_demosaicing_rt.hpp" +#include "imgproc/xf_demosaicing.hpp" #include "imgproc/xf_ltm.hpp" #include "imgproc/xf_quantizationdithering.hpp" #include "imgproc/xf_lensshadingcorrection.hpp" @@ -68,7 +68,7 @@ static constexpr int TILES_X_MIN = 2; static constexpr int TILES_Y_MAX = 4; static constexpr int TILES_X_MAX = 4; // -------------------------------------------------------------------- -// Macros definitions +// Macros definations // -------------------------------------------------------------------- // Useful macro functions definitions diff --git a/vision/L3/examples/isppipeline_hdr/build/xf_config_params.h b/vision/L3/examples/isppipeline_hdr/build/xf_config_params.h index 7864e0415b..704a75f475 100755 --- a/vision/L3/examples/isppipeline_hdr/build/xf_config_params.h +++ b/vision/L3/examples/isppipeline_hdr/build/xf_config_params.h @@ -58,16 +58,16 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM 0 // uram enable -#define XF_CV_DEPTH_IN_DR1 3 -#define XF_CV_DEPTH_IN_DR2 3 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_BPC_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_DEMOSAIC_OUT 3 -#define XF_CV_DEPTH_IMPOP 3 -#define XF_CV_DEPTH_LTM_IN 3 -#define XF_CV_DEPTH_LSC_OUT 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 +#define XF_CV_DEPTH_IN_DR1 2 +#define XF_CV_DEPTH_IN_DR2 2 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_BPC_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_DEMOSAIC_OUT 2 +#define XF_CV_DEPTH_IMPOP 2 +#define XF_CV_DEPTH_LTM_IN 2 +#define XF_CV_DEPTH_LSC_OUT 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 diff --git a/vision/L3/examples/isppipeline_mono/build/xf_config_params.h b/vision/L3/examples/isppipeline_mono/build/xf_config_params.h index dcef72e0bb..dd90290814 100644 --- a/vision/L3/examples/isppipeline_mono/build/xf_config_params.h +++ b/vision/L3/examples/isppipeline_mono/build/xf_config_params.h @@ -60,13 +60,13 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM 0 // uram enable -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_DPC_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_IMPOP 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_DPC_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_IMPOP 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L3/examples/isppipeline_rgbir/build/xf_config_params.h b/vision/L3/examples/isppipeline_rgbir/build/xf_config_params.h index 2054991efd..5fa0447c5c 100755 --- a/vision/L3/examples/isppipeline_rgbir/build/xf_config_params.h +++ b/vision/L3/examples/isppipeline_rgbir/build/xf_config_params.h @@ -69,15 +69,15 @@ #define XF_USE_URAM 0 // uram enable #define XF_CV_DEPTH_3XWIDTH 3 * XF_WIDTH -#define XF_CV_DEPTH_imgInput 3 -#define XF_CV_DEPTH_imgInputCopy1 3 +#define XF_CV_DEPTH_imgInput 2 +#define XF_CV_DEPTH_imgInputCopy1 2 #define XF_CV_DEPTH_imgInputCopy2 3 * XF_WIDTH -#define XF_CV_DEPTH_fullir_out 3 -#define XF_CV_DEPTH_rggb_out 3 -#define XF_CV_DEPTH_gain_out 3 -#define XF_CV_DEPTH_demosaic_out 3 -#define XF_CV_DEPTH_demoOut_final 3 -#define XF_CV_DEPTH_ltm_in 3 -#define XF_CV_DEPTH__dst 3 -#define XF_CV_DEPTH_aecin 3 -#define XF_CV_DEPTH__imgOutput 3 \ No newline at end of file +#define XF_CV_DEPTH_fullir_out 2 +#define XF_CV_DEPTH_rggb_out 2 +#define XF_CV_DEPTH_gain_out 2 +#define XF_CV_DEPTH_demosaic_out 2 +#define XF_CV_DEPTH_demoOut_final 2 +#define XF_CV_DEPTH_ltm_in 2 +#define XF_CV_DEPTH__dst 2 +#define XF_CV_DEPTH_aecin 2 +#define XF_CV_DEPTH__imgOutput 2 \ No newline at end of file diff --git a/vision/L3/examples/letterbox/build/xf_config_params.h b/vision/L3/examples/letterbox/build/xf_config_params.h index 638f976076..bc8bd547f7 100644 --- a/vision/L3/examples/letterbox/build/xf_config_params.h +++ b/vision/L3/examples/letterbox/build/xf_config_params.h @@ -31,6 +31,6 @@ #define INTERPOLATION 1 #define MPC 1 #define SPC 0 -#define XF_CV_DEPTH_IN_0 3 -#define XF_CV_DEPTH_OUT_1 3 -#define XF_CV_DEPTH_OUT_2 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_OUT_1 2 +#define XF_CV_DEPTH_OUT_2 2 \ No newline at end of file diff --git a/vision/L3/examples/stereopipeline/build/xf_config_params.h b/vision/L3/examples/stereopipeline/build/xf_config_params.h index e50ae72854..257cf54e08 100644 --- a/vision/L3/examples/stereopipeline/build/xf_config_params.h +++ b/vision/L3/examples/stereopipeline/build/xf_config_params.h @@ -31,12 +31,12 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM false -#define XF_CV_DEPTH_MAT_L 3 -#define XF_CV_DEPTH_MAT_R 3 -#define XF_CV_DEPTH_MAT_DISP 3 -#define XF_CV_DEPTH_MAP_XL 3 -#define XF_CV_DEPTH_MAP_YL 3 -#define XF_CV_DEPTH_MAP_XR 3 -#define XF_CV_DEPTH_MAP_YR 3 -#define XF_CV_DEPTH_LEFT_REMAPPED 3 -#define XF_CV_DEPTH_RIGHT_REMAPPED 3 +#define XF_CV_DEPTH_MAT_L 2 +#define XF_CV_DEPTH_MAT_R 2 +#define XF_CV_DEPTH_MAT_DISP 2 +#define XF_CV_DEPTH_MAP_XL 2 +#define XF_CV_DEPTH_MAP_YL 2 +#define XF_CV_DEPTH_MAP_XR 2 +#define XF_CV_DEPTH_MAP_YR 2 +#define XF_CV_DEPTH_LEFT_REMAPPED 2 +#define XF_CV_DEPTH_RIGHT_REMAPPED 2 diff --git a/vision/L3/tests/colordetect/colordetect_NO/xf_config_params.h b/vision/L3/tests/colordetect/colordetect_NO/xf_config_params.h index 20c01ae935..c5674bdc26 100644 --- a/vision/L3/tests/colordetect/colordetect_NO/xf_config_params.h +++ b/vision/L3/tests/colordetect/colordetect_NO/xf_config_params.h @@ -14,10 +14,10 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_RGB2HSV 2 -#define XF_CV_DEPTH_HELP_1 3 -#define XF_CV_DEPTH_HELP_2 4 -#define XF_CV_DEPTH_HELP_3 5 -#define XF_CV_DEPTH_HELP_4 6 -#define XF_CV_DEPTH_OUT_1 7 +#define XF_CV_DEPTH_HELP_1 2 +#define XF_CV_DEPTH_HELP_2 2 +#define XF_CV_DEPTH_HELP_3 2 +#define XF_CV_DEPTH_HELP_4 2 +#define XF_CV_DEPTH_OUT_1 2 diff --git a/vision/L3/tests/cornertracker/cornertrack/xf_config_params.h b/vision/L3/tests/cornertracker/cornertrack/xf_config_params.h index 01981f12e1..55f9bf499f 100644 --- a/vision/L3/tests/cornertracker/cornertrack/xf_config_params.h +++ b/vision/L3/tests/cornertracker/cornertrack/xf_config_params.h @@ -38,17 +38,17 @@ #define MAXCORNERS 10000 #define XF_USE_URAM false -#define XF_CV_DEPTH_IN_HARRIS 1 -#define XF_CV_DEPTH_OUT_HARRIS 3 +#define XF_CV_DEPTH_IN_HARRIS 2 +#define XF_CV_DEPTH_OUT_HARRIS 2 #define XF_CV_DEPTH_CORNER_UPDATE -1 -#define XF_CV_DEPTH_PDOF_1 3 -#define XF_CV_DEPTH_PDOF_2 3 -#define XF_CV_DEPTH_PDOF_3 3 -#define XF_CV_DEPTH_PDOF_4 3 +#define XF_CV_DEPTH_PDOF_1 2 +#define XF_CV_DEPTH_PDOF_2 2 +#define XF_CV_DEPTH_PDOF_3 2 +#define XF_CV_DEPTH_PDOF_4 2 -#define XF_CV_DEPTH_PD_1 3 -#define XF_CV_DEPTH_PD_2 3 -#define XF_CV_DEPTH_PD_3 3 -#define XF_CV_DEPTH_PD_4 3 \ No newline at end of file +#define XF_CV_DEPTH_PD_1 2 +#define XF_CV_DEPTH_PD_2 2 +#define XF_CV_DEPTH_PD_3 2 +#define XF_CV_DEPTH_PD_4 2 \ No newline at end of file diff --git a/vision/L3/tests/gaussiandifference/DOG_NO_3/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_NO_3/xf_config_params.h index f15bfb2bb1..bbda16eb69 100644 --- a/vision/L3/tests/gaussiandifference/DOG_NO_3/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_NO_3/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 1 #define FILTER_SIZE_1_5 0 diff --git a/vision/L3/tests/gaussiandifference/DOG_NO_5/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_NO_5/xf_config_params.h index 4fb57a1e9a..8550115f3f 100644 --- a/vision/L3/tests/gaussiandifference/DOG_NO_5/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_NO_5/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 0 #define FILTER_SIZE_1_5 1 diff --git a/vision/L3/tests/gaussiandifference/DOG_NO_7/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_NO_7/xf_config_params.h index 20ea99036b..69670c853d 100644 --- a/vision/L3/tests/gaussiandifference/DOG_NO_7/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_NO_7/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 0 #define FILTER_SIZE_1_5 0 diff --git a/vision/L3/tests/gaussiandifference/DOG_RO_3/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_RO_3/xf_config_params.h index eb1bd0690d..eaef4b7495 100644 --- a/vision/L3/tests/gaussiandifference/DOG_RO_3/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_RO_3/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 1 #define FILTER_SIZE_1_5 0 diff --git a/vision/L3/tests/gaussiandifference/DOG_RO_5/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_RO_5/xf_config_params.h index 6c49955639..9ff2389460 100644 --- a/vision/L3/tests/gaussiandifference/DOG_RO_5/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_RO_5/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 0 #define FILTER_SIZE_1_5 1 diff --git a/vision/L3/tests/gaussiandifference/DOG_RO_7/xf_config_params.h b/vision/L3/tests/gaussiandifference/DOG_RO_7/xf_config_params.h index b783d671e0..07f12a8e09 100644 --- a/vision/L3/tests/gaussiandifference/DOG_RO_7/xf_config_params.h +++ b/vision/L3/tests/gaussiandifference/DOG_RO_7/xf_config_params.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#define XF_CV_DEPTH_IN_0 1 -#define XF_CV_DEPTH_IN_1 1 +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_IN_1 2 #define XF_CV_DEPTH_IN_2 2 #define XF_CV_DEPTH_IN_3 15360 -#define XF_CV_DEPTH_IN_4 4 +#define XF_CV_DEPTH_IN_4 2 -#define XF_CV_DEPTH_OUT_1 3 +#define XF_CV_DEPTH_OUT_1 2 #define FILTER_SIZE_1_3 0 #define FILTER_SIZE_1_5 0 diff --git a/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC1_16/xf_config_params.h b/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC1_16/xf_config_params.h index 3c19bb5f66..a431216ebc 100755 --- a/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC1_16/xf_config_params.h +++ b/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC1_16/xf_config_params.h @@ -60,13 +60,13 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM 0 // uram enable -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_DPC_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_IMPOP 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_DPC_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_IMPOP 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC2_8/xf_config_params.h b/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC2_8/xf_config_params.h index 50ae74a323..cd21f70fb8 100755 --- a/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC2_8/xf_config_params.h +++ b/vision/L3/tests/isppipeline_mono/MONO_ISP_NPC2_8/xf_config_params.h @@ -60,13 +60,13 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM 0 // uram enable -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_IN_2 3 -#define XF_CV_DEPTH_DPC_OUT 3 -#define XF_CV_DEPTH_GAIN_OUT 3 -#define XF_CV_DEPTH_IMPOP 3 -#define XF_CV_DEPTH_DST 3 -#define XF_CV_DEPTH_AEC_IN 3 -#define XF_CV_DEPTH_OUT 3 -#define XF_CV_DEPTH_IN_1 3 -#define XF_CV_DEPTH_OUT_1 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_IN_2 2 +#define XF_CV_DEPTH_DPC_OUT 2 +#define XF_CV_DEPTH_GAIN_OUT 2 +#define XF_CV_DEPTH_IMPOP 2 +#define XF_CV_DEPTH_DST 2 +#define XF_CV_DEPTH_AEC_IN 2 +#define XF_CV_DEPTH_OUT 2 +#define XF_CV_DEPTH_IN_1 2 +#define XF_CV_DEPTH_OUT_1 2 \ No newline at end of file diff --git a/vision/L3/tests/letterbox/LETTERBOX_RO/xf_config_params.h b/vision/L3/tests/letterbox/LETTERBOX_RO/xf_config_params.h index 33a0ccc5ae..511a9901b0 100644 --- a/vision/L3/tests/letterbox/LETTERBOX_RO/xf_config_params.h +++ b/vision/L3/tests/letterbox/LETTERBOX_RO/xf_config_params.h @@ -32,6 +32,6 @@ #define MPC 1 #define SPC 0 -#define XF_CV_DEPTH_IN_0 3 -#define XF_CV_DEPTH_OUT_1 3 -#define XF_CV_DEPTH_OUT_2 3 \ No newline at end of file +#define XF_CV_DEPTH_IN_0 2 +#define XF_CV_DEPTH_OUT_1 2 +#define XF_CV_DEPTH_OUT_2 2 \ No newline at end of file diff --git a/vision/L3/tests/stereopipeline/stereo_config_1/xf_config_params.h b/vision/L3/tests/stereopipeline/stereo_config_1/xf_config_params.h index e50ae72854..257cf54e08 100644 --- a/vision/L3/tests/stereopipeline/stereo_config_1/xf_config_params.h +++ b/vision/L3/tests/stereopipeline/stereo_config_1/xf_config_params.h @@ -31,12 +31,12 @@ #define OUTPUT_PTR_WIDTH 32 #define XF_USE_URAM false -#define XF_CV_DEPTH_MAT_L 3 -#define XF_CV_DEPTH_MAT_R 3 -#define XF_CV_DEPTH_MAT_DISP 3 -#define XF_CV_DEPTH_MAP_XL 3 -#define XF_CV_DEPTH_MAP_YL 3 -#define XF_CV_DEPTH_MAP_XR 3 -#define XF_CV_DEPTH_MAP_YR 3 -#define XF_CV_DEPTH_LEFT_REMAPPED 3 -#define XF_CV_DEPTH_RIGHT_REMAPPED 3 +#define XF_CV_DEPTH_MAT_L 2 +#define XF_CV_DEPTH_MAT_R 2 +#define XF_CV_DEPTH_MAT_DISP 2 +#define XF_CV_DEPTH_MAP_XL 2 +#define XF_CV_DEPTH_MAP_YL 2 +#define XF_CV_DEPTH_MAP_XR 2 +#define XF_CV_DEPTH_MAP_YR 2 +#define XF_CV_DEPTH_LEFT_REMAPPED 2 +#define XF_CV_DEPTH_RIGHT_REMAPPED 2 diff --git a/vision/README.md b/vision/README.md index 18df221f13..ab03959867 100644 --- a/vision/README.md +++ b/vision/README.md @@ -199,6 +199,10 @@ This library is written by developers at • Fixed SVM emulation and cosim hang issue • Updated loop tripcounts of pyrDown, histogram, HDR extract, rgb2yuyv module in cvtColor to fix synthesis latency numbers • Fix array reshape pragma in xf_sobel.hpp, xf_video_mem.hpp files + • Modified XFCVDEPTH values in all functions + • Stride support added in the preprocess kernel of L3 Defect Detection pipeline + • Order of kernels changed in all-in-one pipeline and renamed as all-in-one-adas + • Array partitions in accel file moved to kernel file in isp multistream pipeline • Lib Infra Changes: • Added frequency setting in L2/L3 JSON files. 300 MHz for NPPC1 and 150MHz for NPPC8 for most cases. diff --git a/vision/docs/src/api-reference.rst b/vision/docs/src/api-reference.rst index f5bb3624dd..b96e896f8e 100644 --- a/vision/docs/src/api-reference.rst +++ b/vision/docs/src/api-reference.rst @@ -423,7 +423,7 @@ class. The following are a few supported types: ``XF_TNAME(XF_8UC1,XF_NPPC8)`` resolves to ``ap_uint<64>``. - ``XF_CTUNAME(TYPE,NPPC)`` resolves to the data type specified in the TYPE (number of bits) of the data member of the ``xf::cv::Mat`` object. For instance, - ``XF_TNAME(XF_16SC3,XF_NPPC8)`` resolves to ``ap_int<16>``. + ``XF_CTUNAME(XF_16SC3,XF_NPPC8)`` resolves to ``ap_int<16>``. - ``Word width = pixel depth * number of channels * number of pixels to process per cycle (NPPC)``. - ``XF_DTUNAME(TYPE,NPPC)`` resolves to the unsigned data type of the pixel (number of bits * number of channels). For instance, ``XF_DTUNAME(XF_32FC1,XF_NPPC1)`` resolves to ``float`` , ``XF_DTUNAME(XF_16SC3,XF_NPPC4)`` resolves to ``ap_uint<48>``. diff --git a/vision/docs/src/design-examples.rst b/vision/docs/src/design-examples.rst index d4f5bb240d..9471e072c6 100644 --- a/vision/docs/src/design-examples.rst +++ b/vision/docs/src/design-examples.rst @@ -19,7 +19,7 @@ the processor and the programmable logic. These examples also illustrate different ways to implement complex dataflow paths. The following examples are described in this section: -- `Iterative Pyramidal Dense Optical Flow <#interactive-pyramidal>`_ +- `Iterative Pyramidal Dense Optical Flow <#iterative-pyramidal>`_ - `Corner Tracking Using Optical Flow <#corner-tracking>`_ - `Color Detection <#color-detection>`_ - `Defect Detection <#defect-detection-pipeline>`_ @@ -34,7 +34,7 @@ examples are described in this section: - `Image Sensor Processing pipeline with GTM <#isp-201gtm>`_ - `Mono image Sensor Processing pipeline <#isp-201mono>`_ - `RGB-IR image Sensor Processing pipeline <#isp_201rgbir>`_ -- `Image Sensor Processing multistream pipeline - 2022.1 version <#_isp-201multistream>`_ +- `Image Sensor Processing multistream pipeline - 2022.2 version <#isp-201multistream>`_ - `Image Sensor Processing All-in-one pipeline <#isp-aio>`_ .. Important:: @@ -45,7 +45,7 @@ examples are described in this section: Default depth value for all the streaming model implemenations is "_XFCVDEPTH_DEFAULT = 2".** -.. _interative-pyramidal: +.. _iterative-pyramidal: Iterative Pyramidal Dense Optical Flow ====================================== @@ -1767,297 +1767,448 @@ User can also use below compile time parameters to the pipeline. .. _isp-201multistream: -Image Sensor Processing multistream pipeline - 2022.1 version -============================================================= +Image Sensor Processing multistream pipeline - 2022.2 version +============================================================== - ISP multistream pipeline allows user to process input from multi streams using one instance of ISP. - Current multi stream pipeline process 4 streams in a Round-Robin method with ouput steams TYPE as XF_8UC3(RGB). And after the color conversion to YUV color space, they are XF_16UC1(YUYV). - -This ISP pipeline inclues 8 blocks, they are following: - -* Black level correction -* Gain Control -* Demosaicing -* Auto white balance -* Colorcorrection matrix -* Quantization and Dithering -* Gamma correction -* Color space conversion +ISP multistream pipeline allows user to process input from multiple streams using one instance of ISP. +Current multi-stream pipeline process 4 streams in a Round-Robin method with input TYPE as XF_16UC1 +and output TYPE as XF_8UC3(RGB) after the color conversion to YUV color space the output TYPE is +XF_16UC1(YUYV). -Note: CCM and Q&D currently supports one output type for all the streams. Upcoming versions will support different output types. +This ISP pipeline includes 9 blocks, they are following: -|isp-20221| +- **Extract Exposure Frames:** The Extract Exposure Frames module returns + the Short Exposure Frame and Long Exposure Frame from the input frame + using the Digital overlap parameter. -Current design example demonstrates how to use ISP functions in a pipeline. - -User can dynamically configure the below parameters to the pipeline. +- **HDR Merge:** HDR Merge module generates the High Dynamic Range + image from a set of different exposure frames. Usually, image sensors + have limited dynamic range and it’s difficult to get HDR image with + single image capture. From the sensor, the frames are collected with + different exposure times and will get different exposure frames. + HDR Merge will generate the HDR frame with those exposure frames. -.. table:: Runtime parameters for the pipeline +- **Black Level Correction:** Black level leads to the whitening of + image in dark regions and perceived loss of overall contrast. The + Black level correction algorithm corrects the black and white levels of + the overall image. - +---------------+------------------------------------------------------+ - | Parameter | Description | - +===============+======================================================+ - | blacklevel | black level value to adjustment overall brightness | - | | of the image | - +---------------+------------------------------------------------------+ - | rgain | To configure gain value for the red channel. | - +---------------+------------------------------------------------------+ - | bgain | To configure gain value for the blue channel. | - +---------------+------------------------------------------------------+ - | ggain | To configure gain value for the green channel. | - +---------------+------------------------------------------------------+ - | bayer pattern | The Bayer format of the RAW input image. | - | | supported formats are RGGB, BGGR, GBRG, GRBG | - +---------------+------------------------------------------------------+ - | gamma_lut | Lookup table for gamma values.first 256 will be R, | - | | next 256 values are G gamma and last 256 values are | - | | B values | - +---------------+------------------------------------------------------+ - | pawb | %top and %bottom pixels are ignored while computing | - | | min and max to improve quality. | - +---------------+------------------------------------------------------+ - | rows | The number of rows in the image or height of the | - | | image. | - +---------------+------------------------------------------------------+ - | cols | The number of columns in the image or width of the | - | | image. | - +---------------+------------------------------------------------------+ +- **Gain Control**: The Gain control module improves the overall + brightness of the image. -User can also use below compile time parameters to the pipeline. +- **Demosaicing:** The Demosaic module reconstructs RGB pixels from the + input Bayer image (RGGB, BGGR, RGBG, GRGB). -.. table:: Compiletime parameters for the pipeline +- **Auto White Balance:** The AWB module improves color balance of the + image by using image statistics. - +-----------------+------------------------------------------------------+ - | Parameter | Description | - +=================+======================================================+ - | XF_HEIGHT | Maximum height of input and output image | - +-----------------+------------------------------------------------------+ - | XF_WIDTH | Maximum width of input and output image | - | | (Must be multiple of NPC) | - +-----------------+------------------------------------------------------+ - | XF_SRC_T |Input pixel type,Supported pixel widths are 8,10,12,16| - +-----------------+------------------------------------------------------+ - | NUM_STREAMS | Total number of streams | - +-----------------+------------------------------------------------------+ - | STRM1_ROWS | maximum number of rows to be processed for stream 1 | - | | in one burst | - +-----------------+------------------------------------------------------+ - | STRM2_ROWS | maximum number of rows to be processed for stream 2 | - | | in one burst | - +-----------------+------------------------------------------------------+ - | STRM3_ROWS | maximum number of rows to be processed for stream 3 | - | | in one burst | - +-----------------+------------------------------------------------------+ - | STRM4_ROWS | maximum number of rows to be processed for stream 4 | - | | in one burst | - +-----------------+------------------------------------------------------+ - -The following example demonstrates the ISP pipeline with above list of functions. +- **Color Correction Matrix**: Color Correction Matrix algorithm + converts the input image color format to output image color format + using the Color Correction Matrix provided by the user (CCM_TYPE). -.. code:: c +- **Local Tone Mapping:** Local Tone Mapping takes pixel neighbor statistics + into account and produces images with more contrast and brightness. - void ISPPipeline_accel(ap_uint* img_inp1, - ap_uint* img_inp2, - ap_uint* img_inp3, - ap_uint* img_inp4, - ap_uint* img_out1, - ap_uint* img_out2, - ap_uint* img_out3, - ap_uint* img_out4, - int height, - int width, - unsigned short array_params[NUM_STREAMS][6], - unsigned char gamma_lut[NUM_STREAMS][256 * 3]) { - // clang-format off - #pragma HLS INTERFACE m_axi port=img_inp1 offset=slave bundle=gmem1 - #pragma HLS INTERFACE m_axi port=img_inp2 offset=slave bundle=gmem2 - #pragma HLS INTERFACE m_axi port=img_inp3 offset=slave bundle=gmem3 - #pragma HLS INTERFACE m_axi port=img_inp4 offset=slave bundle=gmem4 - #pragma HLS INTERFACE m_axi port=img_out1 offset=slave bundle=gmem5 - #pragma HLS INTERFACE m_axi port=img_out2 offset=slave bundle=gmem6 - #pragma HLS INTERFACE m_axi port=img_out3 offset=slave bundle=gmem7 - #pragma HLS INTERFACE m_axi port=img_out4 offset=slave bundle=gmem8 - // clang-format on +- **Gamma Correction:** Gamma Correction improves the overall + brightness of image. - // clang-format off - #pragma HLS ARRAY_PARTITION variable=hist0_awb complete dim=1 - #pragma HLS ARRAY_PARTITION variable=hist1_awb complete dim=1 - // clang-format on +- **Color Space Conversion**: Converting RGB image to YUV422(YUYV) + image for HDMI display purpose. RGB2YUYV converts the RGB image into + Y channel for every pixel and U and V for alternate pixels. - struct ispparams_config params[NUM_STREAMS]; - - for(int i = 0; i < NUM_STREAMS; i++){ - // clang-format off - #pragma HLS UNROLL - // clang-format on - - params[i].rgain = array_params[i][0]; - params[i].bgain = array_params[i][1]; - params[i].ggain = array_params[i][2]; - params[i].pawb = array_params[i][3]; - params[i].bayer_p = array_params[i][4]; - params[i].black_level = array_params[i][5]; - } - - uint32_t tot_rows = NUM_STREAMS * height; - const uint16_t pt[NUM_STREAMS] = {STRM1_ROWS, STRM2_ROWS, STRM3_ROWS, STRM4_ROWS}; - uint16_t max = STRM1_ROWS; - for(int i = 1; i < NUM_STREAMS; i++){ - - if(pt[i] > max) - max = pt[i]; - } - - const uint16_t TC = tot_rows / max; - - uint32_t addrbound, num_rows; - - int strm_id = 0, idx = 0; - - int rem_rows[NUM_STREAMS] = {height, height, height, height}; - - uint32_t offset1 = 0, offset2 = 0, offset3 = 0, offset4 = 0; - - for (int r = 0; r < tot_rows;) { - // clang-format off - #pragma HLS LOOP_TRIPCOUNT min=0 max=TC - #pragma HLS LOOP_FLATTEN off - // clang-format on - - // Compute no.of rows to process - if (rem_rows[idx] > pt[idx]) - num_rows = pt[idx]; - else - num_rows = rem_rows[idx]; - - // Compute - addrbound = num_rows * (width >> XF_BITSHIFT(XF_NPPC)); - strm_id = idx; - - if (idx == 0 && num_rows > 0) { - Streampipeline(img_inp1 + offset1, img_out1 + offset1, num_rows, width, hist0_awb[idx], hist1_awb[idx], - igain_0, igain_1, params[idx], gamma_lut[idx], flag[idx]); - offset1 += addrbound; - } else if (idx == 1 && num_rows > 0) { - Streampipeline(img_inp2 + offset2, img_out2 + offset2, num_rows, width, hist0_awb[idx], hist1_awb[idx], - igain_0, igain_1, params[idx], gamma_lut[idx], flag[idx]); - - offset2 += addrbound; - } else if (idx == 2 && num_rows > 0) { - Streampipeline(img_inp3 + offset3, img_out3 + offset3, num_rows, width, hist0_awb[idx], hist1_awb[idx], - igain_0, igain_1, params[idx], gamma_lut[idx], flag[idx]); - - offset3 += addrbound; - } else if (idx == 3 && num_rows > 0) { - Streampipeline(img_inp4 + offset4, img_out4 + offset4, num_rows, width, hist0_awb[idx], hist1_awb[idx], - igain_0, igain_1, params[idx], gamma_lut[idx], flag[idx]); - - offset4 += addrbound; - } - // Update remaining rows to process - rem_rows[idx] = rem_rows[idx] - num_rows; - - // Next stream selection - if (idx == NUM_STREAMS - 1) - idx = 0; - else - idx++; - - // Update total rows to process - r += num_rows; - } +.. rubric:: ISP multistream blocks +.. image:: ./images/ISP_multistream.PNG + :class: image + :width: 1000 - return; - } +.. rubric:: Parameter Descriptions + +.. table:: Table: Runtime parameter + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | wr_hls | Lookup table for weight values. | + | | Computing the weights LUT in host | + | | side and passing as input to the | + | | function. | + +------------------+-----------------------------------+ + | array_params | Parameters added in one array for | + | | multistream pipeline. | + +------------------+-----------------------------------+ + | gamma_lut | Lookup table for gamma values. | + | | First 256 will be R, next 256 | + | | values are G and last 256 values | + | | are B. | + +------------------+-----------------------------------+ + +.. table:: Table: Compile time parameter + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | XF_HEIGHT | Maximum height of input and | + | | output image. | + +------------------+-----------------------------------+ + | XF_WIDTH | Maximum width of input and output | + | | image. | + +------------------+-----------------------------------+ + | XF_SRC_T | Input pixel type. Supported pixel | + | | width is 16. | + +------------------+-----------------------------------+ + | NUM_STREAMS | Total number of streams. | + +------------------+-----------------------------------+ + | STRM1_ROWS | Maximum number of rows to be | + | | processed for stream 1 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM2_ROWS | Maximum number of rows to be | + | | processed for stream 2 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM3_ROWS | Maximum number of rows to be | + | | processed for stream 3 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM4_ROWS | Maximum number of rows to be | + | | processed for stream 4 in one | + | | burst. | + +------------------+-----------------------------------+ + | BLOCK_WIDTH | Maximum block width the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image width. | + +------------------+-----------------------------------+ + | BLOCK_HEIGHT | Maximum block height the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image height. | + +------------------+----------------+------------------+ + | XF_NPPC | Number of pixels processed per | + | | cycle. Only XF_NPPC1 and XF_NPPC2 | + | | are supported. | + +------------------+-----------------------------------+ + | NO_EXPS | Number of exposure frames to be | + | | merged in the module. | + +------------------+-----------------------------------+ + | W_B_SIZE | W_B_SIZE is used to define the | + | | array size for storing the weight | + | | values for wr_hls. | + | | W_B_SIZE should be 2^bit depth. | + +------------------+-----------------------------------+ + +.. table:: Table: Descriptions of array_params + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | rgain | To configure gain value for the | + | | red channel. | + +------------------+-----------------------------------+ + | bgain | To configure gain value for the | + | | blue channel. | + +------------------+-----------------------------------+ + | ggain | To configure gain value for the | + | | green channel. | + +------------------+-----------------------------------+ + | pawb | %top and %bottom pixels are | + | | ignored while computing min and | + | | max to improve quality. | + +------------------+-----------------------------------+ + | bayer_p | The Bayer format of the RAW input | + | | image. | + +------------------+-----------------------------------+ + | black_level | Black level value to adjust | + | | overall brightness of the image. | + +------------------+-----------------------------------+ + | height | The number of rows in the image | + | | or height of the image. | + +------------------+-----------------------------------+ + | width | The number of columns in the | + | | image or width of the image. | + +------------------+-----------------------------------+ + | blk_height | Actual block height. | + +------------------+-----------------------------------+ + | blk_width | Actual block width. | + +------------------+-----------------------------------+ + + +The following example demonstrates the top-level ISP pipeline: - void Streampipeline(ap_uint* img_inp, - ap_uint* img_out, - unsigned short height, - unsigned short width, - uint32_t hist0[3][HIST_SIZE], - uint32_t hist1[3][HIST_SIZE], - int gain0[3], - int gain1[3], - struct ispparams_config params, - unsigned char _gamma_lut[256 * 3], - bool flag) { - xf::cv::Mat imgInput(height, width); - xf::cv::Mat blc_out(height, width); - xf::cv::Mat bpc_out(height, width); - xf::cv::Mat gain_out(height, width); - xf::cv::Mat demosaic_out(height, width); - xf::cv::Mat impop(height, width); - xf::cv::Mat ltm_in(height, width); - xf::cv::Mat lsc_out(height, width); - xf::cv::Mat _dst(height, width); - xf::cv::Mat aecin(height, width); - xf::cv::Mat imgOutput(height, width); +.. code:: c - // clang-format off - #pragma HLS DATAFLOW - // clang-format on - const int Q_VAL = 1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC)); + void ISPPipeline_accel(ap_uint* img_inp1, + ap_uint* img_inp2, + ap_uint* img_inp3, + ap_uint* img_inp4, + ap_uint* img_out1, + ap_uint* img_out2, + ap_uint* img_out3, + ap_uint* img_out4, + unsigned short array_params[NUM_STREAMS][10], + unsigned char gamma_lut[NUM_STREAMS][256 * 3], + short wr_hls[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]){ + + // clang-format off + #pragma HLS INTERFACE m_axi port=img_inp1 offset=slave bundle=gmem1 + #pragma HLS INTERFACE m_axi port=img_inp2 offset=slave bundle=gmem2 + #pragma HLS INTERFACE m_axi port=img_inp3 offset=slave bundle=gmem3 + #pragma HLS INTERFACE m_axi port=img_inp4 offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=img_out1 offset=slave bundle=gmem5 + #pragma HLS INTERFACE m_axi port=img_out2 offset=slave bundle=gmem6 + #pragma HLS INTERFACE m_axi port=img_out3 offset=slave bundle=gmem7 + #pragma HLS INTERFACE m_axi port=img_out4 offset=slave bundle=gmem8 + #pragma HLS INTERFACE m_axi port=array_params offset=slave bundle=gmem9 + #pragma HLS INTERFACE m_axi port=gamma_lut offset=slave bundle=gmem10 + #pragma HLS INTERFACE m_axi port=wr_hls offset=slave bundle=gmem11 + + // clang-format on + + struct ispparams_config params[NUM_STREAMS]; + + uint32_t tot_rows = 0; + int rem_rows[NUM_STREAMS]; + + static short wr_hls_tmp[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]; + static unsigned char gamma_lut_tmp[NUM_STREAMS][256 * 3]; + + unsigned short height_arr[NUM_STREAMS], width_arr[NUM_STREAMS]; + + ARRAY_PARAMS_LOOP: + for (int i = 0; i < NUM_STREAMS; i++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=NUM_STREAMS + // clang-format on + height_arr[i] = array_params[i][6]; + width_arr[i] = array_params[i][7]; + height_arr[i] = height_arr[i] * 2; + tot_rows = tot_rows + height_arr[i]; + rem_rows[i] = height_arr[i]; + } + + int glut_TC = 256 * 3; + + GAMMA_LUT_LOOP: + for (int n = 0; n < NUM_STREAMS; n++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS + // clang-format on + for(int i=0; i < glut_TC; i++){ + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=glut_TC max=glut_TC + // clang-format on + + gamma_lut_tmp[n][i] = gamma_lut[n][i]; + + } + } + + WR_HLS_INIT_LOOP: + for(int n =0; n < NUM_STREAMS; n++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS + // clang-format on + for (int k = 0; k < XF_NPPC; k++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=XF_NPPC max=XF_NPPC + // clang-format on + for (int i = 0; i < NO_EXPS; i++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NO_EXPS max=NO_EXPS + // clang-format on + for (int j = 0; j < (W_B_SIZE); j++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=W_B_SIZE max=W_B_SIZE + // clang-format on + wr_hls_tmp[n][(i + k * NO_EXPS) * W_B_SIZE + j] = wr_hls[n][(i + k * NO_EXPS) * W_B_SIZE + j]; + } + } + } + } + + const uint16_t pt[NUM_STREAMS] = {STRM1_ROWS, STRM2_ROWS, STRM3_ROWS, STRM4_ROWS}; + uint16_t max = STRM1_ROWS; + for (int i = 1; i < NUM_STREAMS; i++) { + if (pt[i] > max) max = pt[i]; + } + + const uint16_t TC = tot_rows / max; + uint32_t addrbound, wr_addrbound, num_rows; + + int strm_id = 0, idx = 0; + bool eof_awb[NUM_STREAMS] = {0}; + bool eof_ltm[NUM_STREAMS] = {0}; + + uint32_t rd_offset1 = 0, rd_offset2 = 0, rd_offset3 = 0, rd_offset4 = 0; + uint32_t wr_offset1 = 0, wr_offset2 = 0, wr_offset3 = 0, wr_offset4 = 0; + + TOTAL_ROWS_LOOP: + for (int r = 0; r < tot_rows;) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS max=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS + // clang-format on + + // Compute no.of rows to process + if (rem_rows[idx] / 2 > pt[idx]) { // Check number for remaining rows of 1 interleaved image + num_rows = pt[idx]; + eof_awb[idx] = 0; // 1 interleaved image/stream is not done + eof_ltm[idx] = 0; + } else { + num_rows = rem_rows[idx] / 2; + eof_awb[idx] = 1; // 1 interleaved image/stream done + eof_ltm[idx] = 1; + } + + strm_id = idx; + + if (idx == 0 && num_rows > 0) { + Streampipeline(img_inp1 + rd_offset1, img_out1 + wr_offset1, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset1 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset1 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + + } else if (idx == 1 && num_rows > 0) { + Streampipeline(img_inp2 + rd_offset2, img_out2 + wr_offset2, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset2 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset2 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + + } else if (idx == 2 && num_rows > 0) { + Streampipeline(img_inp3 + rd_offset3, img_out3 + wr_offset3, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset3 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset3 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + } else if (idx == 3 && num_rows > 0) { + Streampipeline(img_inp4 + rd_offset4, img_out4 + wr_offset4, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset4 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset4 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + } + // Update remaining rows to process + rem_rows[idx] = rem_rows[idx] - num_rows * 2; + + // Next stream selection + if (idx == NUM_STREAMS - 1) + idx = 0; + + else + idx++; + + // Update total rows to process + r += num_rows * 2; + } + + return; + } + - float thresh = (float)params.pawb / 256; - float inputMax = (1 << (XF_DTPIXELDEPTH(XF_SRC_T, XF_NPPC))) - 1; // 65535.0f; +Create and Launch kernel in the testbench: - float mul_fact = (inputMax / (inputMax - params.black_level)); +Histogram function needs two frames to populate the histogram array and to get correct +auto white balance results. For the example below too, two iterations +are needed as AWB function is used. - xf::cv::Array2xfMat(img_inp, imgInput); - xf::cv::blackLevelCorrection(imgInput, blc_out, - params.black_level, mul_fact); - // xf::cv::badpixelcorrection(imgInput2, bpc_out); +.. code:: c - xf::cv::gaincontrol(blc_out, gain_out, params.rgain, params.bgain, - params.ggain, params.bayer_p); - xf::cv::demosaicing(gain_out, demosaic_out, params.bayer_p); + // Create a kernel: + OCL_CHECK(err, cl::Kernel kernel(program, "ISPPipeline_accel", &err)); + + for (int i = 0; i < 2; i++) { + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_array, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + array_size_bytes, // Size in bytes + array_params)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_in_size_bytes, // Size in bytes + gamma_lut)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec_Weights, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_weight_size_bytes, // Size in bytes + wr_hls)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage1, CL_TRUE, 0, image_in_size_bytes, interleaved_img1.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage2, CL_TRUE, 0, image_in_size_bytes, interleaved_img2.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage3, CL_TRUE, 0, image_in_size_bytes, interleaved_img3.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage4, CL_TRUE, 0, image_in_size_bytes, interleaved_img4.data)); + + // Profiling Objects + cl_ulong start = 0; + cl_ulong end = 0; + double diff_prof = 0.0f; + cl::Event event_sp; + + // Launch the kernel + OCL_CHECK(err, err = q.enqueueTask(kernel, NULL, &event_sp)); + clWaitForEvents(1, (const cl_event*)&event_sp); + + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_START, &start); + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_END, &end); + diff_prof = end - start; + std::cout << (diff_prof / 1000000) << "ms" << std::endl; + // Copying Device result data to Host memory + q.enqueueReadBuffer(buffer_outImage1, CL_TRUE, 0, image_out_size_bytes, out_img1.data); + q.enqueueReadBuffer(buffer_outImage2, CL_TRUE, 0, image_out_size_bytes, out_img2.data); + q.enqueueReadBuffer(buffer_outImage3, CL_TRUE, 0, image_out_size_bytes, out_img3.data); + q.enqueueReadBuffer(buffer_outImage4, CL_TRUE, 0, image_out_size_bytes, out_img4.data); + } - function_awb(demosaic_out, ltm_in, hist0, hist1, gain0, gain1, - height, width, thresh, flag); - xf::cv::colorcorrectionmatrix(ltm_in, lsc_out); - if (XF_DST_T == XF_8UC3) { - fifo_copy(lsc_out, aecin, height, width); - } else { - xf::cv::xf_QuatizationDithering(lsc_out, aecin); - } - xf::cv::gammacorrection(aecin, _dst, _gamma_lut); - // ColorMat2AXIvideo(_dst, m_axis_video); - xf::cv::rgb2yuyv(_dst, imgOutput); + +.. rubric:: Resource Utilization - xf::cv::xfMat2Array(imgOutput, img_out); +The following table summarizes the resource utilization of ISP multistream generated using Vitis +HLS 2022.2 tool on ZCU102 board. - return; - } +.. table:: Table . ISP multistream Resource Utilization Summary + + + +----------------+---------------------------+-------------------------------------------------+ + | Operating Mode | Operating Frequency (MHz) | Utilization Estimate | + + + +------------+-----------+-----------+------------+ + | | | BRAM | DSP | CLB | CLB | + | | | | | Registers | LUT | + +================+===========================+============+===========+===========+============+ + | 2 Pixel | 150 | 638 | 310 | 64964 | 64103 | + +----------------+---------------------------+------------+-----------+-----------+------------+ -The ISP multistream Pipeline design is validated on Alveo U200 board at 300 MHz frequency. +.. rubric:: Performance Estimate + +The following table summarizes the performance of the ISP multistream in 2-pixel +mode as generated using Vitis HLS 2022.2 tool on ZCU102 board. + +Estimated average latency is obtained by running the accel with 200 iterations. +The input to the accel is an interleaved image containing one long-exposure frame +and one short-exposure frame which are both full-HD (1920x1080) images. -.. table:: Table Resource Utilization Summary +.. table:: Table . ISP multistream Performance Estimate Summary - +----------------+----------------+---------------------+----------------------+----------+-------+-------+------+ - | Operating Mode | Filter size | Operating Frequency | Utilization Estimate | - | | | | | - | | | (MHz) | | - + + + +----------------------+----------+-------+-------+------+ - | | | | BRAM_18K | DSP | FF | LUT | URAM | - +================+================+=====================+======================+==========+=======+=======+======+ - | 2 Pixel | 3x3 | 300 | 29 | 69 | 21230 | 18332 | 0 | - +----------------+----------------+---------------------+----------------------+----------+-------+-------+------+ + +-----------------------------+-------------------------+ + | | Latency Estimate | + + Operating Mode +-------------------------+ + | | Average latency(ms) | + +=============================+=========================+ + | 2 pixel operation (150 MHz) | 64.871 | + +-----------------------------+-------------------------+ -.. table:: Table Performance Estimate Summary - +----------------+---------------------+------------------+ - | Operating Mode | Operating Frequency | Latency Estimate | - | | | | - | | (MHz) | | - + + +------------------+ - | | | Max (ms) | - +================+=====================+==================+ - | 2 pixel | 300 | 17.9ms | - +----------------+---------------------+------------------+ .. _isp-aio: -.. include:: include/isp_aio_api.rst +.. include:: include/isp_aio_adas.rst .. |pp_image1| image:: ./images/letterbox.PNG :class: image diff --git a/vision/docs/src/images/ISP_All_in_one_adas_Pipeline.PNG b/vision/docs/src/images/ISP_All_in_one_adas_Pipeline.PNG new file mode 100755 index 0000000000000000000000000000000000000000..7fa32a33ee1915b9421f379b0701f7d86c5a79b9 GIT binary patch literal 50183 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

i?n3#Du;fzJ(Bv7G$A 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 G|9=20m9GW> literal 0 HcmV?d00001 diff --git a/vision/docs/src/include/isp_aio_adas.rst b/vision/docs/src/include/isp_aio_adas.rst new file mode 100755 index 0000000000..3cb446e34c --- /dev/null +++ b/vision/docs/src/include/isp_aio_adas.rst @@ -0,0 +1,465 @@ +ISP all_in_one_adas pipeline +============================= + +The ISP all_in_one_adas pipeline contains all the necessary functions that +will enable the user to test several combinations of the image sensor +processing pipeline. + +For example, we can test the Surround View System (SVS), INCABIN and +Forward/Rear view pipeline using this ISP all_in_one_adas pipeline. This ISP +all_in_one_adas pipeline takes an interleaved image which contains Short +Exposure Frame (SEF) and Long Exposure Frame (LEF) as input when HDR +modules are enabled for SVS pipeline and returns the HDR merged +output. + +- **Extract Exposure Frames:** The Extract Exposure Frames module returns + the Short Exposure Frame and Long Exposure Frame from the input frame + using the Digital overlap parameter. + +- **HDR Merge:** HDR Merge module generates the High Dynamic Range + image from a set of different exposure frames. Usually, image sensors + have limited dynamic range and it’s difficult to get HDR image with + single image capture. From the sensor, the frames are collected with + different exposure times and will get different exposure frames, + HDR Merge will generate the HDR frame with those exposure frames. + +- **BPC (Bad Pixel Correction)**: An image sensor may have a certain + number of defective/bad pixels that may be the result of + manufacturing faults or variations in pixel voltage levels based on + temperature or exposure. Bad Pixel Correction module removes + defective pixels. + +- **Black Level Correction:** Black level leads to the whitening of + image in dark regions and perceived loss of overall contrast. The + Black Level Correction algorithm corrects the black and white levels of + the overall image. + +- **RGBIR to Bayer:** This module converts the input image with R, G, + B, IR pixel data into a standard Bayer pattern image along with a + full IR data image. + +- **Gain Control**: The Gain Control module improves the overall + brightness of the image. + +- **Demosaicing:** The Demosaic module reconstructs RGB pixels from the + input Bayer image (RGGB, BGGR, RGBG, GRGB). + +- **Auto white balance:** The AWB module improves color balance of the + image by using image statistics. + +- **Quantization & Dithering:** This algorithm dithers input image + using Floyd-Steinberg dithering method. It is commonly used by image + manipulation software, for example when an image is converted into + GIF format each pixel intensity value is quantized to 8 bits i.e. 256 + colors. + +- **Global Tone Mapping:** Reduces the dynamic range from higher range + to display range using tone mapping. + +- **Local Tone Mapping:** Local Tone Mapping takes pixel neighbor + statistics into account and produces images with more contrast and + brightness. + +- **Gamma Correction:** Gamma Correction improves the overall + brightness of image. + +- **Color Correction Matrix**: Color Correction Matrix algorithm + converts the input image color format to output image color format + using the Color Correction Matrix provided by the user (CCM_TYPE). + +- **3DLUT:** Operate on three independent parameters. This drastically + increases the number of mapped indexes to value pairs. For example, a + combination of 3 individual 1D LUTs can map 2^n \* 3 values where n + is the bit depth, whereas a 3D LUT processing 3 channels will have + 2^n \* 2^n \* 2^n possible values. + +- **Color Space Conversion**: Converting RGB image to YUV422(YUYV) + image for HDMI display purpose. RGB2YUYV converts the RGB image into + Y channel for every pixel and U and V for alternate pixels. + +.. image:: ./images/ISP_All_in_one_adas_Pipeline.PNG + :class: image + :width: 1000 + +.. table:: Runtime parameter for the pipeline + + +-----------------------------------+-----------------------------------+ + | **Parameter** | **Descriptions** | + +===================================+===================================+ + | height | The number of rows in the image | + | | or height of the image. | + +-----------------------------------+-----------------------------------+ + | width | The number of columns in the | + | | image or width of the image. | + +-----------------------------------+-----------------------------------+ + | wr_hls | Lookup table for weight values. | + | | Computing the weights LUT in host | + | | side and passing as input to the | + | | function. | + +-----------------------------------+-----------------------------------+ + | rgain | To configure gain value for the | + | | red channel. | + +-----------------------------------+-----------------------------------+ + | bgain | To configure gain value for the | + | | blue channel. | + +-----------------------------------+-----------------------------------+ + | R_IR_C1_wgts | 5x5 Weights to calculate R at IR | + | | location for constellation1. | + +-----------------------------------+-----------------------------------+ + | R_IR_C2_wgts | 5x5 Weights to calculate R at IR | + | | location for constellation2. | + +-----------------------------------+-----------------------------------+ + | B_at_R_wgts | 5x5 Weights to calculate B at R | + | | location. | + +-----------------------------------+-----------------------------------+ + | IR_at_R_wgts | 3x3 Weights to calculate IR at R | + | | location. | + +-----------------------------------+-----------------------------------+ + | IR_at_B_wgts | 3x3 Weights to calculate IR at B | + | | location. | + +-----------------------------------+-----------------------------------+ + | sub_wgts | Weights to perform weighted | + | | subtraction of IR image from RGB | + | | image. sub_wgts[0] -> G Pixel, | + | | sub_wgts[1] -> R Pixel, | + | | sub_wgts[2] -> B Pixel | + | | sub_wgts[3] -> calculated B Pixel | + +-----------------------------------+-----------------------------------+ + | pawb | %top and %bottom pixels are | + | | ignored while computing min and | + | | max to improve quality. | + +-----------------------------------+-----------------------------------+ + | blk_height | Actual block height. | + +-----------------------------------+-----------------------------------+ + | blk_width | Actual block width. | + +-----------------------------------+-----------------------------------+ + | c1 | To retain the details in bright | + | | area using, c1 in the tone | + | | mapping. | + +-----------------------------------+-----------------------------------+ + | c2 | Efficiency factor, ranges from | + | | 0.5 to 1 based on output device | + | | dynamic range. | + +-----------------------------------+-----------------------------------+ + | gamma_lut | Lookup table for gamma values. | + | | First 256 will be R, next 256 | + | | values are G and last 256 values | + | | are B. | + +-----------------------------------+-----------------------------------+ + | mode_reg | Flag to enable/disable optional | + | | module. | + +-----------------------------------+-----------------------------------+ + | lutDim | Dimension of input lut. | + +-----------------------------------+-----------------------------------+ + +.. table:: Description of mode_reg + + +-----------------------------------+-----------------------------------+ + | **Bit position** | **Descriptions** | + +===================================+===================================+ + | mode_reg[0:0] | This bit of mode_reg dedicated | + | | to enable/disable AWB module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[1:1] | This of mode_reg dedicated to | + | | enable/disable HDR module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[2:2] | Don't care. | + +-----------------------------------+-----------------------------------+ + | mode_reg[3:3] | This bit of mode_reg dedicated | + | | to enable/disable RGBIR module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[4:4] | This bit of mode_reg dedicated | + | | for tone mapper, always | + | | set to 0. | + +-----------------------------------+-----------------------------------+ + | mode_reg[5:5] | This bit of mode_reg dedicated | + | | to enable/disable QnD module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[6:6] | This bit of mode_reg dedicated | + | | to enable/disable LTM module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[7:7] | This bit of mode_reg dedicated | + | | to enable/disable GTM module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[8:8] | This bit of mode_reg dedicated | + | | to enable/disable CCM module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[9:9] | This bit of mode_reg dedicated | + | | to enable/disable 3DLUT module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[10:10] | This bit of mode_reg dedicated | + | | to enable/disable CSC module. | + +-----------------------------------+-----------------------------------+ + | mode_reg[15:11] | Don't care. | + +-----------------------------------+-----------------------------------+ + +.. table:: Compile time parameter + + +-----------------------------------+-----------------------------------+ + | **Parameter** | **Description** | + +===================================+===================================+ + | XF_HEIGHT | Maximum height of input and | + | | output image. | + +-----------------------------------+-----------------------------------+ + | XF_WIDTH | Maximum width of input and output | + | | image. | + +-----------------------------------+-----------------------------------+ + | XF_BAYER_PATTERN | The Bayer format of the RAW input | + | | image. Supported formats are | + | | XF_BAYER_RG. | + +-----------------------------------+-----------------------------------+ + | XF_SRC_T | Input pixel type. Supported pixel | + | | width is 16. | + +-----------------------------------+-----------------------------------+ + | SQLUTDIM | Squared value of maximum | + | | dimension of input LUT. | + +-----------------------------------+-----------------------------------+ + | LUTDIM | 33x33 dimension of input LUT. | + +-----------------------------------+-----------------------------------+ + | BLOCK_WIDTH | Maximum block width the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image width. | + +-----------------------------------+-----------------------------------+ + | BLOCK_HEIGHT | Maximum block height the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image height. | + +-----------------------------------+-----------------------------------+ + | XF_NPPC | Number of pixels processed per | + | | cycle. | + +-----------------------------------+-----------------------------------+ + | NO_EXPS | Number of exposure frames to be | + | | merged in the module. | + +-----------------------------------+-----------------------------------+ + | W_B_SIZE | W_B_SIZE is used to define the | + | | array size for storing the weight | + | | values for wr_hls. | + | | W_B_SIZE should be 2^bit depth. | + +-----------------------------------+-----------------------------------+ + + + +The following example demonstrates the top-level ISP pipeline: + +.. code:: c + + void ISPPipeline_accel(ap_uint* img_inp, /* Array2xfMat */ + ap_uint* img_out, /* xfMat2Array */ + ap_uint* img_out_ir, /* xfMat2Array */ + int height, /* HDR, rgbir2bayer, fifo_copy */ + int width, /* HDR, rgbir2bayer, fifo_copy */ + short* wr_hls, /* HDR */ + uint16_t rgain, /* gaincontrol */ + uint16_t bgain, /* gaincontrol */ + char *R_IR_C1_wgts, /* rgbir2bayer */ + char *R_IR_C2_wgts, /* rgbir2bayer */ + char *B_at_R_wgts, /* rgbir2bayer */ + char *IR_at_R_wgts, /* rgbir2bayer */ + char *IR_at_B_wgts, /* rgbir2bayer */ + char *sub_wgts, /* rgbir2bayer */ + uint16_t pawb, /* awb */ + int blk_height, /* LTM */ + int blk_width, /* LTM */ + float c1, /* gtm */ + float c2, /* gtm */ + unsigned char gamma_lut[256 * 3], /* gammacorrection */ + unsigned short mode_reg, + ap_uint* lut, /* lut3d */ + int lutDim /* lut3d */ ){ + // clang-format off + #pragma HLS INTERFACE m_axi port=img_inp offset=slave bundle=gmem1 + #pragma HLS INTERFACE m_axi port=img_out offset=slave bundle=gmem2 + #pragma HLS INTERFACE m_axi port=img_out_ir offset=slave bundle=gmem3 + #pragma HLS INTERFACE m_axi port=R_IR_C1_wgts offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=R_IR_C2_wgts offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=B_at_R_wgts offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=IR_at_R_wgts offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=IR_at_B_wgts offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=sub_wgts offset=slave bundle=gmem5 + #pragma HLS INTERFACE m_axi port=gamma_lut offset=slave bundle=gmem6 + #pragma HLS INTERFACE m_axi port=wr_hls offset=slave bundle=gmem7 + #pragma HLS INTERFACE m_axi port=lut offset=slave bundle=gmem8 + + #pragma HLS ARRAY_PARTITION variable=IR_at_B_wgts complete dim=1 + #pragma HLS ARRAY_PARTITION variable=bgain complete dim=1 + #pragma HLS ARRAY_PARTITION variable=rgain complete dim=1 + #pragma HLS ARRAY_PARTITION variable=R_IR_C2_wgts complete dim=1 + #pragma HLS ARRAY_PARTITION variable=R_IR_C1_wgts complete dim=1 + #pragma HLS ARRAY_PARTITION variable=sub_wgts complete dim=1 + #pragma HLS ARRAY_PARTITION variable=IR_at_R_wgts complete dim=1 + #pragma HLS ARRAY_PARTITION variable=mode_reg complete dim=1 + #pragma HLS ARRAY_PARTITION variable=pawb complete dim=1 + #pragma HLS ARRAY_PARTITION variable=hist0_awb complete dim=1 + #pragma HLS ARRAY_PARTITION variable=hist1_awb complete dim=1 + + #pragma HLS ARRAY_PARTITION variable=omin dim=1 complete + #pragma HLS ARRAY_PARTITION variable=omin dim=2 cyclic factor=2 + #pragma HLS ARRAY_PARTITION variable=omin dim=3 cyclic factor=2 + #pragma HLS ARRAY_PARTITION variable=omax dim=1 complete + #pragma HLS ARRAY_PARTITION variable=omax dim=2 cyclic factor=2 + #pragma HLS ARRAY_PARTITION variable=omax dim=3 cyclic factor=2 + // clang-format on + if (!flag) { + ISPpipeline(img_inp, img_out, img_out_ir, mode_reg, height, width, wr_hls, R_IR_C1_wgts, R_IR_C2_wgts, + B_at_R_wgts, IR_at_R_wgts, IR_at_B_wgts, sub_wgts, rgain, bgain, hist0_awb, hist1_awb, + igain_0, igain_1, pawb, gamma_lut, omin[0], omax[0], omin[1], omax[1], blk_height,blk_width, + mean2, mean1, L_max2, L_max1, L_min2, L_min1, c1, c2, lut, lutDim); + flag = 1; + } else { + ISPpipeline(img_inp, img_out, img_out_ir, mode_reg, height, width, wr_hls, R_IR_C1_wgts, R_IR_C2_wgts, + B_at_R_wgts, IR_at_R_wgts, IR_at_B_wgts, sub_wgts, rgain, bgain, hist1_awb, hist0_awb, + igain_1, igain_0, pawb, gamma_lut, omin[1], omax[1], omin[0], omax[0], blk_height, blk_width, + mean1, mean2, L_max1, L_max2, L_min1, L_min2, c1, c2, lut, lutDim); + flag = 0; + } + } + + + +Create and Launch kernel in the testbench: + +Histogram needs two frames to populate the histogram and to get correct +auto white balance results. GTM and other tone-mapping functions need +three frames to populate its parameters and apply those parameters to +get a corrected image. For the specific example below, three iterations +are needed because the GTM function is selected. + + +.. code:: c + + // Create a kernel: + OCL_CHECK(err, cl::Kernel kernel(program, "ISPPipeline_accel", &err)); + + for (int i = 0; i < 3; i++) { + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_in_size_bytes, // Size in bytes + gamma_lut)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_R_IR_C1, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + filter1_in_size_bytes, // Size in bytes + R_IR_C1_wgts)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_R_IR_C2, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + filter1_in_size_bytes, // Size in bytes + R_IR_C2_wgts)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_B_at_R, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + filter1_in_size_bytes, // Size in bytes + B_at_R_wgts)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_IR_at_R, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + filter2_in_size_bytes, // Size in bytes + IR_at_R_wgts)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_IR_at_B, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + filter2_in_size_bytes, // Size in bytes + IR_at_B_wgts)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_sub_wgts, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + sub_wgts_in_size_bytes, // Size in bytes + sub_wgts)); + + if (hdr_en) { + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec_Weights, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_weight_size_bytes, // Size in bytes + wr_hls)); + + OCL_CHECK(err, q.enqueueWriteBuffer(imageToDevice, + CL_TRUE, 0, + image_in_size_bytes, + interleaved_img.data)); + + } else { + OCL_CHECK(err, q.enqueueWriteBuffer(imageToDevice, + CL_TRUE, 0, + image_in_size_bytes, + in_img1.data)); + } + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inLut, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + lut_in_size_bytes, // Size in bytes + casted_lut, // Pointer to the data to copy + nullptr)); + // Profiling Objects + cl_ulong start = 0; + cl_ulong end = 0; + double diff_prof = 0.0f; + cl::Event event_sp; + + // Launch the kernel + + OCL_CHECK(err, err = q.enqueueTask(kernel, NULL, &event_sp)); + + clWaitForEvents(1, (const cl_event*)&event_sp); + + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_START, &start); + + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_END, &end); + + diff_prof = end - start; + std::cout << (diff_prof / 1000000) << "ms" << std::endl; + // Copying Device result data to Host memory + q.enqueueReadBuffer(imageFromDevice, CL_TRUE, 0, image_out_size_bytes, out_img.data); + if (rgbir_en) { + q.enqueueReadBuffer(imageFromDevice_ir, CL_TRUE, 0, image_out_ir_size_bytes, out_img_ir.data); + } + } + + + +.. rubric:: Resource Utilization + +The following table summarizes the resource utilization of ISP all_in_one_adas generated using Vitis +HLS 2022.2 tool on ZCU102 board. + +.. table:: Table . ISP all_in_one_adas Resource Utilization Summary + + + +----------------+---------------------------+-------------------------------------------------+ + | Operating Mode | Operating Frequency (MHz) | Utilization Estimate | + + + +------------+-----------+-----------+------------+ + | | | BRAM | DSP | CLB | CLB | + | | | | | Registers | LUT | + +================+===========================+============+===========+===========+============+ + | 1 Pixel | 150 | 178 | 305 | 61210 | 63566 | + +----------------+---------------------------+------------+-----------+-----------+------------+ + +.. rubric:: Performance Estimate + +The following table summarizes the performance of the ISP all_in_one_adas in 1-pixel +mode as generated using Vitis HLS 2022.2 tool on ZCU102 board. + +Estimated average latency is obtained by running the accel with 3 iterations. +The input to the accel is an interleaved image containing one long-exposure frame +and one short-exposure frame which are both full-HD (1920x1080) images. + +.. table:: Table . ISP all_in_one_adas Performance Estimate Summary + + +-----------------------------+-------------------------+ + | | Latency Estimate | + + Operating Mode +-------------------------+ + | | Average latency(ms) | + +=============================+=========================+ + | 1 pixel operation (150 MHz) | 29.509 | + +-----------------------------+-------------------------+ + diff --git a/vision/docs/src/include/isp_multistream.rst b/vision/docs/src/include/isp_multistream.rst new file mode 100755 index 0000000000..31c77b6986 --- /dev/null +++ b/vision/docs/src/include/isp_multistream.rst @@ -0,0 +1,444 @@ +.. vim: syntax=rst + +ISP multistream pipeline: +======================== + +ISP multistream pipeline allows user to process input from multi streams using one instance of ISP. +Current multi stream pipeline process 4 streams in a Round-Robin method with input TYPE as XF_16UC1 +and output TYPE as XF_8UC3(RGB) after the color conversion to YUV color space the output TYPE is +XF_16UC1(YUYV). + +This ISP pipeline includes 9 blocks, they are following: + +- **Extract Exposure Frames:** The Extract Exposure Frames module returns + the Short Exposure Frame and Long Exposure Frame from the input frame + using the Digital overlap parameter. + +- **HDR Merge:** HDR Merge module generates the High Dynamic Range + image from a set of different exposure frames. Usually, image sensors + have limited dynamic range and it’s difficult to get HDR image with + single image capture. From the sensor, the frames are collected with + different exposure times and will get different exposure frames. + HDR Merge will generate the HDR frame with those exposure frames. + +- **Black Level Correction:** Black level leads to the whitening of + image in dark regions and perceived loss of overall contrast. The + Black level correction algorithm corrects the black and white levels of + the overall image. + +- **Gain Control**: The Gain control module improves the overall + brightness of the image. + +- **Demosaicing:** The Demosaic module reconstructs RGB pixels from the + input Bayer image (RGGB, BGGR, RGBG, GRGB). + +- **Auto White Balance:** The AWB module improves color balance of the + image by using image statistics. + +- **Color Correction Matrix**: Color Correction Matrix algorithm + converts the input image color format to output image color format + using the Color Correction Matrix provided by the user (CCM_TYPE). + +- **Local Tone Mapping:** Local Tone Mapping takes pixel neighbor statistics + into account and produces images with more contrast and brightness. + +- **Gamma Correction:** Gamma Correction improves the overall + brightness of image. + +- **Color Space Conversion**: Converting RGB image to YUV422(YUYV) + image for HDMI display purpose. RGB2YUYV converts the RGB image into + Y channel for every pixel and U and V for alternate pixels. + +.. rubric:: ISP multistream Diagram +.. image:: ./images/ISP_multistream.PNG + :class: image + :width: 1000 + +.. rubric:: Parameter Descriptions + +.. table:: Table: Runtime parameter + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | wr_hls | Lookup table for weight values. | + | | Computing the weights LUT in host | + | | side and passing as input to the | + | | function. | + +------------------+-----------------------------------+ + | array_params | Parameters added in one array for | + | | multistream pipeline. | + +------------------+-----------------------------------+ + | gamma_lut | Lookup table for gamma values. | + | | First 256 will be R, next 256 | + | | values are G and last 256 values | + | | are B. | + +------------------+-----------------------------------+ + +.. table:: Table: Compile time parameter + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | XF_HEIGHT | Maximum height of input and | + | | output image. | + +------------------+-----------------------------------+ + | XF_WIDTH | Maximum width of input and output | + | | image. | + +------------------+-----------------------------------+ + | XF_SRC_T | Input pixel type. Supported pixel | + | | width is 16. | + +------------------+-----------------------------------+ + | NUM_STREAMS | Total number of streams. | + +------------------+-----------------------------------+ + | STRM1_ROWS | Maximum number of rows to be | + | | processed for stream 1 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM2_ROWS | Maximum number of rows to be | + | | processed for stream 2 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM3_ROWS | Maximum number of rows to be | + | | processed for stream 3 in one | + | | burst. | + +------------------+-----------------------------------+ + | STRM4_ROWS | Maximum number of rows to be | + | | processed for stream 4 in one | + | | burst. | + +------------------+-----------------------------------+ + | BLOCK_WIDTH | Maximum block width the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image width. | + +------------------+-----------------------------------+ + | BLOCK_HEIGHT | Maximum block height the image is | + | | divided into. This can be any | + | | positive integer greater than or | + | | equal to 32 and less than input | + | | image height. | + +------------------+----------------+------------------+ + | XF_NPPC | Number of pixels processed per | + | | cycle. Only XF_NPPC1 and XF_NPPC2 | + | | are supported. | + +------------------+-----------------------------------+ + | NO_EXPS | Number of exposure frames to be | + | | merged in the module. | + +------------------+-----------------------------------+ + | W_B_SIZE | W_B_SIZE is used to define the | + | | array size for storing the weight | + | | values for wr_hls. | + | | W_B_SIZE should be 2^bit depth. | + +------------------+-----------------------------------+ + +.. table:: Table: Descriptions of array_params + + +------------------+-----------------------------------+ + | **Parameter** | **Description** | + +==================+===================================+ + | rgain | To configure gain value for the | + | | red channel. | + +------------------+-----------------------------------+ + | bgain | To configure gain value for the | + | | blue channel. | + +------------------+-----------------------------------+ + | ggain | To configure gain value for the | + | | green channel. | + +------------------+-----------------------------------+ + | pawb | %top and %bottom pixels are | + | | ignored while computing min and | + | | max to improve quality. | + +------------------+-----------------------------------+ + | bayer_p | The Bayer format of the RAW input | + | | image. | + +------------------+-----------------------------------+ + | black_level | Black level value to adjust | + | | overall brightness of the image. | + +------------------+-----------------------------------+ + | height | The number of rows in the image | + | | or height of the image. | + +------------------+-----------------------------------+ + | width | The number of columns in the | + | | image or width of the image. | + +------------------+-----------------------------------+ + | blk_height | Actual block height. | + +------------------+-----------------------------------+ + | blk_width | Actual block width. | + +------------------+-----------------------------------+ + + +The following example demonstrates the top-level ISP pipeline: + +.. code:: c + + void ISPPipeline_accel(ap_uint* img_inp1, + ap_uint* img_inp2, + ap_uint* img_inp3, + ap_uint* img_inp4, + ap_uint* img_out1, + ap_uint* img_out2, + ap_uint* img_out3, + ap_uint* img_out4, + unsigned short array_params[NUM_STREAMS][10], + unsigned char gamma_lut[NUM_STREAMS][256 * 3], + short wr_hls[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]){ + + // clang-format off + #pragma HLS INTERFACE m_axi port=img_inp1 offset=slave bundle=gmem1 + #pragma HLS INTERFACE m_axi port=img_inp2 offset=slave bundle=gmem2 + #pragma HLS INTERFACE m_axi port=img_inp3 offset=slave bundle=gmem3 + #pragma HLS INTERFACE m_axi port=img_inp4 offset=slave bundle=gmem4 + #pragma HLS INTERFACE m_axi port=img_out1 offset=slave bundle=gmem5 + #pragma HLS INTERFACE m_axi port=img_out2 offset=slave bundle=gmem6 + #pragma HLS INTERFACE m_axi port=img_out3 offset=slave bundle=gmem7 + #pragma HLS INTERFACE m_axi port=img_out4 offset=slave bundle=gmem8 + #pragma HLS INTERFACE m_axi port=array_params offset=slave bundle=gmem9 + #pragma HLS INTERFACE m_axi port=gamma_lut offset=slave bundle=gmem10 + #pragma HLS INTERFACE m_axi port=wr_hls offset=slave bundle=gmem11 + + // clang-format on + + struct ispparams_config params[NUM_STREAMS]; + + uint32_t tot_rows = 0; + int rem_rows[NUM_STREAMS]; + + static short wr_hls_tmp[NUM_STREAMS][NO_EXPS * XF_NPPC * W_B_SIZE]; + static unsigned char gamma_lut_tmp[NUM_STREAMS][256 * 3]; + + unsigned short height_arr[NUM_STREAMS], width_arr[NUM_STREAMS]; + + ARRAY_PARAMS_LOOP: + for (int i = 0; i < NUM_STREAMS; i++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=NUM_STREAMS + // clang-format on + height_arr[i] = array_params[i][6]; + width_arr[i] = array_params[i][7]; + height_arr[i] = height_arr[i] * 2; + tot_rows = tot_rows + height_arr[i]; + rem_rows[i] = height_arr[i]; + } + + int glut_TC = 256 * 3; + + GAMMA_LUT_LOOP: + for (int n = 0; n < NUM_STREAMS; n++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS + // clang-format on + for(int i=0; i < glut_TC; i++){ + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=glut_TC max=glut_TC + // clang-format on + + gamma_lut_tmp[n][i] = gamma_lut[n][i]; + + } + } + + WR_HLS_INIT_LOOP: + for(int n =0; n < NUM_STREAMS; n++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NUM_STREAMS max=NUM_STREAMS + // clang-format on + for (int k = 0; k < XF_NPPC; k++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=XF_NPPC max=XF_NPPC + // clang-format on + for (int i = 0; i < NO_EXPS; i++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=NO_EXPS max=NO_EXPS + // clang-format on + for (int j = 0; j < (W_B_SIZE); j++) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=W_B_SIZE max=W_B_SIZE + // clang-format on + wr_hls_tmp[n][(i + k * NO_EXPS) * W_B_SIZE + j] = wr_hls[n][(i + k * NO_EXPS) * W_B_SIZE + j]; + } + } + } + } + + const uint16_t pt[NUM_STREAMS] = {STRM1_ROWS, STRM2_ROWS, STRM3_ROWS, STRM4_ROWS}; + uint16_t max = STRM1_ROWS; + for (int i = 1; i < NUM_STREAMS; i++) { + if (pt[i] > max) max = pt[i]; + } + + const uint16_t TC = tot_rows / max; + uint32_t addrbound, wr_addrbound, num_rows; + + int strm_id = 0, idx = 0; + bool eof_awb[NUM_STREAMS] = {0}; + bool eof_ltm[NUM_STREAMS] = {0}; + + uint32_t rd_offset1 = 0, rd_offset2 = 0, rd_offset3 = 0, rd_offset4 = 0; + uint32_t wr_offset1 = 0, wr_offset2 = 0, wr_offset3 = 0, wr_offset4 = 0; + + TOTAL_ROWS_LOOP: + for (int r = 0; r < tot_rows;) { + // clang-format off + #pragma HLS LOOP_TRIPCOUNT min=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS max=(XF_HEIGHT/STRM_HEIGHT)*NUM_STREAMS + // clang-format on + + // Compute no.of rows to process + if (rem_rows[idx] / 2 > pt[idx]) { // Check number for remaining rows of 1 interleaved image + num_rows = pt[idx]; + eof_awb[idx] = 0; // 1 interleaved image/stream is not done + eof_ltm[idx] = 0; + } else { + num_rows = rem_rows[idx] / 2; + eof_awb[idx] = 1; // 1 interleaved image/stream done + eof_ltm[idx] = 1; + } + + strm_id = idx; + + if (idx == 0 && num_rows > 0) { + Streampipeline(img_inp1 + rd_offset1, img_out1 + wr_offset1, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset1 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset1 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + + } else if (idx == 1 && num_rows > 0) { + Streampipeline(img_inp2 + rd_offset2, img_out2 + wr_offset2, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset2 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset2 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + + } else if (idx == 2 && num_rows > 0) { + Streampipeline(img_inp3 + rd_offset3, img_out3 + wr_offset3, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset3 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset3 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + } else if (idx == 3 && num_rows > 0) { + Streampipeline(img_inp4 + rd_offset4, img_out4 + wr_offset4, num_rows, width_arr[idx], hist0_awb, hist1_awb, + igain_0, igain_1, flag_awb, eof_awb, array_params, gamma_lut_tmp, wr_hls_tmp, omin_r, omax_r, + omin_w, omax_w, flag_ltm, eof_ltm, idx); + + rd_offset4 += (2 * num_rows * ((width_arr[idx] + 8) >> XF_BITSHIFT(XF_NPPC))) / 2; + wr_offset4 += (num_rows * (width_arr[idx] >> XF_BITSHIFT(XF_NPPC))) / 2; + } + // Update remaining rows to process + rem_rows[idx] = rem_rows[idx] - num_rows * 2; + + // Next stream selection + if (idx == NUM_STREAMS - 1) + idx = 0; + + else + idx++; + + // Update total rows to process + r += num_rows * 2; + } + + return; + } + + +Create and Launch kernel in the testbench: + +Histogram function needs two frames to populate the histogram array and to get correct +auto white balance results. For the example below too, two iterations +are needed as AWB function is used. + + +.. code:: c + + // Create a kernel: + OCL_CHECK(err, cl::Kernel kernel(program, "ISPPipeline_accel", &err)); + + for (int i = 0; i < 2; i++) { + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_array, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + array_size_bytes, // Size in bytes + array_params)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_in_size_bytes, // Size in bytes + gamma_lut)); + + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inVec_Weights, // buffer on the FPGA + CL_TRUE, // blocking call + 0, // buffer offset in bytes + vec_weight_size_bytes, // Size in bytes + wr_hls)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage1, CL_TRUE, 0, image_in_size_bytes, interleaved_img1.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage2, CL_TRUE, 0, image_in_size_bytes, interleaved_img2.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage3, CL_TRUE, 0, image_in_size_bytes, interleaved_img3.data)); + OCL_CHECK(err, q.enqueueWriteBuffer(buffer_inImage4, CL_TRUE, 0, image_in_size_bytes, interleaved_img4.data)); + + // Profiling Objects + cl_ulong start = 0; + cl_ulong end = 0; + double diff_prof = 0.0f; + cl::Event event_sp; + + // Launch the kernel + OCL_CHECK(err, err = q.enqueueTask(kernel, NULL, &event_sp)); + clWaitForEvents(1, (const cl_event*)&event_sp); + + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_START, &start); + event_sp.getProfilingInfo(CL_PROFILING_COMMAND_END, &end); + diff_prof = end - start; + std::cout << (diff_prof / 1000000) << "ms" << std::endl; + // Copying Device result data to Host memory + q.enqueueReadBuffer(buffer_outImage1, CL_TRUE, 0, image_out_size_bytes, out_img1.data); + q.enqueueReadBuffer(buffer_outImage2, CL_TRUE, 0, image_out_size_bytes, out_img2.data); + q.enqueueReadBuffer(buffer_outImage3, CL_TRUE, 0, image_out_size_bytes, out_img3.data); + q.enqueueReadBuffer(buffer_outImage4, CL_TRUE, 0, image_out_size_bytes, out_img4.data); + } + + +.. rubric:: Resource Utilization + +The following table summarizes the resource utilization of ISP multistream generated using Vitis +HLS 2022.2 tool on ZCU102 board. + +.. table:: Table . ISP multistream Resource Utilization Summary + + + +----------------+---------------------------+-------------------------------------------------+ + | Operating Mode | Operating Frequency (MHz) | Utilization Estimate | + + + +------------+-----------+-----------+------------+ + | | | BRAM | DSP | CLB | CLB | + | | | | | Registers | LUT | + +================+===========================+============+===========+===========+============+ + | 2 Pixel | 150 | 638 | 310 | 64964 | 64103 | + +----------------+---------------------------+------------+-----------+-----------+------------+ + +.. rubric:: Performance Estimate + +The following table summarizes the performance of the ISP multistream in 2-pixel +mode as generated using Vitis HLS 2022.2 tool on ZCU102 board. + +Estimated average latency is obtained by running the accel with 200 iterations. +The input to the accel is an interleaved image containing one long-exposure frame +and one short-exposure frame which are both full-HD (1920x1080) images. + +.. table:: Table . ISP multistream Performance Estimate Summary + + +-----------------------------+-------------------------+ + | | Latency Estimate | + + Operating Mode +-------------------------+ + | | Average latency(ms) | + +=============================+=========================+ + | 2 pixel operation (150 MHz) | 64.871 | + +-----------------------------+-------------------------+ + + + + + diff --git a/vision/docs/src/releasenotesxfopencv.rst b/vision/docs/src/releasenotesxfopencv.rst index 41830e5cd9..20d84a31f6 100755 --- a/vision/docs/src/releasenotesxfopencv.rst +++ b/vision/docs/src/releasenotesxfopencv.rst @@ -46,6 +46,10 @@ New features and functions • Fixed SVM emulation and cosim hang issue • Updated loop tripcounts of pyrDown, histogram, HDR extract, rgb2yuyv module in cvtColor to fix synthesis latency numbers • Fix array reshape pragma in xf_sobel.hpp, xf_video_mem.hpp files + • Modified XFCVDEPTH values in all functions + • Stride support added in the preprocess kernel of L3 Defect Detection pipeline + • Order of kernels changed in all-in-one pipeline and renamed as all-in-one-adas + • Array partitions in accel file moved to kernel file in isp multistream pipeline • Lib Infra Changes: • Added frequency setting in L2/L3 JSON files. 300 MHz for NPPC1 and 150MHz for NPPC8 for most cases.