MI IVE API


REVISION HISTORY

Revision No.
Description
Date
2.03
  • Initial release.
  • 04/12/2018
    2.04
  • Added function descriptions in regard to MI_IVE_Bernsen, MI_IVE_LineFilterHor, MI_IVE_LineFilterVer, MI_IVE_NoiseRemoveHor, MI_IVE_NoiseRemoveVer, MI_IVE_AdpThresh, MI_IVE_Resize, MI_IVE_BAT, and MI_IVE_Acc.
  • 06/05/2019
    2.05
  • Added function descriptions to MI_IVE_Matrix_Transform and MI_IVE_Image_Dot.
  • Added description of new input parameter for add function.
  • Added description of new input mode for lbp function.
  • 10/09/2019
    2.06
  • Added function description to MI_IVE_Shift_Detector.
  • 09/16/2020
    2.07
  • Modified the description of MI_IVE_Csc.
  • Modified the parameters range for matrix transform function.
  • Modified the description of return value.
  • Added API reference: MI_IVE_Shift_detector; MI_IVE_Alphablending.
  • 10/14/2020
    2.08
  • Correct the formula of MagAndAng and CannyHsysEdge.
  • Add description of MI_IVE_MatrTranfCtrlMode_e.
  • 08/13/2021
    2.09
  • More detailed description of MI_IVE_Ccl calling method.
  • Added fourth paragraph topic---Hardware acceleration implementation list.
  • 08/26/2021
    2.10
  • Add note for matrix_transform.
  • 01/26/2022
    2.11
  • Add new support enMode for CSC.
  • 03/15/2022
    2.12
  • Added function description to MI_IVE_Create_Handle.
  • Rename IVE lib.
  • 03/18/2022
    2.13
  • Fix format error.
  • 04/22/2022
    2.14
  • Add description about limitation.
  • 06/02/2022
    2.15
  • Add new API reference of MI_IVE_BGBlur.
  • Modify description of MI_IVE_Ccl & MI_IVE_Gmm & MI_IVE_Resize.
  • Add new datatype of MI_IVE_HANDLE_MAX & MI_IVE_ResizeMethod_e & MI_IVE_BgBlurMode_e & MI_IVE_BgBlurCtrl_t.
  • 12/13/2022
    2.16
  • Update the maximum resolution limitation of MI_IVE_Resize.
  • 03/30/2023
    2.17
  • Add Mask preprocess mode of BGBlur.
  • 07/31/2023
    2.18
  • Revise and refine formulas in document.
  • Refine the figure of coefficient template & MI_IVE_Thresh & MI_IVE_Gmm, and add the figure of MI_IVE_ThreshS16 & MI_IVE_ThreshU16.
  • Move the common part in MI_IVE_Filter to the front of API reference.
  • Modify the description of MI_IVE_Ccl & MI_IVE_Gmm & MI_IVE_Resize & MI_IVE_BGBlur.
  • 08/22/2023

    1. API 参考


    该功能提供以下API:

    API名 功能
    MI_IVE_Create_Handle 建立可用的IVE handle句柄号
    MI_IVE_Create 建立IVE handle
    MI_IVE_Destroy 释放IVE handle
    MI_IVE_Filter 执行 5x5 模板滤波任务
    MI_IVE_Csc 执行色彩空间转换任务
    MI_IVE_FilterAndCsc 执行模板滤波加色彩空间转换复合任务
    MI_IVE_Sobel 执行 5x5 模板 Sobel-like 梯度计算任务。
    MI_IVE_MagAndAng 执行 5x5 模板计算梯度幅值与幅角任务。
    MI_IVE_Dilate 执行膨胀任务
    MI_IVE_Erode 执行腐蚀任务。
    MI_IVE_Thresh 执行图像阈值化任务。
    MI_IVE_And 执行两图像相与任务
    MI_IVE_Sub 执行两图像相减任务。
    MI_IVE_Or 执行两图像相或任务
    MI_IVE_Integ 执行积分图统计任务。
    MI_IVE_Hist 执行直方图统计任务。
    MI_IVE_ThreshS16 执行 S16 数据到 8bit 数据阈值化任务
    MI_IVE_ThreshU16 执行 U16 数据到 U8 数据阈值化任务。
    MI_IVE_16BitTo8Bit 执行 16bit 数据到 8bit 数据线性转化任务。
    MI_IVE_OrdStatFilter 执行 3x3 模板顺序统计量滤波任务
    MI_IVE_Map 执行Map(映射 U8->U8 赋值)任务。
    MI_IVE_EqualizeHist 执行灰度图像的直方图均衡化计算任务
    MI_IVE_Add 执行两灰度图像的加权加计算任务
    MI_IVE_Xor 执行两二值图的异或计算任务
    MI_IVE_Ncc 执行两相同分辨率图像的归一化互相关系数计算任务
    MI_IVE_Ccl 执行二值图像的连通区域标记任务
    MI_IVE_Gmm 执行 GMM 背景建模任务
    MI_IVE_CannyHysEdge 执行灰度图的 Canny 强弱边缘提取任务
    MI_IVE_CannyEdge 灰度图的 Canny 边缘提取的后半部:连接边缘点,形成Canny 边缘图。
    MI_IVE_Lbp 执行LBP 计算任务。
    MI_IVE_NormGrad 执行归一化梯度计算任务,梯度均分量均归一化到 S8
    MI_IVE_LkOpticalFlow 执行单层 LK 光流计算任务。
    MI_IVE_Sad 计算两幅图像按 4x4/8x8/16x16 分块的 16 bit/8 bit SAD 图像, 以及对 SAD 进行阈值化输出。
    MI_IVE_Bernsen 执行 3x3 和 5x5 模板的 Bernsen 门坎值阈值化任务。
    MI_IVE_LineFilterHor 针对二值图像进行水平方向的滤波任务
    MI_IVE_LineFilterVer 针对二值图像进行垂直方向的滤波任务
    MI_IVE_NoiseRemoveHor 针对二值图像进行水平方向的噪声滤除任务。
    MI_IVE_NoiseRemoveVer 针对二值图像进行垂直方向的噪声滤除任务。
    MI_IVE_AdpThresh 执行使用自适应性门坎值的阈值化任务。
    MI_IVE_Resize 执行缩放图像任务。
    MI_IVE_Bat 针对二值图像执行水平和垂直方向的数值交替次数计算任务。
    MI_IVE_Acc 执行两灰度图像的累积运算任务。
    MI_IVE_Matrix_Transform 执行矩阵运算任务。
    MI_IVE_Image_Dot 执行图像点乘积任务。
    MI_IVE_Shift_Detector 执行图像区域追踪任务。
    MI_IVE_AlphaBlending 执行图像个别权重乘积任务。
    MI_IVE_BGBlur 执行图像背景区域的模糊、替换、马赛克和模糊马赛克任务。

    说明:

    • 跨度

      • MI_IVE_Image_t的图像数据跨度,表示图像一行以“像素”进行计算的单元个数,“像素”位宽可以是 8 / 16 bit 等。

      • MI_IVE_Data_t的二维数据跨度,表示二维数据一行的字节数。

        MI_IVE_Data_t 看成一个“像素”用 8 bit表示的图像,跨度即可统一表述为图像或二维数据的一行以“像素”计算的单元个数。

        图1-1 跨度(stride)示意图

    • 对齐

      为了硬件快速访问内存首地址或跨行访问数据,要求内存地址或内存跨度必须为对齐系数的倍数。

      • 数据内存首地址对齐

        当前 IVE 算子对其输入输出首地址有 1 / 2 / 16 byte 的对齐要求,具体参考算子 API 介绍中的参数要求。

      • 跨度对齐

        对于二维广义图像、二维单分量数据以及一维数组数据的跨度均必须为16像素对齐。

    • 输入、输出数据类型(具体结构定义请参见数据类型章节)

    • 二维广义图像类型

      图像类型 图像描述 内存地址使用 跨度使用
      E_MI_IVE_IMAGE_TYPE_U8C1 8 bit 无符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_S8C1 8 bit 有符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_YUV420SP YUV420 Semiplanar 格式的图像 使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y分量),aphyPhyAddr[1]、apu8VirAddr[1] (UV分量)
      UV分量按UV顺序摆放数据
      使用au16Stride[0] (Y分量跨度)、au16Stride[1] (UV分量跨度)
      E_MI_IVE_IMAGE_TYPE_YUV422SP YUV422 Semiplanar 格式的图像 使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y分量),aphyPhyAddr[1]、apu8VirAddr[1] (UV分量)
      UV分量按UV顺序摆放数据
      使用au16Stride[0] (Y分量跨度)、au16Stride[1] (UV分量跨度)
      E_MI_IVE_IMAGE_TYPE_YUV420P YUV420 Planar 格式的图像 使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y分量),aphyPhyAddr[1]、apu8VirAddr[1] (U分量),aphyPhyAddr[2]、apu8VirAddr[2] (V分量) 使用au16Stride[0] (Y分量跨度)、au16Stride[1] (U分量跨度)、au16Stride[2] (V分量跨度)
      E_MI_IVE_IMAGE_TYPE_YUV422P YUV422 Planar 格式的图像 使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y分量),aphyPhyAddr[1]、apu8VirAddr[1] (U分量),aphyPhyAddr[2]、apu8VirAddr[2] (V分量) 使用au16Stride[0] (Y分量跨度)、au16Stride[1] (U分量跨度)、au16Stride[2] (V分量跨度)
      E_MI_IVE_IMAGE_TYPE_S8C2_PACKAGE 8 bit 有符号双通道图像
      以 package 格式存储 2 通道图像
      使用 aphyPhyAddr[0]、apu8VirAddr[0] (通道0、1分量) 使用au16Stride[0] (通道0、1分量跨度)
      E_MI_IVE_IMAGE_TYPE_S8C2_PLANAR 8 bit 有符号双通道图像
      以 planar 格式存储 2 通道图像
      使用 aphyPhyAddr[0]、apu8VirAddr[0] (通道0分量),aphyPhyAddr[1]、apu8VirAddr[1] (通道1分量) 使用au16Stride[0] (通道0分量跨度),au16Stride[1] (通道1分量跨度)
      E_MI_IVE_IMAGE_TYPE_S16C1 16 bit 有符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_U16C1 16 bit 无符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_U8C3_PACKAGE 8 bit 无符号三通道图像
      以 package 格式存储 3 通道图像
      仅使用 aphyPhyAddr[0]、apu8VirAddr[0] (通道0、1、2分量) 仅使用au16Stride[0] (通道0、1、2分量跨度)
      E_MI_IVE_IMAGE_TYPE_U8C3_PLANAR 8 bit 无符号三通道图像
      以 planar 格式存储 3 通道图像
      使用 aphyPhyAddr[0]、apu8VirAddr[0] (通道0分量),aphyPhyAddr[1]、apu8VirAddr[1] (通道1分量),使用 aphyPhyAddr[2]、apu8VirAddr[2] (通道2分量) 使用au16Stride[0] (通道0分量跨度),au16Stride[1] (通道1分量跨度),使用au16Stride[2] (通道2分量跨度)
      E_MI_IVE_IMAGE_TYPE_S32C1 32 bit 有符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_U32C1 32 bit 无符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_S64C1 64 bit 有符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_U64C1 64 bit 无符号单通道图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] 仅使用au16Stride[0]
      E_MI_IVE_IMAGE_TYPE_YUV420SP_NV21 YUV420 Semiplanar 格式的图像 使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y分量),aphyPhyAddr[1]、apu8VirAddr[1] (UV分量)
      UV分量按VU顺序摆放数据
      使用au16Stride[0] (Y分量跨度)、au16Stride[1] (UV分量跨度)
      E_MI_IVE_IMAGE_TYPE_YUV422_YUYV YUV422 package 格式的图像 仅使用 aphyPhyAddr[0]、apu8VirAddr[0] (Y、U、V分量)
      YUV分量按YUYV顺序摆放数据
      仅使用au16Stride[0] (Y、U、V分量Stride)


    1.1. MI_IVE_Create_Handle

    • 功能

      建立可用的IVE handle句柄号。

    • 语法

      MI_IVE_HANDLE MI_IVE_Create_Handle();
      
    • 返回值

      返回值 描述
      句柄号 范围:[0, MI_IVE_HANDLE_MAX)。
      MI_IVE_HANDLE_MAX 失败。
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意


    1.2. MI_IVE_Create

    • 功能

      建立IVE handle

    • 语法

      MI_S32 MI_IVE_Create(MI_IVE_HANDLE hHandle);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      必须是未使用的 hHandle 号
      取值范围:[0, MI_IVE_HANDLE_MAX)
      输入
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意


    1.3. MI_IVE_Destroy

    • 功能

      释放IVE handle

    • 语法

      MI_S32 MI_IVE_Destroy(MI_IVE_HANDLE hHandle);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a


    1.4. MI_IVE_Filter

    • 功能

      执行 5x5 模板滤波任务,通过配置不同的模板系数,可以实现不同的滤波。

    • 语法

      MI_S32 MI_IVE_Filter(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_FilterCtrl_t *pstFltCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstFltCtrl 控制信息指针。不能为空。 输入
      bInstant 保留 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1、YUV420SP、YUV422SP 16 byte 64x64 ~ 1920x1080
      pstDst 同 pstSrc 16 byte 同 pstSrc
      • U8C1/YUV420SP/YUV422SP 均为MI_IVE_ImageType_e成员的简写,后续其他的成员在表述中也用相同的规则简写。
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当源数据为 YUV420SP、YUV422SP 类型时,要求输出数据跨度一致。

        图1-2 Filter计算公式示意图

      • Filter 计算公式如下:

        I_{out}(x,y)={\sum_{-2\leqslant i\leqslant2} \sum_{-2\leqslant j\leqslant2} I(x+i,y+j)*coef(x+i,y+j)}>>norm

        其中,I(x,y)对应pstSrc,I_{out}(x,y)对应pstDst,coef(x,y)对应 pstFltCtrl 中的as8Mask[MI_IVE_MASK_SIZE_5X5],norm对应pstFltCtrl中的u8Norm。

      • 经典高斯模板如下:

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &1 &2 &1 &0 \\ 0 &2 &4 &2 &0 \\ 0 &1 &2 &1 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \ u8Norm=4 \quad \begin{bmatrix} 1 &2 &3 &2 &1 \\ 2 &5 &6 &5 &2 \\ 3 &6 &8 &6 &3 \\ 2 &5 &6 &5 &2 \\ 1 &2 &3 &2 &1 \end{bmatrix} * 3 \ \ u8Norm=8 \quad \begin{bmatrix} 1 &4 &7 &4 &1 \\ 4 &16 &26 &16 &4 \\ 7 &26 &41 &26 &7 \\ 4 &16 &26 &16 &4 \\ 1 &4 &7 &4 &1 \end{bmatrix} \ u8Norm=8
    • 相关主题

      MI_IVE_FilterAndCsc

      MI_IVE_OrdStatFilter


    1.5. MI_IVE_Csc

    • 功能

      执行YUV2RGB/YUV2BGR/RGB2YUV/BGR2YUV 等模式的色彩空间转换。

    • 语法

      MI_S32 MI_IVE_Csc(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_CscCtrl_t *pstCscCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstCscCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc YUV420SP(NV12)、YUV422SP、U8C3_PLANAR、U8C3_PACKAGE、YUV420SP_NV21 16 byte 64x64 ~ 1920x1080
      pstDst YUV420SP(NV12)、YUV422SP、U8C3_PLANAR、U8C3_PACKAGE、YUV420SP_NV21 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当输出数据为 U8C3_PLANAR、YUV420SP、YUV422SP 类型时,要求输出数据跨度一致。

      • 不同的模式其输出的取值范围不一样,具体请参见 MI_IVE_CscMode_e

      • 转换公式如下:

        \begin{bmatrix} Y \\ U \\ V \\ \end{bmatrix} = \begin{bmatrix} 0.299 &0.587 &0.114 \\ -0.169 &-0.331 &0.5 \\ 0.5 &-0.419 &-0.081 \\ \end{bmatrix} \begin{bmatrix} R \\ G \\ B \\ \end{bmatrix} + \begin{bmatrix} 0 \\ 128 \\ 128 \\ \end{bmatrix}
        \begin{bmatrix} R \\ G \\ B \\ \end{bmatrix} = \begin{bmatrix} 1 &-0.00093 &1.401687 \\ 1 &-0.3437 &-0.71417 \\ 1 &1.77216 &0.00099 \\ \end{bmatrix} \begin{bmatrix} Y \\ U-128 \\ V-128 \\ \end{bmatrix}
    • 相关主题

      MI_IVE_FilterAndCsc


    1.6. MI_IVE_FilterAndCsc

    • 功能

      执行 5x5 模板滤波和 YUV2RGB 色彩空间转换复合任务,通过一次执行完成两种功能。

    • 语法

      MI_S32 MI_IVE_FilterAndCsc(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_FilterAndCscCtrl_t *pstFltCscCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输图像据指针。不能为空。高、宽同 pstSrc。 输出
      pstFltCscCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc YUV420SP、YUV422SP 16 byte 64x64 ~ 1920x1080
      pstDst U8C3_PLANAR、U8C3_PACKAGE 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当输出数据为 U8C3_PLANAR 类型时,要求输出数据跨度一致。

      • 仅支持 YUV2RGB 的 4 种工作模式,具体参见MI_IVE_CscMode_e

    • 相关主题

      MI_IVE_Filter


    1.7. MI_IVE_Sobel

    • 功能

      执行 5x5 模板 Sobel-like 梯度计算任务。

    • 语法

      MI_S32 MI_IVE_Sobel(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDstH, MI_IVE_DstImage_t *pstDstV, MI_IVE_SobelCtrl_t *pstSobelCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。取值范围:[0, MI_IVE_HANDLE_MAX) 输入
      pstSrc 源图像指针。不能为空。根据 pstSobelCtrl→eOutCtrl,若需要输出则不能为空。高、宽同 pstSrc。 输入
      pstDstH 由模板直接滤波得到的梯度分量图像 H 指针。 输出
      pstDstV 由转置后的模板滤波得到的梯度分量图像 V 指针。根据pstSobelCtrl→eOutCtrl,若需要输出则不能为空。高、宽同 pstSrc。 输出
      pstSobelCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDstH S16C1 16 byte 同 pstSrc
      pstDstV S16C1 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当输出模式为 E_MI_IVE_SOBEL_OUT_CTRL_BOTH 时,要求 pstDstH 和 pstDstV跨度一致。

      • 可配置 3 种输出模式,参考MI_IVE_SobelOutCtrl_e

        图1-3 Sobel 计算公式示意图

      • Sobel 计算公式如下:

        H_{out}(x,y)=\sum_{-2\leqslant i\leqslant2}\sum_{-2\leqslant j\leqslant2}I(x+i,y+j)*coef(x+i,y+j)
        V_{out}(x,y)=\sum_{-2\leqslant i\leqslant2}\sum_{-2\leqslant j\leqslant2}I(x+i,y+j)*coef(x+j,y+i)

        其中, I(x, y) 对应 pstSrc, H_{out}(x, y) 对应pstDstH,V_{out}(x, y) 对应 pstDstV,coef(x,y) 为 pstSobelCtrl中的as8Mask[MI_IVE_MASK_SIZE_5X5]

      • Sobel 模板

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &-1 &0 &1 &0 \\ 0 &-2 &0 &2 &0 \\ 0 &-1 &0 &1 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &-1 &-2 &-1 &0 \\ 0 &0 &0 &0 &0 \\ 0 &1 &2 &1 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
        \begin{bmatrix} -1 &-2 &0 &2 &1 \\ -4 &-8 &0 &8 &4 \\ -6 &-12 &0 &12 &6 \\ -4 &-8 &0 &8 &4 \\ -1 &-2 &0 &2 &1 \end{bmatrix} \begin{bmatrix} -1 &-4 &-6 &-4 &-1 \\ -2 &-8 &-12 &-8 &-2 \\ 0 &0 &0 &0 &0 \\ 2 &8 &12 &8 &2 \\ 1 &4 &6 &4 &1 \end{bmatrix}
      • Scharr 模板

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &-3 &0 &3 &0 \\ 0 &-10 &0 &10 &0 \\ 0 &-3 &0 &3 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &-3 &-10 &-3 &0 \\ 0 &0 &0 &0 &0 \\ 0 &3 &10 &3 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
      • 拉普拉斯模板

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &0 &1 &0 &0 \\ 0 &1 &-4 &1 &0 \\ 0 &0 &1 &0 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &0 &-1 &0 &0 \\ 0 &-1 &4 &-1 &0 \\ 0 &0 &-1 &0 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &1 &1 &1 &0 \\ 0 &1 &-8 &1 &0 \\ 0 &1 &1 &1 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &-1 &-1 &-1 &0 \\ 0 &-1 &8 &-1 &0 \\ 0 &-1 &-1 &-1 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
    • 相关主题

      MI_IVE_MagAndAng

      MI_IVE_NormGrad


    1.8. MI_IVE_MagAndAng

    • 功能

      执行 5x5 模板梯度幅值与幅角计算任务。

    • 语法

      MI_S32 MI_IVE_MagAndAng(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDstMag, MI_IVE_DstImage_t *pstDstAng, MI_IVE_MagAndAngCtrl_t*pstMagAndAngCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDstMag 输出幅值图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstDstAng 输出幅角图像指针。
      根据 pstMagAndAngCtrl→eOutCtrl,需要输出则不能为空。
      输出
      pstMagAndAngCtrl 控制信息指针。不能为空。
      高、宽同 pstSrc。
      输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDstMag U16C1 16 byte 同 pstSrc
      pstDstAng U8C1 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当输出模式为 E_MI_IVE_MAG_AND_ANG_OUT_CTRL_MAG_AND_ANG 时,要求pstDstMag和 pstDstAng跨度一致。

      • 可配置 2 种输出模式,具体参见 MI_IVE_MagAndAngOutCtrl_e

        图1-4 MagAndAng 计算示意图

      • 可通过配置pstMagAndAngCtrl→u16Thr对幅值图进行阈值化操作(可以用来实现EOH)。

      • MagAndAng 计算公式如下:

        H_{out}(x,y)=\sum_{-2\leqslant i\leqslant2}\sum_{-2\leqslant j\leqslant2}I(x+i,y+j)*coef(x+i,y+j)
        V_{out}(x,y)=\sum_{-2\leqslant i\leqslant2}\sum_{-2\leqslant j\leqslant2}I(x+i,y+j)*coef(x+j,y+i)
        Mag(x,y)=abs(H_{out}(x,y))+abs(V_{out}(x,y))
        Mag(x,y)=\left\{ \begin{aligned} 0 , Mag(x,y) < u16Thr \\ Mag(x,y) ,Mag(x,y)\geq u16Thr \end{aligned} \right.

        其中

        • I(x,y) 对应pstSrc,Mag(x,y) 对应pstDstMag,\theta(x,y) 对应pstDstAng,coef(x,y) 为pstMagAndAngCtrl中的as8Mask[MI_IVE_MASK_SIZE_5X5]。

        • \theta(x,y) 根据 H_{out}(x,y)V_{out}(x,y) 以及 arctan(V_{out}/H_{out}) 所处区间取对应下图方向值0 ~ 7。

    • 相关主题

      MI_IVE_CannyHysEdge

      MI_IVE_CannyEdge

      MI_IVE_Sobel


    1.9. MI_IVE_Dilate

    • 功能

      执行二值图像 5x5 模板膨胀任务。

    • 语法

      MI_S32 MI_IVE_Dilate(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_DilateCtrl_t *pstDilateCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。br<> 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstDilateCtrl 控制信息指针。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 二值图 16 byte 64x64 ~ 1920x1080
      pstDst U8C1 二值图 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 模板系数只能为 0 或 255。

        图1-5 Dilate 计算公式示意图

      • Dilate 计算公式如下:

        I_{out}(x,y)=O_{-2\leqslant i\leqslant2}(O_{-2\leqslant j\leqslant2}(f(i,j))) \\
        O_{-2\leqslant k\leqslant 2}(g(k))=g(-2)\ |\ g(-1)\ |\ g(0)\ |\ g(1)\ |\ g(2) \\
        f(x,y)=I(x,y)\ \& \ coef(x,y)

        公式中 | 为位或运算,\& 为位与运算,\% 为取余运算。I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst,coef(x,y) 对应pstDilateCtrl中的au8Mask[MI_IVE_MASK_SIZE_5X5]。

      • 模板样例

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &0 &255 &0 &0 \\ 0 &255 &255 &255 &0 \\ 0 &0 &255 &0 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &255 &255 &255 &0 \\ 0 &255 &255 &255 &0 \\ 0 &255 &255 &255 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
        \begin{bmatrix} 0 &255 &255 &255 &0 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 0 &255 &255 &255 &0 \end{bmatrix} \begin{bmatrix} 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \end{bmatrix}
    • 相关主题

      MI_IVE_Erode

      MI_IVE_OrdStatFilter


    1.10. MI_IVE_Erode

    • 功能

      执行二值图像 5x5 模板腐蚀任务。

    • 语法

      MI_S32 MI_IVE_Erode(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_ErodeCtrl_t *pstErodeCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc.
      输出
      pstErodeCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 二值图 16 byte 64x64 ~ 1920x1080
      pstDst U8C1 二值图 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 模板系数只能为 0 或 255。

        图1-6 Erode 计算公式示意图

      • Erode 计算公式如下:

        I_{out}(x,y)=O_{-2\leqslant i\leqslant 2}(O_{-2\leqslant j\leqslant2}(f(x+i,y+j)))
        O_{-2\leqslant k\leqslant 2}(g(k))=g(-2)\ |\ g(-1)\ |\ g(0)\ |\ g(1)\ |\ g(2)
        f(x,y) = I(x,y)\ | \ (255 - coef(x,y))

        公式中 | 为位或运算,\& 为位与运算,\% 为取余运算。I(x, y) 对应pstSrc,I_{out}(x, y) 对应 pstDst, coef(x,y) 对应 pstErodeCtrl 中的au8Mask[MI_IVE_MASK_SIZE_5X5]。

      • 模板样例

        \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &0 &255 &0 &0 \\ 0 &255 &255 &255 &0 \\ 0 &0 &255 &0 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix} \begin{bmatrix} 0 &0 &0 &0 &0 \\ 0 &255 &255 &255 &0 \\ 0 &255 &255 &255 &0 \\ 0 &255 &255 &255 &0 \\ 0 &0 &0 &0 &0 \end{bmatrix}
        \begin{bmatrix} 0 &255 &255 &255 &0 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 0 &255 &255 &255 &0 \end{bmatrix} \begin{bmatrix} 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \\ 255 &255 &255 &255 &255 \end{bmatrix}
    • 相关主题

      MI_IVE_Dilate

      MI_IVE_OrdStatFilter


    1.11. MI_IVE_Thresh

    • 功能

      执行灰度图像阈值化任务。

    • 语法

      MI_S32 MI_IVE_Thresh(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_ThreshCtrl_t *pstThrCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstThrCtrl 控制信息指针。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 1 byte 64x64 ~ 1920x1080
      pstDst U8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可以配置 8 种运算模式,具体参见MI_IVE_ThreshMode_e

        图1-7 Thresh 8 种阈值化模式示意图

      • 不同模式的计算公式如下:

        • E_MI_IVE_THRESH_MODE_BINARY:

          I_{out}(x,y)=\left\{ \begin{aligned} minVal,\ I(x,y)\leqslant lowThr \\ maxVal,\ I(x,y)> lowThr \end{aligned} \right.

          midVal 、highThr 无需赋值。

        • E_MI_IVE_THRESH_MODE_TRUNC:

          I_{out}(x,y)=\left\{ \begin{aligned} I(x,y),\ I(x,y)\leqslant lowThr \\ maxVal,\ I(x,y)>lowThr \end{aligned} \right.

          minVal 、midVal 、highThr 无需赋值。

        • E_MI_IVE_THRESH_MODE_TO_MINVAL:

          I_{out}(x,y)=\left\{ \begin{aligned} minVal,\ I(x,y)\leqslant lowThr \\ I(x,y),\ I(x,y)> lowThr \end{aligned} \right.

          midVal 、maxVal 、highThr 无需赋值。

        • E_MI_IVE_THRESH_MODE_MIN_MID_MAX:

          I_{out}(x,y)=\left\{ \begin{aligned} minVal,\ I(x,y)\leqslant lowThr \\ midVal,\ lowThr\leqslant I(x,y)\leqslant highThr \\ maxVal,\ I(x,y)>highThr \end{aligned} \right.
        • E_MI_IVE_THRESH_MODE_ORI_MID_MAX:

          I_{out}(x,y)=\left\{ \begin{aligned} I(x,y),\ I(x,y)\leqslant lowThr \\ midVal,\ lowThr\leqslant I(x,y)\leqslant highThr \\ maxVal,\ I(x,y)>highThr \end{aligned} \right.

          minVal 无需赋值。

        • E_MI_IVE_THRESH_MODE_MIN_MID_ORI:

          I_{out}(x,y)=\left\{ \begin{aligned} minVal,\ I(x,y) \leqslant lowThr \\ midVal,\ lowThr\leqslant I(x,y)\leqslant highThr \\ I(x,y),\ I(x,y)>highThr \end{aligned} \right.

          maxVal 无需赋值。

        • E_MI_IVE_THRESH_MODE_MIN_ORI_MAX:

          I_{out}(x,y)=\left\{ \begin{aligned} minVal,\ I(x,y) \leqslant lowThr \\ I(x,y),\ lowThr\leqslant I(x,y)\leqslant highThr \\ maxVal,\ I(x,y)>highThr \end{aligned} \right.

          midVal 无需赋值。

        • E_MI_IVE_THRESH_MODE_ORI_MID_ORI:

          I_{out}(x,y)=\left\{ \begin{aligned} I(x,y),\ I(x,y) \leqslant lowThr \\ midVal,\ lowThr\leqslant I(x,y)\leqslant highThr \\ I(x,y),\ I(x,y)>highThr \end{aligned} \right.

          minVal 、maxVal 无需赋值

          其中

          • I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst

          • modelowThrhighThrminValmidValmaxVal 分别对应pstThrCtrl的eMode、u8LowThr、u8HighThr、u8MinVal、u8MidVal和u8MaxVal。

          • pstThrCtrl 中的 u8MinVal、u8MidVal 和 u8MaxVal并不需要满足变量命名含义中的大小关系。

    • 相关主题

      MI_IVE_ThreshS16

      MI_IVE_ThreshU16


    1.12. MI_IVE_And

    • 功能

      执行两二值图像相与任务。

    • 语法

      MI_S32 MI_IVE_And(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 2 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc1。
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 二值图 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 二值图 1 byte 同 pstSrc1
      pstDst U8C1 二值图 1 byte 同 pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • And 计算公式如下:

        I_{out}(x,y)=I_{src1}(x,y)\ \&\ I_{src2}(x,y)

        其中, I_{src1}(x,y) 对应 pstSrc1, I_{src2}(x,y) 对应pstSrc2,I_{out}(x,y) 对应pstDst。

    • 相关主题

      MI_IVE_Or

      MI_IVE_Xor


    1.13. MI_IVE_Sub

    • 功能

      执行两灰度图像相减任务。

    • 语法

      MI_S32 MI_IVE_Sub(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_IVE_SubCtrl_t *pstSubCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 2 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc1。
      输出
      pstSubCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc1
      pstDst U8C1、S8C1 1 byte 同 pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可以配置 2 种输出格式,具体参见 MI_IVE_SubMode_e

      • 不同模式的计算公式如下:

        • E_MI_IVE_SUB_MODE_ABS

          计算公式:I_{out}(x,y)=abs(I_{src1}(x,y) - I_{src2}(x,y))

          输出格式:U8C1

        • E_MI_IVE_SUB_MODE_SHIFT

          计算公式:I_{out}(x,y)=(I_{src1}(x,y) - I_{src2}(x,y))>>1

          输出格式:S8C1

        其中,I_{src1}(x,y) 对应 pstSrc1,I_{src2}(x,y) 对应pstSrc2,I_{out}(x,y) 对应 pstDst。

    • 相关主题

      MI_IVE_Add


    1.14. MI_IVE_Or

    • 功能

      执行两二值图像相或任务。

    • 语法

      MI_S32 MI_IVE_Or(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t  *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 2 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc1。
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc1
      pstDst U8C1 1 byte 同 pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Or 计算公式如下:

        I_{out}(x,y)=I_{src1}(x,y)\ | \ I_{src2}(x,y)

        其中,I_{src1}(x,y) 对应pstSrc1,I_{src2}(x,y)对应pstSrc2,I_{out}(x,y)对应pstDst。

    • 相关主题

      MI_IVE_And

      MI_IVE_Xor


    1.15. MI_IVE_Integ

    • 功能

      执行灰度图像的积分图计算任务。

    • 语法

      MI_S32 MI_IVE_Integ(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_IntegCtrl_t *pstIntegCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstIntegCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 32x16 ~ 1920x1080
      pstDst U32C1、U64C1 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 不同模式的计算公式如下:

        • E_MI_IVE_INTEG_OUT_CTRL_COMBINE(组合输出模式,输出图像类型必须为E_MI_IVE_IMAGE_TYPE_U64C1)

          I_{sum}(x,y)=\sum^{i\leqslant x}_{i\geqslant0}\sum^{j\leqslant y}_{j\geqslant0}I(i,j) ,\quad I_{sq}(x,y)=\sum^{i\leqslant x}_{i\geqslant0}\sum^{j\leqslant y}_{j\geqslant0}(I(i,j)*I(i,j))
          I_{out}(x,y)=(i_{sq}(x,y)<<28)\ | \ (I_{sum}(x,y)\&0xFFFFFFF)
        • E_MI_IVE_INTEG_OUT_CTRL_SUM(仅和积分图输出模式,输出图像类型必须为 E_MI_IVE_IMAGE_TYPE_U32C1)

          I_{out}(x,y) = I_{sum}(x,y)=\sum^{i\leqslant x}_{i\geqslant0}\sum^{j\leqslant y}_{j\geqslant0}I(i,j)
        • E_MI_IVE_INTEG_OUT_CTRL_SQSUM(仅平方和积分图输出,输出图像类型必须为 E_MI_IVE_IMAGE_TYPE_U64C1)

          I_{out}(x,y) = I_{sq}(x,y)=\sum^{i\leqslant x}_{i\geqslant0}\sum^{j\leqslant y}_{j\geqslant0}(I(i,j)*I(i,j))

        其中,I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst。


    1.16. MI_IVE_Hist

    • 功能

      执行灰度图像的直方图统计任务。

    • 语法

      MI_S32 MI_IVE_Hist(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstMemInfo_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出数据指针。不能为空。
      内存至少配置 1024 字节
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDst - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Hist 计算公式如下:

        I_{out}(x)=\sum_i\sum_j((I(i,j)==x)?1:0) ,x=0...255

        其中,I(i,j) 对应pstSrc,I_{out}(x) 对应pstDst。


    1.17. MI_IVE_ThreshS16

    • 功能

      执行 S16 数据到 8bit 数据的阈值化任务。

    • 语法

      MI_S32 MI_IVE_ThreshS16(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_ThreshS16Ctrl_t *pstThrS16Ctrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, RGN_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstThrS16Ctrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc S16C1 2 byte 64x64 ~ 1920x1080
      pstDst U8C1、S8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可配置 4 种运算模式,参考 MI_IVE_ThreshS16Mode_e

        图1-8 ThreshS16 4 种阈值化模式示意图

      • 不同模式的计算公式如下:

        • E_MI_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_MID_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ midVal,(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求 -32768 ≤ lowThr ≤ highThr ≤32767-128 ≤ minVal、midVal、maxVal ≤127

        • E_MI_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_ORI_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ I(x,y),(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求 -128 ≤ lowThr ≤ highThr ≤127-128 ≤ minVal、maxVal ≤127

        • E_MI_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_MID_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ midVal,(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求 -32768≤ lowThr ≤ highThr ≤327670 ≤ minVal、midVal、maxVal ≤255

        • E_MI_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_ORI_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ I(x,y),(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求 -1 ≤ lowThr ≤ highThr ≤255 ,$ 0 ≤ minVal、maxVal ≤255$ 。

        其中

        • I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst

        • modelowThrhighThrminValmidValmaxVal 分别对应pstThrS16Ctrl的eMode、s16LowThr、s16HighThr、un8MinVal、un8MidVal和un8MaxVal。

        • pstThrS16Ctrl中的un8MinVal、un8MidVal和un8MaxVal并不需要满足变量命名含义中的大小关系。

    • 相关主题

      MI_IVE_ThreshU16

      MI_IVE_16BitTo8Bit


    1.18. MI_IVE_ThreshU16

    • 功能

      执行 U16 数据到 U8 数据的阈值化任务。

    • 语法

      MI_S32 MI_IVE_ThreshU16(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_ThreshU16Ctrl_t *pstThrU16Ctrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstThrU16Ctrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U16C1 2 byte 64x64 ~ 1920x1080
      pstDst U8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可配置 2 种运算模式,参考MI_IVE_ThreshU16Mode_e

        图1-9 ThreshU16 2 种阈值化模式示意图

      • 不同模式的计算公式如下:

        • E_MI_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_MID_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ midVal,(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求:0 ≤ lowThr ≤ highThr ≤65535

        • E_MI_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_ORI_MAX:

          I_{out}(x,y)=\left \{ \begin{aligned} minVal,(I(x,y)\leqslant lowThr) \\ I(x,y),(lowThr< I(x,y)\leqslant highThr) \\ maxVal,(I(x,y)> highThr) \end{aligned} \right.

          要求:0 ≤ lowThr ≤ highThr ≤255

        其中

        • I(x,y) 对应pstSrc,I_{out}(x,y)对应pstDst

        • modelowThrhighThrminValmidValmaxVal 分别对应pstThrU16Ctrl的eMode、u16LowThr、u16HighThr、u8MinVal、u8MidVal和u8MaxVal。

        • pstThrU16Ctrl 中的 u8MinVal、u8MidVal 和u8MaxVal并不需要满足变量命名含义中的大小关系。

    • 相关主题

      MI_IVE_ThreshS16

      MI_IVE_16BitTo8Bit


    1.19. MI_IVE_16BitTo8Bit

    • 功能

      执行 16bit 图像数据到 8bit 图像数据的线性转化任务。

    • 语法

      MI_S32 MI_IVE_16BitTo8Bit(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_16bitTo8BitCtrl_t *pst16BitTo8BitCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pst16BitTo8BitCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U16C1、S16C1 2 byte 64x64 ~ 1920x1080
      pstDst U8C1、S8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可配置 4 种模式,具体参考 MI_IVE_16BitTo8BitMode_e

      • 不同模式的计算公式如下:

        • E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_S8:

          I_{out}(x,y)=\left\{ \begin{aligned} -128,(\frac{a}{b}I(x,y)<-128) \\ \frac{a}{b}I(x,y),(-128\leqslant \frac{a}{b}I(x,y)\leqslant 127) \\ 127,(\frac{a}{b}I(x,y)>127) \end{aligned} \right.
        • E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_ABS:

          I_{out}(x,y)=\left\{ \begin{aligned} \left |\frac{a}{b}I(x,y) \right|,(\left| \frac{a}{b}I(x,y)\right|\leqslant 255) \\ 255,(\left| \frac{a}{b}I(x,y)\right|> 255) \end{aligned} \right.
        • E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_BIAS:

          I_{out}(x,y)=\left\{ \begin{aligned} 0,(\frac{a}{b}I(x,y)+bais< 0) \\ \frac{a}{b}I(x,y)+bais,(0\leqslant\frac{a}{b}I(x,y)+bais\leqslant 255) \\ 255, (\frac{a}{b}I(x,y)+bais> 255) \end{aligned} \right.
        • E_MI_IVE_16BIT_TO_8BIT_MODE_U16_TO_U8:

          I_{out}(x,y)=\left\{ \begin{aligned} 0,(\frac{a}{b}I(x,y)< 0) \\ \frac{a}{b}I(x,y),(0\leqslant\frac{a}{b}I(x,y)\leqslant 255) \\ 255, (\frac{a}{b}I(x,y)> 255) \end{aligned} \right.

        其中

        • I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst

        • modeabbias 分别对应pst16BitTo8BitCtrl的eMode、u8Numerator、u16Denominator、s8Bias。

        • 要求:u8Numerator ≤ u16Denominator,且 u16Denominator\neq0

    • 相关主题

      MI_IVE_ThreshS16

      MI_IVE_ThreshU16


    1.20. MI_IVE_OrdStatFilter

    • 功能

      执行 3x3 模板顺序统计量滤波任务,可进行 Median、Max、Min 滤波。

    • 语法

      MI_S32 MI_IVE_OrdStatFilter(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_OrdStatFilter_t *pstOrdStatFltCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstOrdStatFltCtrl 控制参数指针不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDst U8C1 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 可配置 3 种滤波模式,参考 MI_IVE_OrdStatFilterMode_e

      • 不同模式的计算公式如下:

        • E_MI_IVE_ORD_STAT_FILTER_MODE_MEDIAN:

          I_{out}(x,y)=median_{-1\leqslant i\leqslant1,-1\leqslant j\leqslant1}\{I(x+i,y+j)\}
        • E_MI_IVE_ORD_STAT_FILTER_MODE_MAX:

          I_{out}(x,y)=max_{-1\leqslant i\leqslant1,-1\leqslant j\leqslant1}\{I(x+i,y+j)\}
        • E_MI_IVE_ORD_STAT_FILTER_MODE_MIN:

          I_{out}(x,y)=min_{-1\leqslant i\leqslant1,-1\leqslant j\leqslant1}\{I(x+i,y+j)\}

        其中,I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst。

    • 相关主题

      MI_IVE_Filter

      MI_IVE_Dilate

      MI_IVE_Erode


    1.21. MI_IVE_Map

    • 功能

      执行 Map(映射赋值)任务,对源图像中的每个像素,查找 Map 查找表中的值,赋予目标图像相应像素查找表中的值,支持 U8C1到U8C1模式的映像。

    • 语法

      MI_S32 MI_IVE_Map(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_SrcMemInfo_t *pstMap, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstMap 映射表信息指针。不能为空。
      内存至少配置:sizeof(MI_IVE_MapLutMem_t)。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 1 byte 64x64 ~ 1920x1080
      pstMap - 16 byte -
      pstDst U8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Map 计算公式如下:

        I_{out}(x,y)=map[I(xy)]

        其中,I(x,y) 对应pstSrc,I_{out}(x,y) 对应pstDst,map 对应pstMap。


    1.22. MI_IVE_EqualizeHist

    • 功能

      执行灰度图像的直方图均衡化计算任务。

    • 语法

      MI_S32 MI_IVE_EqualizeHist(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MI_IVE_EqualizeHistCtrl_t *pstEqualizeHistCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstEqualizeHistCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDst U8C1 16 byte 同 pstSrc
      pstEqualizeHistCtrl→stMem - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • pstEqualizeHistCtrl 中的 stMem,至少需开辟sizeof(MI_IVE_EqualizeHistCtrlMem_t)字节大小。

      • 与 OpenCV 中直方图均衡化计算过程一致。


    1.23. MI_IVE_Add

    • 功能

      执行两灰度图像的加权加计算任务。

    • 语法

      MI_S32 MI_IVE_Add(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_IVE_AddCtrl_t *pstAddCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 2 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出图像指针。
      高、宽同 pstSrc1;不能为空。
      输出
      pstAddCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc
      pstDst U8C1 1 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Add 计算公式如下:

        I_{out}(x,y)=x*I_{src1}(x,y)+y*I_{src2}(x,y)

        其中

        • I_{src1}(i,j) 对应pstSrc1,I_{src2}(i,j) 对应pstSrc2,I_{out}(i,j) 对应pstDst。

        • xy 为pstAddCtrl中的u0q16X,u0q16Y;要求定点化前的 0<x<1,0<y<1,且 \ x+y=1

    • 相关主题

      MI_IVE_Sub


    1.24. MI_IVE_Xor

    • 功能

      执行两二值图的异或计算任务。

    • 语法

      MI_S32 MI_IVE_Xor(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 1 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc1。
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc1
      pstDst U8C1 1 byte 同 pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Xor 计算公式如下:

        I_{out}(x,y)=I_{src1}(x,y)\bigoplus{I_{src2}(x,y)}

        其中,I_{src1}(x,y) 对应pstSrc1,I_{src2}(x,y) 对应pstSrc2,I_{out}(x,y) 对应pstDst

    • 相关主题

      MI_IVE_And

      MI_IVE_Or


    1.25. MI_IVE_Ncc

    • 功能

      执行两相同分辨率灰度图像的归一化互相关系数计算任务。

    • 语法

      MI_S32 MI_IVE_Ncc(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstMemInfo_t *pstDst, MI_BOOL bInstant);
      
    • 返回值

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源 1 图像指针。不能为空。 输入
      pstSrc2 源 2 图像指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstDst 输出数据指针。不能为空。
      内存至少需配置:sizeof ()。
      输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 32x32 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc1
      pstDst - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Ncc 计算公式如下:

        NCC(I_{src1},I_{src2})=\frac{\sum^w_{i-1}\sum^h_{j=1}(I_{src1}(i,j)*I_{src2}(i,j))}{\sqrt{\sum^w_{i=1}\sum^h_{j=1}(I^2_{src1}(i,j))}\sqrt{\sum^w_{i=1}\sum^h_{j=1}(I^2_{src2}(i,j))}}

        仅输出上面公式的分子、开方之前的两个分母项:

        • pstDst→u64Numerator= \sum^w_{i-1}\sum^h_{j=1}(I_{src1}(i,j)*I_{src2}(i,j))

        • pstDst→u64QuadSum1= \sum^w_{i=1}\sum^h_{j=1}(I^2_{src1}(i,j))

        • pstDst→u64QuadSum2= \sum^w_{i=1}\sum^h_{j=1}(I^2_{src2}(i,j)).


    1.26. MI_IVE_Ccl

    • 功能

      执行二值图像的连通区域标记任务。

    • 语法

      MI_S32 MI_IVE_Ccl(MI_IVE_HANDLE hHandle, MI_IVE_Image_t *pstSrcDst, MI_IVE_DstMemInfo_t *pstBlob, MI_IVE_CclCtrl_t *pstCclCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrcDst 源图像指针,连通区域标记在源图像上进行,即源图像同时也是标记图像输出。不能为空。 输入、输出
      pstBlob 连通区域信息指针。不能为空。
      内存至少需配置为 sizeof(MI_IVE_CcBlob_t)大小,最多输出 254 个有效的连通区域。
      输出
      pstCclCtrl 控制参数指针不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcDst U8C1 16 byte 16x4~720x640
      注:Souffle系列支持 16x4~1280x720
      pstBlob - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 连通区域的标记结果存储在pstBlob→pu8VirAddr所在地址,让MI_IVE_CcBlob_t的指针变量指向pstBlob→pu8VirAddr(如下),通过操作该指针变量即可获取标记结果,具体内容请参考MI_IVE_CcBlob_t

        MI_IVE_CcBlob_t* ccBlob = (MI_IVE_CcBlob_t*) pstBlob->pu8VirAddr;


    1.27. MI_IVE_Gmm

    • 功能

      执行 GMM 背景建模任务,支持灰度图、RGB_PACKAGE 图像的 GMM 背景建模,高斯模型个数为 3 或者 5。

    • 语法

      MI_S32 MI_IVE_Gmm(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstFg, MI_IVE_DstImage_t *pstBg, MI_IVE_MemInfo_t *pstModel, MI_IVE_GmmCtrl_t *pstGmmCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstFg 前景图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstBg 背景图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstModel GMM 模型参数指针。不能为空。 输入、输出
      pstGmmCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1、U8C3_PACKAGE 16 byte 64x64~1280x720
      pstFg U8C1 二值图 16 byte 同pstSrc
      pstBg 同 pstSrc 16 byte 同pstSrc
      pstModel - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • GMM 的实现方式参考了OpenCV中的MOG和MOG2。

      • 灰度图像GMM采用n个(n=3 或 5)高斯模型,模型数据的内存排列方式如下图所示。

        图1-10 灰度图像GMM模型的内存配置示意图

        芯片/平台 Model_cnt Weight Mean Var 对齐要求 3模型所需内存大小 m 5模型所需内存大小 m
        Souffle 3 bits 2 bytes 2 bytes 3 bytes 16字节对齐 3 bits + 3*(2+2+3) bytes
        对齐后 m 为32 bytes
        3 bits + 5*(2+2+3) bytes
        对齐后 m 为48 bytes
        Others - 2 bytes 2 bytes 3 bytes - 3*(2+2+3) bytes
        m 为21 bytes
        5*(2+2+3) bytes
        m 为35 bytes

      • RGB图像GMM采用n个(n=3 或 5)高斯模型,模型数据的内存排列方式如下图所示。

        图 1-11 RGB图像GMM模型的内存配置示意图

        芯片/平台 Model_cnt Weight Mean Var 对齐要求 3模型所需内存大小 m 5模型所需内存大小 m
        Souffle 3 bits 2 bytes 3*2 bytes 3 bytes 16字节对齐 3 bits + 3*(2+6+3) bytes
        对齐后 m 为48 bytes
        3 bits + 5*(2+5+3) bytes
        对齐后 m 为64 bytes
        Others - 4 bytes 3*4 bytes 4 bytes - 3*(4+12+3) bytes
        m 为60 bytes
        5*(2+12+3) bytes
        m 为100 bytes

      • 根据上述两表计算所得m,不同模型数及格式下,pstModel所需内存大小均可表示为:

        pstModel→u32Size = m * pstSrc→u16Width * pstSrc→u16Height


    1.28. MI_IVE_CannyHysEdge

    • 功能

      灰度图的 Canny 边缘提取的前半部:求梯度、计算梯度幅值幅角、磁滞阈值化及非极大抑制。

    • 语法

      MI_S32 MI_IVE_CannyHysEdge(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstEdge, MI_IVE_DstMemInfo_t *pstStack, MI_IVE_CannyHysEdgeCtrl_t *pstCannyHysEdgeCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstEdge 强弱边缘标志图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstStack 强边缘点坐标栈。不能为空。
      内存至少配置:pstSrc→u16Width * pstSrc→u16Height * (sizeof(MI_IVE_PointU16_t)) + sizeof(MI_IVE_CannyStackSize_t)
      输出
      pstCannyHysEdgeCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstEdge U8C1 16 byte 同 pstSrc
      pstStack - 16 byte -
      pstCannyHysEdgeCtrl→stMem - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • pstEdge 仅有 0、1、2 三个取值:

        • 0 表示弱边缘点

        • 1 表示非边缘点

        • 2 表示强边缘点

      • pstStack 中存储强边缘点的坐标信息。

      • pstCannyHysEdgeCtrl→stMem 至少需要分配的内存大小:pstCannyHysEdgeCtrl→stMem.u32Size = pstSrc→azu16Stride[0] * (pstSrc→u16Height + 3) * 4

      • 该任务完成后,必须要使用MI_IVE_CannyEdge函数才能输出 Canny 边缘图像。

    • 相关主题

      MI_IVE_CannyEdge


    1.29. MI_IVE_CannyEdge

    • 功能

      灰度图的 Canny 边缘提取的后半部:连接边缘点,形成 Canny 边缘图。

    • 语法

      MI_S32 MI_IVE_CannyEdge(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstEdge, MI_IVE_MemInfo_t *pstStack, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstEdge 作为输入是强弱边缘标志图像指针;作为输出是边缘二值图像指针。不能为空。 输入、输出
      pstStack 强边缘点坐标栈。不能为空。 输入、输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstEdge U8C1 16 byte 64x64 ~ 1920x1080
      pstStack - 16 byte -
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

    • 相关主题

      MI_IVE_CannyHysEdge


    1.30. MI_IVE_Lbp

    • 功能

      执行 LBP 计算任务。

    • 语法

      MI_S32 MI_IVE_Lbp(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_IVE_LbpCtrrl_t *pstLbpCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像指针。不能为空。 输入
      pstSrc2 源图像指针。不能为空。
      如果输入的 channel mode 是 U8C1.则可以为空。
      输入
      pstDst 输出图像指针。不能为空。
      高、宽同 pstSrc。
      输出
      pstLbpCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDst U8C1 16 byte 同pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • LBP U8C1/U8C2 mode 计算公式示意图如下:

        • U8C1 mode:

        • U8C2 mode:

      • 不同模式的计算公式如下:

        • E_MI_IVE_LBP_CMP_NORMAL

          lbp(x,y)=\sum_{i=0}^7(I_i-I_c) \geq thr) << (7-i), \ thr \in [-128, 127]

        • E_MI_IVE_LBP_CMP_ABS

          lbp(x,y)=\sum_{i=0}^7(abs(I_i-I_c) \geq thr) << (7-i), \ thr \in [0, 255]

        • E_MI_IVE_LBP_CMP_ABS_MUL

          lbp(x,y)=\sum_{i=0}^7((I_i-I_c) \geq thr*I_c) << (7-i), \ thr \in [0, 1]

        其中

        • I_i 对应pstSrc1,lpb(x,y) 对应pstDst,thr 对应pstLbpCtrl→un8BitThr

        • 在 U8C1 模式下,I_c 对应pstSrc1,在 U8C2 模式下,I_c 对应的是 pstSrc2。


    1.31. MI_IVE_NormGrad

    • 功能

      执行归一化梯度计算任务,梯度分量均归一化到 S8。

    • 语法

      MI_S32 MI_IVE_NormGrad(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDstH, MI_IVE_DstImage_t *pstDstV, MI_IVE_DstImage_t *pstDstHV, MI_IVE_NormGradCtrl_t *pstNormGradCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDstH 由模板直接滤波并归一到 S8 后得到的梯度分量图像(H)指针。
      根据 pstNormGradCtrl→eOutCtrl,若需要输出则不能为空。
      输出
      pstDstV 由转置后的模板滤波并归一到 S8 后得到的梯度分量图像(V)指针。
      根据 pstNormGradCtrl→eOutCtrl,若需要输出则不能为空。
      输出
      pstDstHV 由模板和转置后的模板直接滤波,并且均归一到 S8 后,采用package 格式存储的图像指针。 根据 pstNormGradCtrl→eOutCtrl,若需要输出则不能为空。 输出
      pstNormGradCtrl 控制信息指针。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDstH S8C1 16 byte 同 pstSrc
      pstDstV S8C1 16 byte 同 pstSrc
      pstDstHV S8C2_PACKAGE 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 当输出模式为 E_MI_IVE_NORM_GRAD_OUT_CTRL_HOR_AND_VER 时,要求pstDstH和 pstDstV 指针不能为空,且要求跨度一致。

      • 可配置 4 种输出模式,参考 MI_IVE_NormGradOutCtrl_e

      • NormGrad 计算公式

        H_{out}={\sum_{-2<j<2}\sum_{-2<i<2}I(x+i,y+j)*coef(x+i,y+j)} >> norm

        V_{out}={\sum_{-2<j<2}\sum_{-2<i<2}I(x+i,y+j)*coef(x+j,y+i)} >> norm

    • 相关主题

      MI_IVE_Sobel


    1.32. MI_IVE_LkOpticalFlow

    • 功能

      执行单层 LK 光流计算任务。

    • 语法

      MI_S32 MI_IVE_LKOpticalFlow(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcPre, MI_IVE_SrcImage_t *pstSrcCur, MI_IVE_SrcMemInfo_t *pstPoint, MI_IVE_MemInfo_t *pstMv, MI_IVE_LkOpticalFlowCtrl_t *pstLkOptiFlowCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrcPre 前一帧图像指针。不能为空。 输入
      pstSrcCur 当前图像指针。不能为空。
      高、宽同 pstSrcPre。
      输入
      pstPoint 当前金字塔层的初始特征点坐标。不能为空。 坐标只能为MI_IVE_PointS25Q7_t 类型;内存至少需分配:pstLkOptiFlowCtrl→u16CornerNum * sizeof(MI_IVE_PointS25Q7_t)。 输入
      pstMv 对应于 pstPoint 的特征点运动位移矢量。不能为空。首次计算需初始化为 0 输入;后续层计算需输入上一层计算得到的运动位移矢量;位移只能为 MI_IVE_MvS9Q7_t 类型;内存至少需分配: pstLkOptiFlowCtrl→u16CornerNum * sizeof(MI_IVE_MvS9Q7_t) 输入、输出
      pstLkOptiFlowCtrl 控制参数指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcPre U8C1 16 byte 64x64 ~ 1920x1080
      pstSrcCur U8C1 16 byte 同 pstSrcPre
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 求解下面的光流方程中,仅用到特征点周围 7X7 像素的来计算对应的 I_xI_yI_t

        \begin{bmatrix} \sum I_{x}^{2} & \sum I_{x}I_{y} \\ \sum I_{x}I_{y} & \sum I_{y}^{2} \\ \end{bmatrix} \begin{bmatrix} u \\ v \end{bmatrix} \begin{bmatrix} -\sum I_{x}I_{t}\\ -\sum I_{y}I_{t} \\ \end{bmatrix}

        其中,I_xI_yI_t 分别表示当前图像在x、y方向的偏导,当前图像与前一帧图像的差分。

      • 以 3 层金字塔 LK 光流计算为例,要求每层图像的高、宽是上一层图像高、宽的一半,其计算示意图如下所示。

        • 根据输入的特征点坐标,计算出 3 层金字塔特征点对应的坐标:p0,p1,p2;

        • 以 p2 和初始为 0 的 mv2 作为输入调用 LK 算子求出在第 2 层上的位移 mv2;

        • 以 p1 和 mv2 作为输入调用 LK 算子求出第 1 层上的位移 mv1;

        • 以 p0 和 mv1 作为输入调用 LK 算子求出第 0 层上的位移 mv0;

        • 若第 0 层不是原始图像,根据第 0 层与原始图像的的比例关系可以得到 LK 光流的真正位移 mv。

      • 请注意设计和使用限制:每个特征点仅以该特征点为中心固定大小窗口的数据进 行计算,若迭代计算过程中,该特征点位移目标点超出该固定大小窗口会导致计算光流失败。


    1.33. MI_IVE_Sad

    • 功能

      计算两幅图像按 4x4/8x8/16x16 分块的 16 bit/8 bit SAD 图像,以及对 SAD 进行阈值化输出。

    • 语法

      MI_S32 MI_IVE_Sad(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstSad, MI_IVE_DstImage_t *pstThr, MI_IVE_SadCtrl_t *pstSadCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像 1 指针。不能为空。 输入
      pstSrc2 源图像 2 指针。不能为空。
      高、宽同 pstSrc1。
      输入
      pstSad 输出 SAD 图像指针。根据 pstSadCtrl→eOutCtrl,若需要输出则不能为空。 根据 pstSadCtrl→eMode,对应 4x4、8x8、16x16 分块模式,高、宽分别为 pstSrc1 的 ¼、⅛、1/16。 输出
      pstThr 输出 SAD 阈值化图像指针。根据 pstSadCtrl→eOutCtrl,若需要输出则不能为空。 根据 pstSadCtrl→eMode,对应 4x4、8x8、16x16 分块模式,高、宽分别为 pstSrc1 的 ¼、⅛、1/16。 输出
      pstSadCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 1 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 1 byte 同 pstSrc1
      pstSad U8C1 、U16C1 16 byte 根据 pstSadCtrl→eMode, 对应 4x4、8x8、16x16 分块模式,高、宽分别为 pstSrc1 的 ¼、⅛、1/16。
      pstThr U8C1 16 byte 根据 pstSadCtrl→eMode, 对应 4x4、8x8、16x16 分块模式,高、宽分别为 pstSrc1 的 ¼、⅛、1/16。
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • SAD 计算公式如下:

        SAD_{out}(x,y)=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}abs(I_{src1}(n*x+i, n*y+j) - I_{src2}(n*x+i, n*y+j))
        Thr(x,y)=\begin{cases} minVal \quad O(x,y) \leq Thresh \\ maxVal \quad O(x,y) > Thresh \\ \end{cases}

        其中

        • I_{src1}(i,j) 对应pstSrc1,I_{src2}(i,j) 对应pstSrc2,SAD_{out}(x,y) 对应pstSad,Thr(x,y) 对应pstThr

        • ThreshminValmaxVal 分别对应pstSadCtrl→u16Thr、pstSadCtrl→u8MinVal和pstSadCtrl→u8MaxVal

        • n 与pstSadCtrl→eMode相关,对应E_MI_IVE_SAD_MODE_MB_4X4、E_MI_IVE_SAD_MODE_MB_8X8、E_MI_IVE_SAD_MODE_MB_16X16时分别取4、8、16


    1.34. MI_IVE_Bernsen

    • 功能

      执行 3x3 和 5x5 模板的 Bernsen 门坎值阈值化任务。

    • 语法

      MI_S32 MI_IVE_Bernsen(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MVE_IVE_BernsenCtrl_t *pstBernsenCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出 Bernsen 图像指针。 输出
      pstBernsenCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstDst S8C1 16 byte 同 pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 不同模式的计算公式如下:

        • MVE_BERNSEN_MODE_NORMAL

          T(x,y)=0.5*(max_{-\omega\leqslant i\leqslant \omega,-\omega\leqslant j\leqslant \omega}I(x+i,y+j)+min_{-\omega\leqslant i\leqslant \omega,-\omega\leqslant j\leqslant \omega}I(x+i,y+j))
          I_{out}(x,y)=\left \{ \begin{aligned} 0,I(x,y)< T(x,y) \\ 1,I(x,y)\geqslant T(x,y) \end{aligned} \right.

          pstBernsenCtrl->u8Thr 无须设定

        • MVE_BERNSEN_MODE_THRESH

          T(x,y)=0.5*(max_{-\omega\leqslant i\leqslant \omega,-\omega\leqslant j\leqslant \omega}I(x+i,y+j)+min_{-\omega\leqslant i\leqslant \omega,-\omega\leqslant j\leqslant \omega}I(x+i,y+j))
          I_{out}(x,y)=\left \{ \begin{aligned} 0,I(x,y)< 0.5*(T(x,y)+Thr) \\ 1,I(x,y)\geqslant 0.5*(T(x,y)+Thr) \end{aligned} \right.

        其中,I(x,y) 对应到 pstSrc, I_{out}(x,y) 对应到 pstDst, 并且 Thr 对应到 pstBernsenCtrl里的u8thr。


    1.35. MI_IVE_LineFilterHor

    • 功能

      针对二值图像进行水平方向的滤波任务。

    • 语法

      MI_S32 MI_IVE_LineFilterHor(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcDst, MVE_IVE_LineFilterHorCtrl_t *pstLineFilterHorCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrcDst 源图像与输出图像指针。不能为空。 输入/输出
      pstLineFilterHorCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcDst U8C1 二值图 16 byte 64x64 ~ 1920x1080
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 对输入图像进行水平方向扫描,当发现黑色线段的长度满足下面条件所述,则将此黑色线段转换为白色线段。

      • LineFilterHor 计算公式如下:

        1. 先水平扫描,并记录水平黑线和白点交错信息,范例如下

        2. 针对上述步骤进行水平扫描黑转白操作。

          举例 : 假设当前黑色线段为 line_black56,如果此线段长度满足下面条件,及转换为白线

          条件 1 : line_black34 > thr1

          条件 2 : line_black78 > thr1

          条件 3 : (line_white45 + line_black56 + line_white67) <= (line_white45 + line_white67) x thr2

          条件 4 : (line_white45 + line_white67) > 1

        3. 继续上述二步骤,直到处理完整张图像,结果如下

        4. 根据上面结果重新进行第二次扫描,并根据黑线与白线的关系进行黑转白操作。

          举例 : 假设当前黑线为line_black34,如果满足下面条件,则将黑线转为白线。

          条件 1 : line_block34 < thr3

          条件 2 : line_white47 > 2thr3

          条件 3 : line_white23 > 9

          条件 4 : line_white23 < 3thr3

        5. 反复执行步骤三和四,直到整张图像处理完毕。


    1.36. MI_IVE_LineFilterVer

    • 功能

      针对二值图像进行垂直方向的滤波任务。

    • 语法

      MI_S32 MI_IVE_LineFilterVer(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcDst, MVE_IVE_LineFilterVerCtrl_t *pstLineFilterVerCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrcDst 源图像与输出图像指针。不能为空。 输入/输出
      pstLineFilterVerCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcDst U8C1 二值图 16 byte 64x64 ~ 1920x1080
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 对输入图像进行垂直方向扫描,当发现黑色线段的长度满足下面条件所述,则将此黑色线段转换为白色线段。

      • FilterLineVer 计算公式如下

        1. 先垂直扫描,并记录水平黑线和白点交错信息,范例如下

        2. 假设当前黑色线段为line_black56,若黑色线段长度满足下面条件,则将黑线转白线。

          Condition 1 : line_black56 < thr

          Condition 2 : line_black67 > 6 & line_whitr67 < 25

          Condition 3 : line_white45 < 12

        3. 根据前面步骤一和步骤二,将整张图像处理完毕。


    1.37. MI_IVE_NoiseRemoveHor

    • 功能

      针对二值图像进行水平方向的噪声滤除任务。

    • 语法

      MI_S32 MI_IVE_NoiseRemoveHor(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcDst, MVE_IVE_NoiseRemoveHorCtrl_t *pstNoiseRemoveHorCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrcDst 源图像与输出图像指针。不能为空。 输入/输出
      pstNoiseRemoveHorCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcDst U8C1 二值图 16 byte 64x64 ~ 1920x1080
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 对输入图像进行水平方向扫描,当白色线段长度小于 thr1,或是大于thr2,则将白线转化为黑线。

    1.38. MI_IVE_NoiseRemoveVer

    • 功能

      针对二值图像进行垂直方向的噪声滤除任务。

    • 语法

      MI_S32 MI_IVE_NoiseRemoveHor(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcDst, MVE_IVE_NoiseRemoveVerCtrl_t *pstNoiseRemoveVerCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrcDst 源图像与输出图像指针。不能为空。 输入/输出
      pstNoiseRemoveVerCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcDst U8C1 二值图 16 byte 64x64 ~ 1920x1080
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 对输入图像进行垂直方向扫描,当白色线段长度小于 thr1,或是大于thr2,则将白线转化为黑线。

    1.39. MI_IVE_AdpThresh

    • 功能

      执行使用自适应性门坎值的阈值化任务。

    • 语法

      MI_S32 MI_IVE_AdpThresh(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_SrcImage_t *pstInteg, MI_IVE_DstImage_t *pstDst, MVE_IVE_AdpThreshCtrl_t *pstAdpThrCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc 源图像指针。不能为空。 输入
      pstInteg 输入积分图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。 输出
      pstAdpThrCtrl 控制信 息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 16 byte 64x64 ~ 1920x1080
      pstInteg U32C1 16 byte 同pstSrc
      pstDst U8C1 16 byte 同pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • AdpThresh 计算公式如下

        T(x,y)=\frac{1}{w*h}*\sum_{i=-h/2}^{h/2}\sum_{j=-w/2}^{w/2}I(x+i,y+j)
        I_{out}(x,y)=\begin{cases} 255 \quad (I(x,y) > (T(x,y) * RateThr) - Offset) \quad |\quad (I(x,y) \geq ValueThr) \\ 0 \quad else \\ \end{cases}
        Integ(x,y)=\sum_{i=-h/2}^{h/2}\sum_{j=-w/2}^{w/2}I(x+i,y+j)

        其中

        • w=u8HalfMaskx, h=u8HalfMaskyRateThr=u8RateThr / 10Offset=s16OffsetValueThr=u8ValueThr

        • I(x, y) 对应到 pstSrc, I_{out}(x,y) 对应到 pstDst,Integ(x,y) 对应到pstInteg


    1.40. MI_IVE_Resize

    • 功能

      执行缩放图像任务。

    • 语法

      MI_S32 MI_IVE_Resize(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstImage_t *pstDst, MVE_IVE_ResizeCtrl_t * pstResizeCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc 源图像指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。 输出
      pstResizeCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1, U8C3_PLANAR, U8C3_PACKAGE和YUV420SP 16 byte 16x4 ~ 1920x1080
      pstDst U8C1, U8C3_PLANAR, U8C3_PACKAGE和YUV420SP 16 byte 同pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 实现方法参考标准的 bilinear 和 area。

      • Souffle系列要求 :最大的缩小和放大倍数为16倍,如64x64最大只能放大到1024x1024,1024x1024最小只能缩小到64x64。


    1.41. MI_IVE_Bat

    • 功能

      针对二值图像执行水平和垂直方向的数值交替次数计算任务。

    • 语法

      MI_S32 MI_IVE_BAT (MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc, MI_IVE_DstMemInfo_t *pstDstH, MI_IVE_DstMemInfo_t *pstDstV, MVE_IVE_BatCtrl_t *pstCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc 源图像指针。不能为空。 输入
      pstDstH 输出水平图像指针。不能为空。 输出
      pstDstV 输出垂直图像指针。不能为空。 输出
      pstCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc U8C1 二值图 16 byte 64x64 ~ 1920x1080
      pstDstH U8C1 二值图 16 byte 同pstSrc
      pstDstV U8C1 二值图 16 byte 同pstSrc
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Bat 计算公式如下 :

        O(y)=\left\{ \begin{aligned} 1,h(y)\geqslant u16HorTimes \\ 0,h(y)< u16HorTimes \end{aligned} \right.
        O(x)=\left\{ \begin{aligned} 1,v(x)\geqslant u16HorTimes \\ 0,v(x)< u16HorTimes \end{aligned} \right.

        其中,h(y)/v(x) 对应到水平/垂直交替次数,O(y)/O(x) 对应到水平/垂直输入图像。


    1.42. MI_IVE_Acc

    • 功能

      执行两灰度图像的累积运算任务。

    • 语法

      MI_S32 MI_IVE_Acc (MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t * pstSrc0, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_DstImage_t *pstDst, MVE_IVE_AccCtrl_t * pstAccCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc0 源图像 1 指针。不能为空。 输入
      pstSrc1 源图像 2 指针。不能为空。 输入
      pstDst 输t出图像指针。不能为空。 输出
      pstAccCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc0 U8C1 16 byte 64x64 ~ 1920x1080
      pstSrc1 U8C1 16 byte 同pstSrc0
      pstDst U8C1 16 byte 同pstSrc0
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 不同模式的计算公式如下 :

        • E_MI_IVE_ACC_MODE_INCREASE :

          I_{out}(x,y)=I_{src0}(x,y)+I_{src1}(x,y)
        • E_MI_IVE_ACC_MODE_DECREASE :

          I_{out}(x,y)=I_{src0}(x,y)-I_{src1}(x,y)
        • E_MI_IVE_ACC_MODE_INCREASE_MAP_255TO1 :

          I_{out}(x,y)=I_{src0}(x,y)+(I_{src1}(x,y)\&0x1)

        其中,I_{src0}(x,y)对应pstSrc0,I_{src1}(x,y)对应pstSrc1,I_{out}(x,y)对应pstDst。


    1.43. MI_IVE_Matrix_Transform

    • 功能

      执行矩阵运算任务。

    • 语法

      MI_S32 MI_IVE_Matrix_Transform(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_SrcImage_t *pstSrc3, MI_IVE_DstImage_t *pstDst1, MI_IVE_DstImage_t *pstDst2, MI_IVE_DstImage_t *pstDst3, MI_IVE_MatrTranfCtrl_t *pstMatrTranfCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc1 源图像指针。不能为空。 输入
      pstSrc2 源图像指针。不能为空。 输入
      pstSrc3 源图像指针。不能为空。 输入
      pstDst1 输出图像指针。不能为空。 输出
      pstDst2 输出图像指针。不能为空。 输出
      pstDst3 输出图像指针。不能为空。 输出
      pstMatrTranfCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 S32C1 16 byte 64x64 ~ 1920x1080
      pstSrc2 S32C1 16 byte 同pstSrc1
      pstSrc3 S32C1 16 byte 同pstSrc1
      pstDst1 S32C1 16 byte 同pstSrc1
      pstDst2 S32C1 16 byte 同pstSrc1
      pstDst3 S32C1 16 byte 同pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 下方为计算图解示意图:

        每一个输入源的元素都是由16个整数,15个小数和1个符号所组成的。

        每一个矩阵的元素都是由16个整数,15个小数和1个符号所组成的。

        • 若是Pudding系列芯片时,每一个矩阵的元素都是由1个整数,14个小数和1个符号所组成的。

        • 为了统一接口,虽然处理数据只有16 Bit,但格式还是使用S32C1。


    1.44. MI_IVE_Image_Dot

    • 功能

      执行图像点乘积任务。

    • 语法

      MI_S32 MI_IVE_Image_Dot (MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。 取值范围:[0, MI_IVE_HANDLE_MAX)。 输入
      pstSrc1 源图像指针。不能为空。 输入
      pstSrc2 源图像指针。不能为空。 输入
      pstDst 输t出图像指针。不能为空。 输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 S32C1 16 byte 64x64 ~ 1920x1080
      pstSrc2 S32C1 16 byte 同pstSrc1
      pstDst S32C1 16 byte 同pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • Image Dot 计算公式如下

        I_{out}(x,y) = I_{src1}(x,y) \times I_{src2}(x,y)

        其中,I_{src1}(x,y)对应pstSrc1,I_{src2}(x,y)对应pstSrc2,I_{out}(x,y)对应pstDst。

        每一个输入源的元素都是由16个整数,15个小数和1个符号所组成的。


    1.45. MI_IVE_Shift_Detector

    • 功能

      执行图像区域追踪任务。

    • 语法

      MI_S32 MI_IVE_Shift_Detector(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_DstImage_t *pstDstX, MI_IVE_DstImage_t *pstDstY, MI_IVE_SHIFT_DETECT_CTRL_t *pstCtrl, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像指针。不能为空。 输入
      pstSrc2 源图像指针。不能为空。 输入
      pstDstX 输t出图像指针。不能为空。 输出
      pstDstY 输t出图像指针。不能为空。 输出
      pstCtrl 控制信息指针。不能为空。 输入
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 16 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 16 byte 同pstSrc1
      pstDstX U8C1 16 byte 同pstSrc1
      pstDstY U8C1 16 byte 同pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 输入两张相同场景不同时间序列之图像(Tk, Tk+1),透过控制信息指针输入Tk的目标区域位置,即可输出目标区域在Tk+1下的追踪结果。

      • 若 enMode = E_MI_IVE_SHIFT_DETECT_MODE_MULTI, shift detector 会将图像划分为MxN个方块区域(方块大小为u16Width x u16Height),并针对每个方块区域内物体进行追踪。

      • 若 enMode = E_MI_IVE_SHIFT_DETECT_MODE_SINGLE, shift detector 则会针对单一物体进行追踪。


    1.46. MI_IVE_AlphaBlending

    • 功能

      执行图像个别权重乘积任务。

    • 语法

      MI_S32 MI_IVE_AlphaBlending (MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrc1, MI_IVE_SrcImage_t *pstSrc2, MI_IVE_SrcImage_t *pstAlpha, MI_IVE_DstImage_t *pstDst, MI_BOOL bInstant);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrc1 源图像指针。不能为空。 输入
      pstSrc2 源图像指针。不能为空。 输入
      pstAlpha 源权重指针。不能为空。 输入
      pstDst 输出图像指针。不能为空。 输出
      bInstant 保留。 输入
      参数名称 支持图像类型 地址对齐 分辨率
      pstSrc1 U8C1 16 byte 64x64 ~ 1920x1080
      pstSrc2 U8C1 16 byte 同pstSrc1
      pstAlpha U8C1 16 byte 同pstSrc1
      pstDst U8C1 16 byte 同pstSrc1
    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • AlphaBlending 计算公式如下:

        I_{out}=I_{Src1}(x,y)\times I_{Alpha}(x,y)+I_{Src2}(x,y)\times (255-I_{Alpha}(x,y))

        其中,I_{src1}(x,y)对应pstSrc1,I_{src2}(x,y)对应pstSrc2,I_{Alpha}(x,y)对应pstAlpha,I_{out}(x,y)对应pstDst。


    1.47. MI_IVE_BGBlur

    • 功能

      执行图像背景区域的模糊、替换、马赛克和模糊马赛克任务。

    • 语法

      MI_S32 MI_IVE_BGBlur(MI_IVE_HANDLE hHandle, MI_IVE_SrcImage_t *pstSrcYMask, MI_IVE_SrcImage_t *pstSrcUvMask, MI_IVE_SrcImage_t *pstSrcOri, MI_IVE_SrcImage_t *pstSrcRepBg, MI_IVE_DstImage_t *pstDst, MI_IVE_BgBlurCtrl_t *pstCtrl);
      
    • 形参

      参数名称 描述 输入/输出
      hHandle 区域句柄号。
      取值范围:[0, MI_IVE_HANDLE_MAX)。
      输入
      pstSrcYMask 源图像指针,标记输入原图Y分量前景/背景的Mask图。不能为空。 输入
      pstSrcUvMask 源图像指针,标记输入原图UV分量前景/背景的Mask图。不能为空。 输入
      pstSrcOri 源图像指针,输入原图。不能为空。 输入
      pstSrcRepBg 源图像指针,输入背景图,参考以下参数说明。不能为空。 输入
      pstDst 输出图像指针。不能为空。 输出
      pstCtrl 控制信息指针。不能为空。 输入

      Souffle系列 参数说明

      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcYMask U8C1 16 byte 640x360或1280x720
      pstSrcUvMask U8C1 16 byte 320x180或640x360,需与pstSrcYMask对应
      pstSrcOri YUV420SP、YUV422_YUYV 16 byte 640x360~7680x4320,width可2像素对齐
      pstSrcRepBg 配置背景模糊:YUV420SP
      配置背景替换:YUV420SP、YUV422_YUYV
      16 byte 配置背景模糊:同pstSrcYMask
      配置背景替换:64x64~7680x4320,width可2像素对齐
      pstDst YUV420SP、YUV422_YUYV 16 byte 同pstSrcOri

      iFord系列 参数说明

      参数名称 支持图像类型 地址对齐 分辨率
      pstSrcYMask U8C1 16 byte 宽度为640 or 480
      高度为:ALIGN_DOWN(pstSrcYMask->u16Width * pstSrcOri->u16Height / pstSrcOri->->u16Width, 1)
      pstSrcUvMask U8C1 16 byte 宽高各为pstSrcYMask宽高的一半
      pstSrcOri YUV420SP 16 byte 640x360~3840x2160,width可2像素对齐
      pstSrcRepBg YUV420SP 16 byte 同pstSrcYMask
      pstDst YUV420SP 16 byte 同pstSrcOri
      • 对于iFord系列,pstSrcOri->u16Width >= pstSrcOri->u16Height时,pstSrcYMask宽度为640;pstSrcOri->u16Width < pstSrcOri->u16Height时,pstSrcYMask宽度为480。

      • ALIGN_DOWN(n, 1)表示对n进行向下2对齐,如ALIGN_DOWN(513, 1) = 512

    • 返回值

      返回值 描述
      0 成功。
      非 0 失败,参见错误码
    • 依赖

      • 头文件:mi_common_datatype.h、mi_ive.h、mi_ive_datatype.h

      • 库文件:libmi_ive.a

    • 注意

      • 配置模式请参考MI_IVE_BgBlurMode_e

        配置模式 源图像分辨率关系限制
        背景模糊/背景马赛克/背景模糊+马赛克 pstSrcYMask = pstSrcRepBg <= pstSrcOri
        背景替换 pstSrcYMask <= pstSrcOri;
        pstSrcOri / 16 <= pstSrcRepBg <= pstSrcOri;
        注:pstSrcRepBg宽度大于1280时,要求pstSrcRepBg与pstSrcOri分辨率一致
    • 举例

      MI_S32 Sample_BGBlur()
      {
          MI_S32 s32Ret;
          MI_IVE_HANDLE handle = 0;
          MI_IVE_SrcImage_t stSrcOri, stSrcYMask, stSrcUvMask, stSrcRepBg;
          MI_IVE_DstImage_t stDst;
          MI_IVE_BgBlurCtrl_t ctrl =
          {
              .eBgBlurMode    = E_MI_IVE_BGBLUR_MODE_BLUR, // or other mode.
              .u8MaskThr      = 127, // [0, 255], depends on user.
              .u8BlurLv       = 0, // [0, 255], depends on user and only valid in Souffle series.
              .u8ScalingStage = 0, // [0, 255], used in E_MI_IVE_BGBLUR_MODE_BLUR.
              .eBgBlurMaskOp  = E_MI_IVE_BGBLUR_MASK_OP_DILATE, // depends on user, refer to MI_IVE_BgBlurMaskOp_e.
              .u8SaturationLv = 64, // [0, 128], depends on user and only iFord support.
              .u8MosaicSize   = 6, // [2, 4, 6, 8, 10], depends on user and only iFord support.
          };
      
          // Init IVE
          if (MI_SUCCESS != (s32Ret = MI_IVE_Create(handle)))
          {
              printf("Could not create IVE handle\n");
              break;
          }
      
          // ...set input image info to stSrcOri, stSrcYMask, stSrcUvMask, stSrcRepBg.
          ...
          // ...set output image info to stDst.
          ...
      
          // BGBlur task.
          if (MI_SUCCESS != (s32Ret = MI_IVE_BGBlur(handle, &stSrcYMask, &stSrcUvMask, &stSrcOri, &stSrcRepBg, &stDst, &ctrl)))
          {
              printf("MI_IVE_BGBlur() return ERROR 0x%X\n", s32Ret);
              return E_MI_ERR_FAILED;
          }
      
          // get output from stDst and do something expected.
          ...
      
          // Deinit IVE
          MI_IVE_Destroy(handle);
      
          return s32Ret;
      }
      

      图 1-12 背景模糊示意图

      图 1-13 背景替换示意图


    2. IVE 数据类型


    2.1. 数据类型定义

    IVE 相关数据类型、数据结构定义如下:

    数据类型 定义
    MI_IVE_HANDLE_MAX 定义IVE最大句柄号数量
    MI_IVE_HIST_NUM 定义直方图统计 bin 数目
    MI_IVE_MAP_NUM 定义映射查找表项数目
    MI_IVE_MAX_REGION_NUM 定义最大连通区域数目
    MI_IVE_ST_MAX_CORNER_NUM 定义 Shi-Tomasi-like 角点最大数目
    MI_IVE_MASK_SIZE_5X5 定义 Mask size
    MI_IVE_CANNY_STACK_RESERVED_SIZE 定义 Canny Stack Reserved Size
    MI_IVE_ImageType_e 定义二维广义图像支持的图像类型
    MI_IVE_Image_t 定义二维广义图像信息。
    MI_IVE_SrcImage_t 定义源图像
    MI_IVE_DstImage_t 定义输出图像
    MI_IVE_Data_t 定义以 byte 为单位的二维图像信息。
    MI_IVE_SrcData_t 定义以 byte 为单位的二维源数据信息
    MI_IVE_DstData_t 定义 byte 为单位的二维输出数据信息
    MI_IVE_MemInfo_t 定义一维数据内存信息
    MI_IVE_SrcMemInfo_t 定义一维源数据
    MI_IVE_DstMemInfo_t 定义一维输出数据
    MI_IVE_Length8bit_u 定义 8bit 数据共享体
    MI_IVE_PointU16_t 定义 U16 表示的点信息结构体
    MI_IVE_PointS25Q7_t 定义 S25Q7 定点表示的点信息结构体
    MI_IVE_Rect_t 定义 U16 表示的矩形信息结构体
    MI_IVE_FilterCtrl_t 定义模板滤波控制信息
    MI_IVE_CscMode_e 定义色彩空间转换模式
    MI_IVE_CscCtrl_t 定义色彩空间转换控制信息
    MI_IVE_FilterAndCscCtrl_t 定义模板滤波加色彩空间转换复合功能控制信息
    MI_IVE_SobelOutCtrl_e 定义 sobel 输出控制信息
    MI_IVE_SobelCtrl_t 定义 sobel 边缘提取控制信息
    MI_IVE_MagAndAngOutCtrl_e 定义 canny 边缘幅值与角度计算的输出格式
    MI_IVE_MagAndAngCtrl_t 定义 canny 边缘幅值和幅角计算的控制信息
    MI_IVE_DilateCtrl_t 定义膨胀控制信息
    MI_IVE_ErodeCtrl_t 定义腐蚀控制信息
    MI_IVE_ThreshMode_e 定义图像阈值化输出格式
    MI_IVE_ThreshCtrl_t 定义图像阈值化控制信息
    MI_IVE_SubMode_e 定义两图像相减输出格式
    MI_IVE_SubCtrl_t 定义两图像相减控制参数
    MI_IVE_IntegOutCtrl_e 定义积分图输出控制参数
    MI_IVE_IntegCtrl_t 定义积分图计算控制参数
    MI_IVE_ThreshS16Mode_e 定义 16bit 有符号图像的阈值化模式
    MI_IVE_ThreshS16Ctrl_t 定义 16bit 有符号图像的阈值化控制参数
    MI_IVE_ThreshU16Mode_e 定义 16bti 无符号图像的阈值化模式
    MI_IVE_ThreshU16Ctrl_t 定义 16bit 无符号图像的阈值化控制参数
    MI_IVE_16BitTo8BitMode_e 定义 16bit 图像到 8bit 图像的转化模式
    MI_IVE_16bitTo8BitCtrl_t 定义 16bit 图像到 8bit 图像的转化控制参数
    MI_IVE_OrdStatFilterMode_e 定义顺序统计量滤波模
    MI_IVE_OrdStatFilter_t 定义顺序统计量滤波控制参数
    MI_IVE_MapLutMem_t 定义 Map 算子的查找表内存信息
    MI_IVE_EqualizeHistCtrlMem_t 定义直方图衡化辅助均内存。
    MI_IVE_EqualizeHistCtrl_t 定义直方图均衡化控制参数。
    MI_IVE_AddMode_e 定义 add 计算模式
    MI_IVE_AddCtrl_t 定义两图像的加权加控制参数
    MI_IVE_NccDstMem_t 定义 NCC 的输出内存信息。
    MI_IVE_Region_t 定义连通区域信息。
    MI_IVE_CcBlob_t 定义连通区域标记的输出信息。
    MI_IVE_CclMode_e 定义连通区域模式。
    MI_IVE_CclCtrl_t 定义连通区域标记控制参数。
    MI_IVE_GmmCtrl_t 定义 GMM 背景建模的控制参数
    MI_IVE_CannyStackSize_t 定义 Canny 边缘前半部分计算时强边缘点栈大小结构体
    MI_IVE_CannyHysEdgeCtrl_t 定义 Canny 边缘前半部分计算任务的控制参数。
    MI_IVE_LbpCmpMode_e 定义 LBP 计算的比较模式。
    MI_IVE_LbpChalMode_e 定义 LBP 输入信道模式。
    MI_IVE_LbpCtrrl_t 定义LBP 纹理计算控制参数
    MI_IVE_NormGradOutCtrl_e 定义归一化梯度信息计算任务输出控制枚举类型
    MI_IVE_NormGradCtrl_t 定义归一化梯度信息计算控制参数
    MI_IVE_MvS9Q7_t 定义位移结构体
    MI_IVE_LkOpticalFlowCtrl_t 定义 LK 光流计算控制参数
    MI_IVE_SadMode_e 定义 SAD 计算模式。
    MI_IVE_SadOutCtrl_e 定义 SAD 输出控制模式。
    MI_IVE_SadCtrl_t 定义 SAD 控制参数。
    MI_IVE_BernsenCtrl_t 定义 Bernsen 控制参数。
    MI_IVE_BernsenMode_e 定义 Bernsen 阀值模式。
    MI_IVE_LineFilterHorCtrl_t 定义 LineFilterHor 控制参数。
    MI_IVE_LineFilterVerCtrl_t 定义 LineFilterVer 控制参数。
    MI_IVE_NoiseRemoveHor_t 定义 NoiseRemoveHor 控制参数。
    MI_IVE_NoiseRemoveVer_t 定义 NoiseRemoveVer 控制参数。
    MI_IVE_AdpThreshCtrl_t 定义 AdpThresh 控制参数。
    MI_IVE_ResizeMode_e 定义 Resize 输入模式。
    MI_IVE_ResizeMethod_e 定义 Resize算法模式。
    MI_IVE_ResizeCtrl_t 定义 Resize 控制参数。
    MI_IVE_BatCtrl_t 定义 SAD 控制参数。
    MI_IVE_BatMode_e 定义 Bat 运算模式。
    MI_IVE_AccCtrl_t 定义 Acc 控制参数。
    MI_IVE_AccMode_e 定义 Acc 运算模式。
    MI_IVE_MatrTranfMode_e 定义 matrix_transform 的输入信道模式。
    MI_IVE_MatrTranfCtrlMode_e 定义 matrix_transform 的输入控制模式
    MI_IVE_MatrTranfCtrl_t 定义 matrix_transform 控制参数。
    MI_IVE_SHIFT_DETECT_MODE_e 定义 shift detector 的追踪检测模式
    MI_IVE_SHIFT_DETECT_CTRL_t 定义 shift detector控制参数
    MI_IVE_BgBlurMode_e 定义BGBlur工作模式。
    MI_IVE_BgBlurMaskOp_e 定义BGBlur Mask预处理模式。
    MI_IVE_BgBlurCtrl_t 定义BGBlur控制参数。

    2.2. 定点数据类型

    • 说明

      定义定点化的数据类型。

    • 定义

      typedef unsigned char   MI_U0Q8;
      typedef unsigned char   MI_U1Q7;
      typedef unsigned char   MI_U5Q3;
      typedef unsigned short  MI_U0Q16;
      typedef unsigned short  MI_U4Q12;
      typedef unsigned short  MI_U6Q10;
      typedef unsigned short  MI_U8Q8;
      typedef unsigned short  MI_U14Q2;
      typedef unsigned short  MI_U12Q4;
      typedef short           MI_S14Q2;
      typedef short           MI_S9Q7;
      typedef unsigned int    MI_U22Q10;
      typedef unsigned int    MI_U25Q7;
      typedef int             MI_S25Q7;
      typedef unsigned short  MI_U8Q4F4; /*8bits unsigned integer, 4bits decimal fraction, 4bits flag bits*/
      
    • 成员

      成员名称 描述
      MI_U0Q8 用 0bit 表示整数部分,8bit 表示小数部分。文档中用 UQ0.8 来表示。
      MI_U1Q7 用高 1bit 无符号数据表示整数部分,低 7bit 表示小数部分。文档中用 UQ1.7 来表示。
      MI_U5Q3 用高 5bit 无符号数据表示整数部分,低 3bit 表示小数部分。文档中用 UQ5.3 来表示。
      MI_U0Q16 用 0bit 表示整数部分,16bit 表示小数部分。文档中用 UQ0.16 来表示。
      MI_U4Q12 用高 4bit 无符号数据表示整数部分,低 12bit 表示小数部分。文档中用 UQ4.12 来表示。
      MI_U6Q10 用高 6bit 无符号数据表示整数部分,低 10bit 表示小数部分。文档中用 UQ6.10 来表示。
      MI_U8Q8 用高 8bit 无符号数据表示整数部分,低 8bit 表示小数部分。文档中用 UQ8.8 来表示。
      MI_U14Q2 用高 14bit 无符号数据表示整数部分,低 2bit 表示小数部分。文档中用 UQ14.2 来表示。
      MI_U12Q4 用高 12bit 无符号数据表示整数部分,低 4bit 表示小数部分。文档中用 UQ12.4 来表示。
      MI_S14Q2 用高 14bit 有符号数据表示整数部分,低 2bit 表示小数部分。文档中用 SQ14.2 来表示。
      MI_S9Q7 用高 9bit 有符号数据表示整数部分,低 7bit 表示小数部分。文档中用 SQ9.7 来表示。
      MI_U22Q10 用高 22bit 无符号数据表示整数部分,低 10bit 表示小数部分。文档中用 UQ22.10 来表示。
      MI_U25Q7 用高 25bit 无符号数据表示整数部分,低 7bit 表示小数部分。文档中用 UQ25.7 来表示。
      MI_S25Q7 用高 25bit 有符号数据表示整数部分,低 7bit 表示小数部分。文档中用 SQ25.7 来表示。
      MI_U8Q4F4 用高 8bit 无符号数据表示整数部分,中间 4bit 表示小数部分,低 4bit 表示标志位。文档中用 UQF8.4.4 来表示。
    • 注意事项

      • MI_UxQyFz/MI_SxQy:

        • U 后面的数字 x 表示是用 x bit 无符号数据表示整数部分;

        • S 后面的数字 x 表示用x bit 有符号数据表示整数部分;

        • Q 后面的数字 y 表示用 y bit 数据表示小数部分;

        • F 后面的数字 z 表示用 z bit 来表示标志位;

        • 从左到右依次表示高 bit 位到低 bit 位。


    2.3. MI_IVE_HANDLE_MAX

    • 说明

      定义IVE最大句柄号数量。

    • 定义

      #define MI_IVE_HANDLE_MAX 128
      

    2.4. MI_IVE_HIST_NUM

    • 说明

      定义直方图统计 bin 数目。

    • 定义

      #define MI_IVE_HIST_NUM 256
      

    2.5. MI_IVE_MAP_NUM

    • 说明

      定义映射查找表项数目。

    • 定义

      #define MI_IVE_MAP_NUM 256
      

    2.6. MI_IVE_MAX_REGION_NUM

    • 说明

      定义最大连通区域数目。

    • 定义

      #define MI_IVE_MAX_REGION_NUM 255
      

    2.7. MI_IVE_ST_MAX_CORNER_NUM

    • 说明

      定义 Shi-Tomasi-like 角点最大数目。

    • 定义

      #define MI_IVE_ST_MAX_CORNER_NUM 200
      

    2.8. MI_IVE_MASK_SIZE_5X5

    • 说明

      定义 Mask size。

    • 定义

      #define MI_IVE_MASK_SIZE_5X5 25
      

    2.9. MI_IVE_CANNY_STACK_RESERVED_SIZE

    • 说明

      定义 Canny Stack Reserved Size。

    • 定义

      #define MI_IVE_CANNY_STACK_RESERVED_SIZE 12
      

    2.10. MI_IVE_ImageType_e

    • 说明

      定义二维广义图像支持的图像类型。

    • 定义

      typedef enum
      {
          E_MI_IVE_IMAGE_TYPE_U8C1          =0x0,
          E_MI_IVE_IMAGE_TYPE_S8C1          =0x1,
          E_MI_IVE_IMAGE_TYPE_YUV420SP      =0x2, /*YUV420 SemiPlanar*/
          E_MI_IVE_IMAGE_TYPE_YUV422SP      =0x3, /*YUV422 SemiPlanar*/
          E_MI_IVE_IMAGE_TYPE_YUV420P       =0x4, /*YUV420 Planar*/
          E_MI_IVE_IMAGE_TYPE_YUV422P       =0x5, /*YUV422 planar*/
          E_MI_IVE_IMAGE_TYPE_S8C2_PACKAGE  =0x6,
          E_MI_IVE_IMAGE_TYPE_S8C2_PLANAR   =0x7,
          E_MI_IVE_IMAGE_TYPE_S16C1         =0x8,
          E_MI_IVE_IMAGE_TYPE_U16C1         =0x9,
          E_MI_IVE_IMAGE_TYPE_U8C3_PACKAGE  =0xa,
          E_MI_IVE_IMAGE_TYPE_U8C3_PLANAR   =0xb,
          E_MI_IVE_IMAGE_TYPE_S32C1         =0xc,
          E_MI_IVE_IMAGE_TYPE_U32C1         =0xd,
          E_MI_IVE_IMAGE_TYPE_S64C1         =0xe,
          E_MI_IVE_IMAGE_TYPE_U64C1         =0xf,
          E_MI_IVE_IMAGE_TYPE_YUV420SP_NV21 =0x10,
          E_MI_IVE_IMAGE_TYPE_YUV422_YUYV   =0x11,
          E_MI_IVE_IMAGE_TYPE_BUTT
      }MI_IVE_ImageType_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_IMAGE_TYPE_U8C1 每个像素用 1 个 8bit 无符号数据表示的单通道图像。
      E_MI_IVE_IMAGE_TYPE_S8C1 每个像素用 1 个 8bit 有符号数据表示的单通道图像。
      E_MI_IVE_IMAGE_TYPE_YUV420SP YUV420 Semiplanar 格式的图像。
      E_MI_IVE_IMAGE_TYPE_YUV422SP YUV422 Semiplanar 格式的图像。
      E_MI_IVE_IMAGE_TYPE_YUV420P YUV420 Planar 格式的图像。
      E_MI_IVE_IMAGE_TYPE_YUV422P YUV422 Planar 格式的图像。
      E_MI_IVE_IMAGE_TYPE_S8C2_PACKA GE 每个像素用 2 个 8bit 有符号数据表示,且以 package 格式存储 2 通道图像。
      E_MI_IVE_IMAGE_TYPE_S8C2_PLANA R 每个像素用 2 个 8bit 有符号数据表示,且以planar 格式存储 2 通道图像。
      E_MI_IVE_IMAGE_TYPE_S16C1 每个像素用 1 个 16bit 有符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_U16C1 每个像素用 1 个 16bit 无符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_U8C3_PACK AGE 每个像素用 3 个 8bit 无符号数据表示且以 planar 格式存储 3 通道图像。
      E_MI_IVE_IMAGE_TYPE_U8C3_PLAN AR 每个像素用 3 个 8bit 无符号数据表示 1 个像素的 3 通道图像,且以 planar 格式存储。
      E_MI_IVE_IMAGE_TYPE_S32C1 每个像素用 1 个 32bit 有符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_U32C1 每个像素用 1 个 32bit 无符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_S64C1 每个像素用 1 个 64bit 有符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_U64C1 每个像素用 1 个 64bit 无符号数据表示单通道图像。
      E_MI_IVE_IMAGE_TYPE_YUV420SP_NV21 YUV420 Semiplanar 格式的图像,UV数据摆放顺序与E_MI_IVE_IMAGE_TYPE_YUV420SP相反。
      E_MI_IVE_IMAGE_TYPE_YUV422_YUYV YUV422 Package 格式的图像。按YUYV顺序摆放数据。
    • 注意:

      • E_MI_IVE_IMAGE_TYPE_U8C1、E_MI_IVE_IMAGE_TYPE_S8C1、E_MI_IVE_IMAGE_TYPE_YUV420SP、E_MI_IVE_IMAGE_TYPE_S16C1、E_MI_IVE_IMAGE_TYPE_U16C1、E_MI_IVE_IMAGE_TYPE_S32C1、E_MI_IVE_IMAGE_TYPE_U32C1、E_MI_IVE_IMAGE_TYPE_S64C1、E_MI_IVE_IMAGE_TYPE_U64C1

        • RGB存储时单独存R或者G或者B
      • E_MI_IVE_IMAGE_TYPE_S8C2_PACKAGE、E_MI_IVE_IMAGE_TYPE_U8C3_PACKAGE

        • RGB存储时存储顺序如RGBRGBRGB...
      • E_MI_IVE_IMAGE_TYPE_S8C2_PLANAR、E_MI_IVE_IMAGE_TYPE_U8C3_PLANAR

        • RGB存储时R存一块,G存一块,B存一块(如RRR...GGG...BBB...)
    • 相关数据类型及接口

      MI_IVE_Image_t

      MI_IVE_SrcImage_t

      MI_IVE_DstImage_t


    2.11. MI_IVE_Image_t

    • 说明

      定义二维广义图像信息。

    • 定义

      typedef struct MI_IVE_Image_s
      {
          MI_IVE_ImageType_e eType;
          MI_PHY aphyPhyAddr[3];
          MI_U8 *apu8VirAddr[3];
          MI_U16 au16Stride[3];
          MI_U16 u16Width;
          MI_U16 u16Height;
          MI_U16 u16Reserved; /*Can be used such as elemSize*/
      }MI_IVE_Image_t;
      
    • 成员

      成员名称 描述
      enType 广义图像的图像类型。
      aphyPhyAddr[3] 广义图像的物理地址数组。
      apu8VirAddr[3] 广义图像的虚拟地址数组。
      au16Stride[3] 广义图像的跨度。
      u16Width 广义图像的宽度。
      u16Height 广义图像的高度。
      u16Reserved 标示内存被软件或硬件使用中,用以判别自动Cache Invalidate及Cache Flush的运作。
    • 注意事项

      • 不同的算子对图像图像的输入输出地址是否对齐有不同的要求。

      • u16Width、u16Height 和u16Stride 均是以像素为度量单位的。

    • 相关数据类型及接口

      MI_IVE_ImageType_e

      MI_IVE_SrcImage_t

      MI_IVE_DstImage_t


    2.12. MI_IVE_SrcImage_t


    2.13. MI_IVE_DstImage_t


    2.14. MI_IVE_Data_t

    • 说明

      定义以 byte 为单位的二维数据信息。

    • 定义

      typedef struct MI_IVE_Data_s
      {
          MI_PHY phyPhyAddr; /*Physical address of the data*/
          MI_U8 *pu8VirAddr;
          MI_U16 u16Stride; /*Data stride by byte*/
          MI_U16 u16Height; /*Data height by byte*/
          MI_U16 u16Width; /*Data width by byte*/
          MI_U16 u16Reserved;
      }MI_IVE_Data_t;
      
    • 成员

      成员名称 描述
      phyPhyAddr 图像物理地址。
      pu8VirAddr 图像虚拟地址。
      u16Stride 图像跨度。
      u16Height 图像宽度。
      u16Width 图像高度。
      u16Reserved 保留位。
    • 注意事项

      • 表示以 byte 为单位的二维数据;可以与MI_IVE_Image_t图像进行转换。

    2.15. MI_IVE_SrcData_t

    • 说明

      定义以 byte 为单位的二维源数据信息。

    • 定义

      typedef MI_IVE_Data_t MI_IVE_SrcData_t;
      
    • 相关数据类型及接口

      MI_IVE_Image_t

      MI_IVE_DstData_t


    2.16. MI_IVE_DstData_t

    • 说明

      定义 byte 为单位的二维输出数据信息。

    • 定义

      typedef MI_IVE_Data_t MI_IVE_DstData_t;
      
    • 相关数据类型及接口

      MI_IVE_Image_t

      MI_IVE_SrcImage_t


    2.17. MI_IVE_MemInfo_t

    • 说明

      定义一维数据内存信息。

    • 定义

      typedef struct MI_IVE_MemInfo_s
      {
          MI_PHY phyPhyAddr;
          MI_U8 *pu8VirAddr;
          MI_U32 u32Size;
      }MI_IVE_MemInfo_t;
      
    • 成员

      成员名称 描述
      phyPhyAddr 一维数据物理地址。
      pu8VirAddr 一维数据虚拟地址。
      u32Size 一维数据 byte 数目。
    • 相关数据类型及接口

      MI_IVE_SrcMemInfo_t

      MI_IVE_DstMemInfo_t


    2.18. MI_IVE_SrcMemInfo_t


    2.19. MI_IVE_DstMemInfo_t


    2.20. MI_IVE_Length8bit_u

    • 说明

      定义 8bit 数据联合体。

    • 定义

      typedef union
      {
          MI_S8 s8Val;
          MI_U8 u8Val;
      } MI_IVE_Length8bit_u;
      
    • 成员

      成员名称 描述
      s8Val 有符号 8bit 值。
      u8Val 无符号 8bit 值。

    2.21. MI_IVE_PointU16_t

    • 说明

      定义 U16 表示的点信息结构体。

    • 定义

      typedef struct MI_IVE_PointU16_s
      {
          MI_U16 u16X;
          MI_U16 u16Y;
      }MI_IVE_PointU16_t;
      
    • 成员

      成员名称 描述
      u16X 点的 x 坐标。
      u16Y 点的 y 坐标。

    2.22. MI_IVE_PointS25Q7_t

    • 说明

      定义 S25Q7 定点表示的点信息结构体。

    • 定义

      typedef struct MI_IVE_PointS25Q7_s
      {
          MI_S25Q7 s25q7X; /*X coordinate*/
          MI_S25Q7 s25q7Y; /*Y coordinate*/
      }MI_IVE_PointS25Q7_t;
      
    • 成员

      成员名称 描述
      s25q7X 点的 x 坐标,以 SQ25.7 表示。
      s25q7Y 点的 y 坐标,以 SQ25.7 表示。

    2.23. MI_IVE_Rect_t

    • 说明

      定义 U16 表示的矩形信息结构体。

    • 定义

      typedef struct MI_IVE_Rect_s
      {
          MI_U16 u16X;
          MI_U16 u16Y;
          MI_U16 u16Width;
          MI_U16 u16Height;
      }MI_IVE_Rect_t;
      
    • 成员

      成员名称 描述
      u16X 矩形相对于坐标原点最近点的 x 坐标。
      u16Y 矩形相对于坐标原点最近点的 y 坐标。
      u16Width 矩形的宽。
      u16Height 矩形的高。

    2.24. MI_IVE_FilterCtrl_t

    • 说明

      定义模板滤波控制信息。

    • 定义

      typedef struct MI_IVE_FilterCtrl_s
      {
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5]; /*Template parameter filter coefficient*/
          MI_U8 u8Norm; /*Normalization parameter, by right shift*/
      }MI_IVE_FilterCtrl_t;
      
    • 成员

      成员名称 描述
      as8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数,外围系数设为 0 可实现 3x3 模板滤波。
      u8Norm 归一化参数。取值范围:[0, 13]。
    • 注意事项

      • 通过配置不同的模板系数可以达到不同的滤波效果。

    2.25. MI_IVE_CscMode_e

    • 说明

      定义色彩空间转换模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_CSC_MODE_PIC_BT601_YUV2RGB      = 0x0,
          E_MI_IVE_CSC_MODE_PIC_BT601_YUV2BGR      = 0x1,
          E_MI_IVE_CSC_MODE_PIC_BT601_RGB2YUV      = 0x2,
          E_MI_IVE_CSC_MODE_PIC_BT601_BGR2YUV      = 0x3,
          E_MI_IVE_CSC_MODE_PIC_BT601_NV21_YUV2RGB = 0x4,
          E_MI_IVE_CSC_MODE_PIC_BT601_NV21_YUV2BGR = 0x5,
          E_MI_IVE_CSC_MODE_PIC_BT601_RGB2YUV_NV21 = 0x6,
          E_MI_IVE_CSC_MODE_PIC_BT601_BGR2YUV_NV21 = 0x7,
          E_MI_IVE_CSC_MODE_MAX
      }MI_IVE_CscMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_CSC_MODE_PIC_BT601_YUV2RGB YUV(NV12)2RGB 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_YUV2BGR YUV(NV12)2BGR 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_RGB2YUV RGB2YUV(NV12) 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_BGR2YUV BGR2YUV(NV12) 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_NV21_YUV2RGB YUV(NV21)2RGB 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_NV21_YUV2BGR YUV(NV21)2BGR 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_RGB2YUV_NV21 RGB2YUV(NV21) 的图像变换。
      E_MI_IVE_CSC_MODE_PIC_BT601_BGR2YUV_NV21 BGR2YUV(NV21) 的图像变换。
    • 注意事项

      • YUV 满足 0 ≤ Y、U、V ≤ 255

      • RGB 满足 0 ≤ R、G、B ≤ 255。

    • 相关数据类型及接口

      MI_IVE_CscCtrl_t

      MI_IVE_FilterAndCscCtrl_t


    2.26. MI_IVE_CscCtrl_t

    • 说明

      定义色彩空间转换控制信息。

    • 定义

      typedef struct MI_IVE_CscCtrl_s
      {
          enMode; /*Working mode*/
      }MI_IVE_CscCtrl_t;
      
    • 成员

      成员名称 描述
      enMode 工作模式。
    • 相关数据类型及接口

      MI_IVE_CscMode_e


    2.27. MI_IVE_FilterAndCscCtrl_t

    • 说明

      定义模板滤波加色彩空间转换复合功能控制信息。

    • 定义

      typedef struct MI_IVE_FilterAndCscCtrl_s
      {
          MI_IVE_CscMode_e eMode; /*CSC working mode*/
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5]; /*Template parameter filter coefficient*/
          MI_U8 u8Norm; /*Normalization parameter, by right shift*/
      }MI_IVE_FilterAndCscCtrl_t;
      
    • 成员

      成员名称 描述
      eMode 工作模式。
      as8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数。
      u8Norm 归一化参数。 取值范围:[0, 13]。
    • 注意事项

      • 仅支持 YUV2RGB 的 4 种模式。
    • 相关数据类型及接口

      MI_IVE_CscMode_e


    2.28. MI_IVE_SobelOutCtrl_e

    • 说明

      定义 Sobel 输出控制信息。

    • 定义

      typedef enum
      {
          E_MI_IVE_SOBEL_OUT_CTRL_BOTH = 0x0, /*Output horizontal and vertical*/
          E_MI_IVE_SOBEL_OUT_CTRL_HOR  = 0x1, /*Output horizontal*/
          E_MI_IVE_SOBEL_OUT_CTRL_VER  = 0x2, /*Output vertical*/
          E_MI_IVE_SOBEL_OUT_CTRL_BUTT
      }MI_IVE_SobelOutCtrl_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_SOBEL_OUT_CTRL_BOTH 同时输出用模板和转置模板滤波的结果。
      E_MI_IVE_SOBEL_OUT_CTRL_HOR 仅输出用模板直接滤波的结果。
      E_MI_IVE_SOBEL_OUT_CTRL_VER 仅输出用转置模板滤波的结果。
    • 相关数据类型及接口

      MI_IVE_SobelCtrl_t


    2.29. MI_IVE_SobelCtrl_t

    • 说明

      定义 Sobel-like 梯度计算控制信息。

    • 定义

      typedef struct MI_IVE_SobelCtrl_s
      {
          MI_IVE_SobelOutCtrl_e eOutCtrl; /*Output format*/
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5]; /*Template parameter*/
      }MI_IVE_SobelCtrl_t;
      
    • 成员

      成员名称 描述
      eOutCtrl 输出控制枚举参数。
      as8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数。
    • 相关数据类型及接口

      MI_IVE_SobelOutCtrl_e


    2.30. MI_IVE_MagAndAngOutCtrl_e

    • 说明

      定义梯度幅值与角度计算的输出格式。

    • 定义

      typedef enum
      {
          E_MI_IVE_MAG_AND_ANG_OUT_CTRL_MAG         = 0x0,
          E_MI_IVE_MAG_AND_ANG_OUT_CTRL_MAG_AND_ANG = 0x1,
          E_MI_IVE_MAG_AND_ANG_OUT_CTRL_BUTT
      }MI_IVE_MagAndAngOutCtrl_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_MAG_AND_ANG_OUT_CTRL_MAG 仅输出幅值。
      E_MI_IVE_MAG_AND_ANG_OUT_CTRL_MAG_AND_ANG 同时输出幅值和角度值。
    • 相关数据类型及接口

      MI_IVE_MagAndAngCtrl_t


    2.31. MI_IVE_MagAndAngCtrl_t

    • 说明

      定义梯度幅值和幅角计算的控制信息。

    • 定义

      typedef struct MI_IVE_MagAndAngCtrl_s
      {
          MI_IVE_MagAndAngOutCtrl_e eOutCtrl;
          MI_U16 u16Thr;
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5]; /*Template parameter.*/
      }MI_IVE_MagAndAngCtrl_t;
      
    • 成员

      成员名称 描述
      eOutCtrl 输出格式。
      u16Thr 用于对幅值进行阈值化的阈值。
      as8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数。
    • 相关数据类型及接口

      MI_IVE_MagAndAngOutCtrl_e


    2.32. MI_IVE_DilateCtrl_t

    • 说明

      定义膨胀控制信息。

    • 定义

      typedef struct MI_IVE_DilateCtrl_s
      {
          MI_U8 au8Mask[MI_IVE_MASK_SIZE_5X5]; /*The template parameter value must be 0 or 255.*/
      }MI_IVE_DilateCtrl_t;
      
    • 成员

      成员名称 描述
      au8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数。取值范围:0 或 255。

    2.33. MI_IVE_ErodeCtrl_t

    • 说明

      定义腐蚀控制信息。

    • 定义

      typedef struct MI_IVE_ErodeCtrl_s
      {
          MI_U8 au8Mask[MI_IVE_MASK_SIZE_5X5]; /*The template parameter value must be 0 or 255.*/
      }MI_IVE_ErodeCtrl_t;
      
    • 成员

      成员名称 描述
      au8Mask[MI_IVE_MASK_SIZE_5X5] 5x5 模板系数。取值范围:0 或 255。

    2.34. MI_IVE_ThreshMode_e

    • 说明

      定义图像阈值化输出格式。

    • 定义

      typedef enum
      {
          E_MI_IVE_THRESH_MODE_BINARY      = 0x0, /*srcVal <= lowThr,  dstVal = minVal; srcVal > lowThr, dstVal = maxVal.*/
          E_MI_IVE_THRESH_MODE_TRUNC       = 0x1, /*srcVal <= lowThr,  dstVal = srcVal; srcVal > lowThr, dstVal = maxVal.*/
          E_MI_IVE_THRESH_MODE_TO_MINVAL   = 0x2, /*srcVal <= lowThr,  dstVal = minVal; srcVal > lowThr, dstVal = srcVal.*/
          E_MI_IVE_THRESH_MODE_MIN_MID_MAX = 0x3, /*srcVal <= lowThr, dstVal = minVal; lowThr < srcVal <= highThr, dstVal = midVal; srcVal > highThr, dstVal = maxVal.*/
          E_MI_IVE_THRESH_MODE_ORI_MID_MAX = 0x4, /*srcVal <= lowThr, dstVal = srcVal; lowThr < srcVal <= highThr, dstVal = midVal; srcVal > highThr, dstVal = maxVal.*/
          E_MI_IVE_THRESH_MODE_MIN_MID_ORI = 0x5, /*srcVal <= lowThr, dstVal = minVal; lowThr < srcVal <= highThr, dstVal = midVal; srcVal > highThr, dstVal = srcVal.*/
          E_MI_IVE_THRESH_MODE_MIN_ORI_MAX = 0x6, /*srcVal <= lowThr, dstVal = minVal; lowThr < srcVal <= highThr, dstVal = srcVal; srcVal > highThr, dstVal = maxVal.*/
          E_MI_IVE_THRESH_MODE_ORI_MID_ORI = 0x7, /*srcVal <= lowThr, dstVal = srcVal; lowThr < srcVal <= highThr, dstVal = midVal; srcVal > highThr, dstVal = srcVal.*/
          E_MI_IVE_THRESH_MODE_BUTT
      }MI_IVE_ThreshMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_THRESH_MODE_BINARY srcVal ≤ lowThr, dstVal = minVal; srcVal > lowThr, dstVal = maxVal。
      E_MI_IVE_THRESH_MODE_TRUNC srcVal ≤ lowThr, dstVal = srcVal;srcVal > lowThr, dstVal = maxVal。
      E_MI_IVE_THRESH_MODE_TO_MINVAL srcVal ≤lowThr, dstVal = minVal; srcVal > lowThr, dstVal = srcVal。
      E_MI_IVE_THRESH_MODE_MIN_MID_MAX srcVal ≤ lowThr, dstVal = minVal;lowThr \< srcVal ≤ highThr, dstVal = midVal; srcVal > highThr, dstVal = maxVal。
      E_MI_IVE_THRESH_MODE_ORI_MID_MAX srcVal ≤lowThr, dstVal = srcVal; lowThr \< srcVal ≤ highThr, dstVal = midVal; srcVal > highThr, dstVal = maxVal。
      E_MI_IVE_THRESH_MODE_MIN_MID_ORI srcVal ≤lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr,dstVal = midVal; srcVal > highThr, dstVal = srcVal。
      E_MI_IVE_THRESH_MODE_MIN_ORI_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤ highThr,dstVal = srcVal; srcVal > highThr, dstVal = maxVal。
      E_MI_IVE_THRESH_MODE_ORI_MID_ORI srcVal≤ lowThr, dstVal = srcVal;lowThr \< srcVal ≤ highThr, dstVal = midVal; srcVal > highThr, dstVal = srcVal。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_ThreshCtrl_t


    2.35. MI_IVE_ThreshCtrl_t

    • 说明

      定义图像阈值化控制信息。

    • 定义

      typedef struct MI_IVE_ThreshCtrl_s
      {
          MI_IVE_ThreshMode_e eMode;
          MI_U8 u8LowThr; /*user-defined threshold, 0<=u8LowThr<=255 */
          MI_U8 u8HighThr; /*user-defined threshold, if eMode<E_MI_IVE_THRESH_MODE_MIN_MID_MAX, u8HighThr is not used, else 0<=u8LowThr<=u8HighThr<=255;*/
          MI_U8 u8MinVal; /*Minimum value when tri-level thresholding*/
          MI_U8 u8MidVal; /*Middle value when tri-level thresholding, if eMode<2, u32MidVal is not used; */
          MI_U8 u8MaxVal; /*Maxmum value when tri-level thresholding*/
      }MI_IVE_ThreshCtrl_t;
      
    • 成员

      成员名称 描述
      eMode 阈值化运算模式。
      u8LowThresh 低阈值。 取值范围:[0,255]。
      u8HighThresh 高阈值。 0≤u8LowThresh≤u8HighThresh≤255。
      u8MinVal 最小值。 取值范围:[0,255]。
      u8MidVal 中间值。 取值范围:[0,255]。
      u8MaxVal 最大值。 取值范围:[0,255]。
    • 相关数据类型及接口

      MI_IVE_ThreshMode_e


    2.36. MI_IVE_SubMode_e

    • 说明

      定义两图像相减输出格式。

    • 定义

      typedef enum
      {
          E_MI_IVE_SUB_MODE_ABS   = 0x0, /*Absolute value of the difference*/
          E_MI_IVE_SUB_MODE_SHIFT = 0x1, /*The output result is obtained by shifting the result one digit right to reserve the signed bit.*/
          E_MI_IVE_SUB_MODE_BUTT
      }MI_IVE_SubMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_SUB_MODE_ABS 取差的绝对值。
      E_MI_IVE_SUB_MODE_SHIFT 将结果右移一位输出,保留符号位。
    • 相关数据类型及接口

      MI_IVE_SubCtrl_t


    2.37. MI_IVE_SubCtrl_t

    • 说明

      定义两图像相减控制参数。

    • 定义

      typedef struct MI_IVE_SubCtrl_s
      {
          MI_IVE_SubMode_e eMode;
      }MI_IVE_SubCtrl_t;
      
    • 成员

      成员名称 描述
      eMode 两图像相减模式
    • 相关数据类型及接口

      MI_IVE_SubMode_e


    2.38. MI_IVE_IntegOutCtrl_e

    • 说明

      定义积分图输出控制参数。

    • 定义

      typedef enum
      {
          E_MI_IVE_INTEG_OUT_CTRL_COMBINE = 0x0,
          E_MI_IVE_INTEG_OUT_CTRL_SUM     = 0x1,
          E_MI_IVE_INTEG_OUT_CTRL_SQSUM   = 0x2,
          E_MI_IVE_INTEG_OUT_CTRL_BUTT
      }MI_IVE_IntegOutCtrl_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_INTEG_OUT_CTRL_COMBINE 和、平方和积分图组合输出。
      E_MI_IVE_INTEG_OUT_CTRL_SUM 仅和积分图输出。
      E_MI_IVE_INTEG_OUT_CTRL_SQSUM 仅平方和积分图输出。
    • 相关数据类型及接口

      MI_IVE_IntegCtrl_t


    2.39. MI_IVE_IntegCtrl_t

    • 说明

      定义积分图计算控制参数。

    • 定义

      typedef struct MI_IVE_IntegCtrl_s
      {
          MI_IVE_IntegOutCtrl_e eOutCtrl;
      }MI_IVE_IntegCtrl_t;
      
    • 成员

      成员名称 描述
      eOutCtrl 积分图输出控制参数
    • 相关数据类型及接口

      MI_IVE_IntegOutCtrl_e


    2.40. MI_IVE_ThreshS16Mode_e

    • 说明

      定义 16bit 有符号图像的阈值化模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_MID_MAX = 0x0,
          E_MI_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_ORI_MAX = 0x1,
          E_MI_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_MID_MAX = 0x2,
          E_MI_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_ORI_MAX = 0x3,
          E_MI_IVE_THRESH_S16_MODE_BUTT
      }MI_IVE_ThreshS16Mode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_THRESH_S16_MODE_S16_ TO_S8_MIN_MID_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr, dstVal = idVal; srcVal > highThr, dstVal = maxVal;
      E_MI_IVE_THRESH_S16_MODE_S16_ TO_S8_MIN_ORI_MAX srcVal ≤ lowThr, dstVal = minVal;lowThr \< srcVal ≤highThr, dstVal = rcVal; srcVal > highThr, dstVal = maxVal;
      E_MI_IVE_THRESH_S16_MODE_S16_ TO_U8_MIN_MID_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr, dstVal = idVal; srcVal > highThr, dstVal = maxVal;
      E_MI_IVE_THRESH_S16_MODE_S16_ TO_U8_MIN_ORI_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr, dstVal = rcVal; srcVal > highThr, dstVal = maxVal;
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_ThreshS16Ctrl_t


    2.41. MI_IVE_ThreshS16Ctrl_t

    • 说明

      定义 16bit 有符号图像的阈值化控制参数。

    • 定义

      typedef struct MI_IVE_ThreshS16Ctrl_s
      {
          MI_IVE_ThreshS16Mode_e eMode;
          MI_S16 s16LowThr; /*user-defined threshold*/
          MI_S16 s16HighThr; /*user-defined threshold*/
          MI_IVE_Length8bit_u un8MinVal; /*Minimum value when tri-level thresholding*/
          MI_IVE_Length8bit_u un8MidVal; /*Middle value when tri-level thresholding*/
          MI_IVE_Length8bit_u un8MaxVal; /*Maxmum value when tri-level thresholding*/
      }MI_IVE_ThreshS16Ctrl_t;
      
    • 成员

      成员名称 描述
      eMode 阈值化运算模式。
      s16LowThr 低阈值。
      s16HighThr 高阈值。
      un8MinVal 最小值。
      un8MidVal 中间值。
      un8MaxVal 最大值。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_ThreshS16Mode_e


    2.42. MI_IVE_ThreshU16Mode_e

    • 说明

      定义 16bti 无符号图像的阈值化模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_MID_MAX = 0x0,
          E_MI_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_ORI_MAX = 0x1,
          E_MI_IVE_THRESH_U16_MODE_BUTT
      }MI_IVE_ThreshU16Mode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_THRESH_U16_MODE_U16_ TO_U8_MIN_MID_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr, dstVal = midVal; srcVal > highThr, dstVal = maxVal;
      E_MI_IVE_THRESH_U16_MODE_U16_ TO_U8_MIN_ORI_MAX srcVal ≤ lowThr, dstVal = minVal; lowThr \< srcVal ≤highThr, dstVal = srcVal; srcVal > highThr, dstVal = maxVal;
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_ThreshU16Ctrl_t


    2.43. MI_IVE_ThreshU16Ctrl_t

    • 说明

      定义 16bit 无符号图像的阈值化控制参数。

    • 定义

      typedef struct MI_IVE_ThreshU16Ctrl_s
      {
          MI_IVE_ThreshU16Mode_e eMode;
          MI_U16 u16LowThr;
          MI_U16 u16HighThr;
          MI_U8 u8MinVal;
          MI_U8 u8MidVal;
          MI_U8 u8MaxVal;
      }MI_IVE_ThreshU16Ctrl_t;
      
    • 成员

      成员名称 描述
      eMode 阈值化运算模式。
      u16LowThr 低阈值。
      u16HighThr 高阈值。
      u8MinVal 最小值。 取值范围:[0,255]。
      u8MidVal 中间值。 取值范围:[0,255]。
      u8MaxVal 最大值。 取值范围:[0,255]。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_ThreshU16Mode_e


    2.44. MI_IVE_16BitTo8BitMode_e

    • 说明

      定义 16bit 图像数据到 8bit 图像数据的的转化模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_S8      = 0x0,
          E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_ABS  = 0x1,
          E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_BIAS = 0x2,
          E_MI_IVE_16BIT_TO_8BIT_MODE_U16_TO_U8      = 0x3,
          E_MI_IVE_16BIT_TO_8BIT_MODE_BUTT
      }MI_IVE_16BitTo8BitMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_S8 S16 数据到 S8 数据的线性变换。
      E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_ABS S16 数据线性变换到 S8 数据后取绝对值得到 S8 数据。
      E_MI_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_BIAS S16 数据线性变换到 S8 数据且平移后截断到 U8 数据。
      E_MI_IVE_16BIT_TO_8BIT_MODE_U16_TO_U8 S16 数据线性变换到 U8 数据。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_16bitTo8BitCtrl_t


    2.45. MI_IVE_16bitTo8BitCtrl_t

    • 说明

      定义 16bit 图像数据到 8bit 图像数据的转化控制参数。

    • 定义

      typedef struct MI_IVE_16bitTo8BitCtrl_s
      {
          MI_IVE_16BitTo8BitMode_e eMode;
          MI_U16 u16Denominator;
          MI_U8 u8Numerator;
          MI_S8 s8Bias;
      }MI_IVE_16bitTo8BitCtrl_t;
      
    • 成员

      成员名称 描述
      eMode 16bit 数据到 8bit 数据的转换模式。
      u16Denominator 线性变换中的分母。取值范围:[max
      u8Numerator 线性变换中的分子。取值范围:[0,255]。
      s8Bias 线性变换中的平移项。取值范围:[-128,127]。
    • 注意事项

      • 计算公式请参见 MI_IVE_ThreshU16中的注意

      • u8Numerator ≤u16Denominator,且 u16Denominator≠0;

    • 相关数据类型及接口

      MI_IVE_16BitTo8BitMode_e


    2.46. MI_IVE_OrdStatFilterMode_e

    • 说明

      定义顺序统计量滤波模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_ORD_STAT_FILTER_MODE_MEDIAN = 0x0,
          E_MI_IVE_ORD_STAT_FILTER_MODE_MAX    = 0x1,
          E_MI_IVE_ORD_STAT_FILTER_MODE_MIN    = 0x2,
          E_MI_IVE_ORD_STAT_FILTER_MODE_BUTT
      }MI_IVE_OrdStatFilterMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_ORD_STAT_FILTER_MODE_MEDIAN 中值滤波。
      E_MI_IVE_ORD_STAT_FILTER_MODE_MAX 最大值滤波,等价于灰度图的膨胀。
      E_MI_IVE_ORD_STAT_FILTER_MODE_MIN 最小值滤波,等价于灰度图的腐蚀。
    • 相关数据类型及接口

      MI_IVE_OrdStatFilter_t


    2.47. MI_IVE_OrdStatFilter_t

    • 说明

      定义顺序统计量滤波控制参数。

    • 定义

      typedef struct MI_IVE_OrdStatFilter_s
      {
          MI_IVE_OrdStatFilterMode_e eMode;
      }MI_IVE_OrdStatFilter_t;
      
    • 成员

      成员名称 描述
      eMode 顺序统计量滤波模式
    • 相关数据类型及接口

      MI_IVE_OrdStatFilterMode_e


    2.48. MI_IVE_MapLutMem_t

    • 说明

      定义 Map 算子的查找表内存信息。

    • 定义

      typedef struct MI_IVE_MapLutMem_s
      {
          MI_U8 au8Map[MI_IVE_MAP_NUM];
      }MI_IVE_MapLutMem_t;
      
    • 成员

      成员名称 描述
      au8Map[MI_IVE_MAP_NUM] Map 查找表数组。

    2.49. MI_IVE_EqualizeHistCtrlMem_t

    • 说明

      定义直方图均衡化辅助内存。

    • 定义

      typedef struct MI_IVE_EqualizeHistCtrlMem_s
      {
          MI_U32 au32Hist[MI_IVE_HIST_NUM];
          MI_U8 au8Map[MI_IVE_MAP_NUM];
      }MI_IVE_EqualizeHistCtrlMem_t;
      
    • 成员

      成员名称 描述
      au32Hist[MI_IVE_HIST_NUM] 直方图统计的输出。
      au8Map[MI_IVE_MAP_NUM] 根据统计直方图计算得到的 map 查找表。
    • 相关数据类型及接口

      MI_IVE_EqualizeHistCtrl_t


    2.50. MI_IVE_EqualizeHistCtrl_t

    • 说明

      定义直方图均衡化控制参数。

    • 定义

      typedef struct MI_IVE_EqualizeHistCtrl_s
      {
          MI_IVE_MemInfo_t stMem;
      }MI_IVE_EqualizeHistCtrl_t;
      
    • 成员

      成员名称 描述
      stMem 需开辟 sizeof(MI_IVE_EqualizeHistCtrlMem_t)字节大小的内存。
    • 相关数据类型及接口

      MI_IVE_EqualizeHistCtrlMem_t


    2.51. MI_IVE_AddMode_e

    • 说明

      定义 add 计算模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_ADD_MODE_ROUNDING = 0x0,
          E_MI_IVE_ADD_MOD_CLIPPING  = 0x1,
          E_MI_IVE_ADD_MODE_MAX
      }MI_IVE_AddMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_ADD_MODE_ROUNDING 四舍五入模式
      E_MI_IVE_ADD_MOD_CLIPPING 无条件舍弃模式
    • 相关数据类型及接口

      MI_IVE_AddCtrl_t


    2.52. MI_IVE_AddCtrl_t

    • 说明

      定义两图像的加权加控制参数。

    • 定义

      typedef struct MI_IVE_AddCtrl_s
      {
          MI_IVE_AddMode_e eMode;
          MI_U0Q16 u0q16X; /*x of "xA+yB"*/
          MI_U0Q16 u0q16Y; /*y of "xA+yB"*/
      }MI_IVE_AddCtrl_t;
      
    • 成员

      成员名称 描述
      eMode 计算模式
      u0q16X 加权加“xA+yB”中的权重“x”。取值范围:[1, 65535]。
      u0q16Y 加权加“xA+yB”中的权重“y”。取值范围:
    • 相关数据类型及接口

      MI_IVE_AddMode_e


    2.53. MI_IVE_NccDstMem_t

    • 说明

      定义 NCC 的输出内存信息。

    • 定义

      typedef struct MI_IVE_NccDstMem_s
      {
          MI_U64 u64Numerator;
          MI_U64 u64QuadSum1;
          MI_U64 u64QuadSum2;
      }MI_IVE_NccDstMem_t;
      
    • 成员

      成员名称 描述
      u64Numerator NCC 计算公式的分子-- 公式1
      u64QuadSum1 NCC 计算公式的分母--根号内部分:公式2
      u64QuadSum2 NCC 计算公式的分母--根号内部分:公式3

      公式1:

      \sum^w_{i=1}\sum^h_{j=1}(I_{src1}(i,j)*I_{src2}(i,j))

      公式2:

      \sum^w_{i=1}\sum^h_{j=1}(I^2_{src1}(i,j))

      公式3:

      \sum^w_{i=1}\sum^h_{j=1}(I^2_{src2}(i,j))
    • 注意事项


    2.54. MI_IVE_Region_t

    • 说明

      定义连通区域信息。

    • 定义

      typedef struct MI_IVE_Region_s
      {
          MI_U32 u32Area; /*Represented by the pixel number*/
          MI_U16 u16Left; /*Circumscribed rectangle left border*/
          MI_U16 u16Right; /*Circumscribed rectangle right border*/
          MI_U16 u16Top; /*Circumscribed rectangle top border*/
          MI_U16 u16Bottom; /*Circumscribed rectangle bottom border*/
      }MI_IVE_Region_t;
      
    • 成员

      成员名称 描述
      u32Area 连通区域面积,以连通区域像素数目表示。
      u16Left 连通区域外接矩形的最左边坐标。
      u16Right 连通区域外接矩形的最右边坐标。
      u16Top 连通区域外接矩形的最上面坐标。
      u16Bottom 连通区域外接矩形的最下面坐标。
    • 相关数据类型及接口

      MI_IVE_CcBlob_t


    2.55. MI_IVE_CcBlob_t

    • 说明

      定义连通区域标记的输出信息。

    • 定义

      typedef struct MI_IVE_CcBlob_s
      {
          MI_U16 u16CurAreaThr; /*Threshold of the result regions' area*/
          MI_S8 s8LabelStatus; /*-1: Labeled failed ; 0: Labeled successfully*/
          MI_U8 u8RegionNum; /*Number of valid region, non-continuous stored*/
          MI_IVE_Region_t astRegion[MI_IVE_MAX_REGION_NUM];
      }MI_IVE_CcBlob_t;
      
    • 成员

      成员名称 描述
      u16CurAreaThr 在进行连通区域删除合并时,astRegion中面积小于该阈值的区域都会被删除并合并。
      s8LabelStatus 连通区域标记是否成功。
      u8RegionNum 有效连通区域个数。
      astRegion[MI_IVE_MAX_REGION_NUM] 连通区域信息

      芯片/平台 u16CurAreaThr s8LabelStatus 标号1~254的连通域信息 合并删除的连通区域的外接矩形信息
      Souffle 0 -1:标记失败,出现溢出;
      0:标记成功
      astRegion[1]~astRegion[254] astRegion[0]
      Others 根据删除过程确定 -1:标记失败(u8RegionNum == 0)或标记成功(经过删除过程,u8RegionNum != 0);
      0:标记成功
      astRegion[0]~astRegion[253] astRegion[254]

    • 注意事项

      • ccBlob→u8RegionNum表示有效的连通区域数目,最多可标记254个有效的联通区域。

      • 当连通区域数目大于254时会进行连通区域删除,最后输出面积阈值u16CurAreaThr,删除过程可参考MI_IVE_CclCtrl_t说明。

    • 相关数据类型及接口

      MI_IVE_Region_t

      MI_IVE_CclCtrl_t


    2.56. MI_IVE_CclMode_e

    • 说明

      定义连通区域模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_CCL_MODE_8C = 0x0, /*8-connectivity*/
          E_MI_IVE_CCL_MODE_4C = 0x1, /*4-connectivity*/
          E_MI_IVE_CCL_MODE_BUTT
      }MI_IVE_CclMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_CCL_MODE_4C 4-连通
      E_MI_IVE_CCL_MODE_8C 8-连通
    • 注意事项

      • 仅Souffle系列支持该枚举,其他系列芯片默认使用8连通模式。

    2.57. MI_IVE_CclCtrl_t

    • 说明

      定义连通区域标记控制参数。

    • 定义

      typedef struct MI_IVE_CclCtrl_s
      {
          MI_U16 u16InitAreaThr;
          MI_U16 u16Step;
          MI_IVE_CclMode_e eCclMode;
      }MI_IVE_CclCtrl_t;
      
    • 成员

      成员名称 描述
      u16InitAreaThr 初始面积阈值。
      取值范围:[0, 65535]。参考取值:4。
      u16Step 面积阈值增长步长。
      取值范围:[1,65535]。参考取值:2。
      eCclMode 连通区域标记模式
      仅 Souffle 系列支持
    • 注意事项

      • 当连通区域数目大于254时,会用pstCclCtrl→u16InitAreaThr删除面积小的连通区域;若删除后连通区域数目仍大于254,将会以pstCclCtrl→u16Step为步长,增大删除连通区域的面积阈值并存储到u16CurAreaThr,直到删除后连通区域数目小于254或面积阈值达到最大值65535。
    • 相关数据类型及接口

      MI_IVE_CcBlob_t


    2.58. MI_IVE_GmmCtrl_t

    • 说明

      定义 GMM 背景建模的控制参数。

    • 定义

      typedef struct MI_IVE_GmmCtrl_s
      {
          MI_U22Q10 u22q10NoiseVar; /*Initial noise Variance*/
          MI_U22Q10 u22q10MaxVar; /*Max Variance*/
          MI_U22Q10 u22q10MinVar; /*Min Variance*/
          MI_U0Q16 u0q16LearnRate; /*Learning rate*/
          MI_U0Q16 u0q16BgRatio; /*Background ratio*/
          MI_U8Q8 u8q8VarThr; /*Variance Threshold*/
          MI_U0Q16 u0q16InitWeight; /*Initial Weight*/
          MI_U8 u8ModelNum; /*Model number: 3 or 5*/
      }MI_IVE_GmmCtrl_t;
      
    • 成员

      成员名称 描述
      u22q10NoiseVar 初始噪声方差。
      取值范围:[0x1, 0xFFFFFF]。
      对灰度的 GMM,对应 OpenCV MOG 中灰度模型中的noiseSigma * noiseSigma。
      参考取值:15*15*(1\<\<10)。 对 RGB 的 GMM,对应 OpenCV MOG 中 RGB 模型中的 3 * noiseSigma * noiseSigma。
      参考取值:3*15*15*(1\<\<10)。
      注:Souffle系列无需设定该参数
      u22q10MaxVar 模型方差的最大值。
      取值范围;[0x1, 0xFFFFFF]。
      对应 OpenCV MOG2 中 fVarMax。
      参考取值:3*4000\<\<10 (RGB),2000\<\<10(灰度)。
      u22q10MinVar 模型方差的最小值。
      取值范围:[0x1, 22q10MaxVar]。
      对应 OpenCV MOG2 中 fVarMin。
      参考取值:600\<\<10 (RGB),200\<\<10 (灰度)。
      u0q16LearnRate 学习速率。
      取值范围:[1, 65535]。
      对应 OpenCV MOG2 中 learningRate。
      参考取值: if (frameNum\<500) (1/frameNum)((1\<\<16)-1); else ((1/500)((1\<\<16)-1)。
      u0q16BgRatio 背景比例阈值。
      取值范围:[1, 65535]。
      对应 OpenCV MOG 中 backgroundRatio。
      参考取值:0.8*((1\<\<16)-1)。
      u8q8VarThr 方差阈值。
      取值范围:[1, 65535]。
      对应 OpenCV MOG 中 varThreshold,用于决定一个像素是否命中当前模型。
      参考取值:6.25*(1\<\<8)。
      u0q16InitWeight 初始权重。
      取值范围:[1, 65535]。
      对应 OpenCV MOG 中的 defaultInitialWeight。
      参考取值:0.05*((1\<\<16)-1)。
      注:Souffle系列无需设定该参数
      u8ModelNum 模型个数。
      取值范围:

    2.59. MI_IVE_CannyStackSize_t

    • 说明

      定义 Canny 边缘前半部分计算时强边缘点栈大小结构体。

    • 定义

      typedef struct MI_IVE_CannyStackSize_s
      {
          MI_U32 u32StackSize; /*Stack size for output*/
          MI_U8 u8Reserved[MI_IVE_CANNY_STACK_RESERVED_SIZE]; /*For 16 byte align*/
      }MI_IVE_CannyStackSize_t;
      
    • 成员

      成员名称 描述
      u32StackSize 栈大小(强边缘点的个数)。
      u8Reserved[MI_IVE_CANNY_STACK_RESERVED_SIZE] 保留位。

    2.60. MI_IVE_CannyHysEdgeCtrl_t

    • 说明

      定义 Canny 边缘前半部分计算任务的控制参数。

    • 定义

      typedef struct MI_IVE_CannyHysEdgeCtrl_s
      {
          MI_IVE_MemInfo_t stMem;
          MI_U16 u16LowThr;
          MI_U16 u16HighThr;
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5];
      } MI_IVE_CannyHysEdgeCtrl_t;
      
    • 成员

      成员名称 描述
      stMem 辅助内存。内存配置大小说明见MI_IVE_CannyHysEdge注意
      u16LowThr 低阈值。 取值范围:[0,255]。
      u16HighThr 高阈值。 取值范围:[u16LowThr,255]。
      as8Mask[MI_IVE_MASK_SIZE_5X5] 用于计算梯度的参数模板。

    2.61. MI_IVE_LbpCmpMode_e

    • 说明

      定义 LBP 计算的比较模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_LBP_CMP_MODE_NORMAL  = 0x0, /* P(x)-P(center)>=
          un8BitThr.s8Val, s(x)=1; else s(x)=0; */
          E_MI_IVE_LBP_CMP_MODE_ABS     = 0x1, /*
          abs(P(x)-P(center))>=un8BitThr.u8Val, s(x)=1; else s(x)=0; */
          E_MI_IVE_LBP_CMP_MODE_ABS_MUL = 0x2,
          E_MI_IVE_LBP_CMP_MODE_MAX
      }MI_IVE_LbpCmpMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_LBP_CMP_MODE_NORMAL LBP 简单比较模式。
      E_MI_IVE_LBP_CMP_MODE_ABS LBP 绝对值比较模式。
      E_MI_IVE_LBP_CMP_MODE_MAX LBP 绝对值乘法比较模式
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_LbpCtrrl_t


    2.62. MI_IVE_LbpChalMode_e

    • 说明

      定义 LBP 输入信道模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_LBP_CHAL_MODE_U8C1 = 0x0,
          E_MI_IVE_LBP_CHAL_MODE_U8C2 = 0x1,
          E_MI_IVE_LBP_CHAL_MODE_MAX
      } MI_IVE_LbpChalMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_LBP_CHAL_MODE_U8C1 只有单一输入图像模式。
      E_MI_IVE_LBP_CHAL_MODE_U8C2 两个输入图像模式。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_LbpCtrrl_t


    2.63. MI_IVE_LbpCtrrl_t

    • 说明

      定义 LBP 纹理计算控制参数。

    • 定义

      typedef struct MI_IVE_LbpCtrrl_s
      {
          MI_IVE_LbpCmpMode_e eMode;
          MI_IVE_LbpChalMode_e chMode;
          MI_IVE_Length8bit_u un8BitThr;
      }MI_IVE_LbpCtrrl_t;
      
    • 成员

      成员名称 描述
      eMode LBP 比较模式。
      un8BitThr LBP 比较阈值。
      E_MI_IVE_LBP_CMP_MODE_NORMAL 下的取值范围:[-128,127]。
      E_MI_IVE_LBP_CMP_MODE_ABS 下的取值范围:[0,255]。
    • 注意事项

    • 相关数据类型及接口

      MI_IVE_LbpCmpMode_e

      MI_IVE_LbpChalMode_e

      MI_IVE_Length8bit_u


    2.64. MI_IVE_NormGradOutCtrl_e

    • 说明

      定义归一化梯度信息计算任务输出控制枚举类型。

    • 定义

      typedef enum
      {
          E_MI_IVE_NORM_GRAD_OUT_CTRL_HOR_AND_VER = 0x0,
          E_MI_IVE_NORM_GRAD_OUT_CTRL_HOR         = 0x1,
          E_MI_IVE_NORM_GRAD_OUT_CTRL_VER         = 0x2,
          E_MI_IVE_NORM_GRAD_OUT_CTRL_COMBINE     = 0x3,
          E_MI_IVE_NORM_GRAD_OUT_CTRL_BUTT
      }MI_IVE_NormGradOutCtrl_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_NORM_GRAD_OUT_CTRL_ HOR_AND_VER 同时输出梯度信息的 H、V 分量图(H、V 定义见 MI_ IVE_NormGrad 的参数)。
      E_MI_IVE_NORM_GRAD_OUT_CTRL_ HOR 仅输出梯度信息的 H 分量图。
      E_MI_IVE_NORM_GRAD_OUT_CTRL_ VER 仅输出梯度信息的 V 分量图。
      E_MI_IVE_NORM_GRAD_OUT_CTRL_ COMBINE 输出梯度信息以 package 存储的HV 图。
    • 相关数据类型及接口

      MI_IVE_NormGradCtrl_t


    2.65. MI_IVE_NormGradCtrl_t

    • 说明

      定义归一化梯度信息计算控制参数。

    • 定义

      typedef struct MI_IVE_NormGradCtrl_s
      {
          MI_IVE_NormGradOutCtrl_e eOutCtrl;
          MI_S8 as8Mask[MI_IVE_MASK_SIZE_5X5];
          MI_U8 u8Norm;
      }MI_IVE_NormGradCtrl_t;
      
    • 成员

      成员名称 描述
      eOutCtrl 梯度信息输出控制模式。
      as8Mask[MI_IVE_MASK_SIZE_5X5] 计算梯度需要的模板。
      u8Norm 归一化参数。取值范围:[1,13]。
    • 相关数据类型及接口

      MI_IVE_NormGradOutCtrl_e


    2.66. MI_IVE_MvS9Q7_t

    • 说明

      定义 LK 光流位移结构体。

    • 说明

      typedef struct MI_IVE_MvS9Q7_s
      {
          MI_S32 s32Status; /*Result of tracking: 0-success; -1-failure*/
          MI_S9Q7 s9q7Dx; /*X-direction component of the movement*/
          MI_S9Q7 s9q7Dy; /*Y-direction component of the movement*/
      }MI_IVE_MvS9Q7_t;
      
    • 成员

      成员名称 描述
      s32Status 特征点跟踪的状态。
      0:成功;
      1:失败。
      s9q7Dx 特征点位移的 x 分量。
      s9q7Dy 特征点位移的 y 分量。

    2.67. MI_IVE_LkOpticalFlowCtrl_t

    • 说明

      定义 LK 光流计算控制参数。

    • 定义

      typedef struct MI_IVE_LkOpticalFlowCtrl_s
      {
          MI_U16 u16CornerNum; /*Number of the feature points,<200*/
          MI_U0Q8 u0q8MinEigThr; /*Minimum eigenvalue threshold*/
          MI_U8 u8IterCount; /*Maximum iteration times*/
          MI_U0Q8 u0q8Epsilon; /*Threshold of iteration for dx^2 + dy^2 < u0q8Epsilon */
      }MI_IVE_LkOpticalFlowCtrl_t;
      
    • 成员

      成员名称 描述
      u16CornerNum 输入的角点/特征点数目。取值范围:[1,200]。
      u0q8MinEigThr 最小特征值阈值。取值范围:[1,255]。
      u8IterCount 最大迭代次数。 取值范围:[1,20]。
      u0q8Epsilon 迭代收敛条件:dx^2 + dy^2 \< u0q8Epsilon。取值范围:[1,255]。参考取值:2。

    2.68. MI_IVE_SadMode_e

    • 说明

      定义 SAD 计算模式。

    • 定义

      typedef enum
      {
      E_MI_IVE_SAD_MODE_MB_4X4   = 0x0, /*4x4*/
      E_MI_IVE_SAD_MODE_MB_8X8   = 0x1, /*8x8*/
      E_MI_IVE_SAD_MODE_MB_16X16 = 0x2, /*16x16*/
      E_MI_IVE_SAD_MODE_BUTT
      }MI_IVE_SadMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_SAD_MODE_MB_4X4 按 4x4 像素块计算 SAD。
      E_MI_IVE_SAD_MODE_MB_8X8 按 8x8 像素块计算 SAD。
      E_MI_IVE_SAD_MODE_MB_16X16 按 16x16 像素块计算 SAD。
    • 相关数据类型及接口

      MI_IVE_SadCtrl_t


    2.69. MI_IVE_SadOutCtrl_e

    • 说明

      定义 SAD 输出控制模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_SAD_OUT_CTRL_16BIT_BOTH = 0x0, /*Output 16 bit sad and thresh*/
          E_MI_IVE_SAD_OUT_CTRL_8BIT_BOTH  = 0x1, /*Output 8 bit sad and thresh*/
          E_MI_IVE_SAD_OUT_CTRL_16BIT_SAD  = 0x2, /*Output 16 bit sad*/
          E_MI_IVE_SAD_OUT_CTRL_8BIT_SAD   = 0x3, /*Output 8 bit sad*/
          E_MI_IVE_SAD_OUT_CTRL_THRESH     = 0x4, /*Output thresh,16 bits sad */
          E_MI_IVE_SAD_OUT_CTRL_BUTT
      }MI_IVE_SadOutCtrl_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_SAD_OUT_CTRL_16BIT_BOTH 16 bit SAD 图和阈值化图输出模式。
      E_MI_IVE_SAD_OUT_CTRL_8BIT_BOTH 8 bit SAD 图和阈值化图输出模式。
      E_MI_IVE_SAD_OUT_CTRL_16BIT_SAD 16 bit SAD 图输出模式。
      E_MI_IVE_SAD_OUT_CTRL_8BIT_SAD 8 bit SAD 图输出模式。
      E_MI_IVE_SAD_OUT_CTRL_THRESH 阈值化图输出模式。
    • 相关数据类型及接口

      MI_IVE_SadCtrl_t


    2.70. MI_IVE_SadCtrl_t

    • 说明

      定义 SAD 控制参数。

    • 定义

      typedef struct MI_IVE_SadCtrl_s
      {
          MI_IVE_SadMode_e eMode;
          MI_IVE_SadOutCtrl_e eOutCtrl;
          MI_U16 u16Thr; /*srcVal <= u16Thr, dstVal = minVal;srcVal > u16Thr, dstVal = maxVal.*/
          MI_U8 u8MinVal; /*Min value*/
          MI_U8 u8MaxVal; /*Max value*/
      }MI_IVE_SadCtrl_t;
      
    • 成员

      成员名称 描述
      eMode SAD 计算模式。
      eOutCtrl SAD 输出控制模式。
      u16Thr 对计算的 SAD 图进行阈值化的阈值。
      u8MinVal 阈值化不超过 u16Thr 时的取值。
      u8MaxVal 阈值化超过 u16Thr 时的取值。
    • 相关数据类型及接口

      MI_IVE_SadMode_e

      MI_IVE_SadOutCtrl_e


    2.71. MI_IVE_BernsenCtrl_t

    • 说明

      定义 Bernsen 控制参数。

    • 定义

      typedef struct MVE_IVE_BernsenCtrl_s
      {
          MI_IVE_BernsenMode_e enMode;
          MI_U8 u8WinSize;
          MI_U8 u8MaxVal;
      } MVE_IVE_BernsenCtrl_t;
      
    • 成员

      成员名称 描述
      enMode Bernsen 阀值模式。
      u8WinSize 窗口大小。范围 :
      u8MaxVal 模式 MVE_BERNSEN_MODE_THRESH 的门坎值。范围 : [0, 255]
    • 相关数据类型及接口

      MI_IVE_BernsenMode_e


    2.72. MI_IVE_BernsenMode_e

    • 说明

      定义 Bernsen 阀值模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_BERNSEN_MODE_NORMAL = 0x0,
          E_MI_IVE_BERNSEN_MODE_THRESH = 0x1,
          E_MI_IVE_BERNSEN_MODE_MAX
      } MVE_IVE_BernsenMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_BERNSEN_MODE_NORMA 简单 Bernsen 阀值模式
      E_MI_IVE_BERNSEN_MODE_THRESH 基于全局阀值和本地 Bernsen 阀值的阀值模式
      E_MI_IVE_ERNSEN_MODE_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_BernsenCtrl_t


    2.73. MI_IVE_LineFilterHorCtrl_t

    • 说明

      定义 LineFilterHor 控制参数。

    • 定义

      typedef struct MVE_IVE_LineFilterHorCtrl_s
      {
          MI_U8 u8GapMinLen;
          MI_U8 u8DensityThr;
          MI_U8 u8HorThr;
      } MVE_IVE_LineFilterHorCtrl_t;
      
    • 成员

      成员名称 描述
      u8GapMinLen 最小线段长度,详情请看 MI_IVE_LineFilterHor中的 thr1 范围 : [1, 20]
      u8DensityThr 密度阀值,详情请看 MI_IVE_LineFilterHor中的 thr2 范围 : [1, 50]
      u8HorThr 水平线段长度阀值,详情请看 MI_IVE_LineFilterHor 中的 thr3 范围 : [1, 50]

    2.74. MI_IVE_LineFilterVerCtrl_t

    • 说明

      定义 LineFilterVer 控制参数。

    • 定义

      typedef struct MVE_IVE_LineFilterVerCtrl_s
      {
          MI_U8 u8VerThr;
      } MVE_IVE_LineFilterVerCtrl_t _t;
      
    • 成员

      成员名称 描述
      u8VerThr 垂直线段长度阀值,详情请看 MI_IVE_LineFilterVer 中的 thr 范围 : [1, 64]

    2.75. MI_IVE_NoiseRemoveHor_t

    • 说明

      定义 NoiseRemoveHor 控制参数。

    • 定义

      typedef struct MVE_IVE_NoiseRemoveHorCtrl_s
      {
          MI_U8 u8HorThr;
          MI_U8 u8HorThrMax;
      } MVE_IVE_NoiseRemoveHorCtrl_t;
      
    • 成员

      成员名称 描述
      u8HorThr 决定水平噪声的线段长度阀值,详情请看 MI_IVE_NoiseRemoveHor 中的 thr1 范围 : [1, 100]
      u8HorThrMax 决定水平噪声的最大线段长度阀值,详情请看 MI_IVE_NoiseRemoveHor 中的 thr2 范围 : [1, 100]
    • 注意事项

      • u8HorThrMax 一定大于 u8HorThr。

    2.76. MI_IVE_NoiseRemoveVer_t

    • 说明

      定义 NoiseRemoveVer 控制参数。

    • 定义

      typedef struct MVE_IVE_NoiseRemoveVerCtrl_s
      {
          MI_U8 u8VerThr;
          MI_U8 u8VerThrMax;
      } MVE_IVE_NoiseRemoveVerCtrl_t;
      
    • 成员

      成员名称 描述
      u8VerThr 决定垂直噪声的线段长度阀值,详情请看 MI_IVE_NoiseRemoveVer中的 thr1 范围 : [1, 100]
      u8VerThrMax 决定垂直噪声的最大线段长度阀值,详情请看 MI_IVE_NoiseRemoveVer 中的 thr2 范围 : [1, 100]
    • 注意事项

      • u8VerThrMax一定大于 u8VerThr。

    2.77. MI_IVE_AdpThreshCtrl_t

    • 说明

      定义 AdpThresh 控制参数。

    • 定义

      typedef struct MVE_IVE_AdpThreshCtrl_s
      {
          MI_U8 u8RateThr;
          MI_U8 u8HalfMaskx;
          MI_U8 u8HalfMasky;
          MI_U8 s16Offset;
          MI_U8 u8ValueThr;
      } MVE_IVE_AdpThreshCtrl_t;
      
    • 成员

      成员名称 描述
      u8RateThr 阀值比例,详情请看 MI_IVE_AdpThresh 中的 RateThr
      范围: [1, 20]
      u8HalfMaskx 窗口宽的一半,详情请看MI_IVE_AdpThresh中的 w
      范围: [1, 40]
      u8HalfMasky 窗口高的一半,详情请看MI_IVE_AdpThresh 中的 h
      范围: [1, 40]
      s16Offset 偏移量,详情请看 MI_IVE_AdpThresh中的 offset
      范围: [-128, 127]
      u8ValueThr 像素阀值,详情请看 MI_IVE_AdpThresh中的 ValueThr
      范围: [1, 255]

    2.78. MI_IVE_ResizeMode_e

    • 说明

      定义 Resize 输入模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_RESIZE_TYPE_U8C1         = 0x0,
          E_MI_IVE_RESIZE_TYPE_U8C3_PLANAR  = 0x1,
          E_MI_IVE_RESIZE_TYPE_U8C3_PACKAGE = 0x2,
          E_MI_IVE_RESIZE_TYPE_YUV420SP     = 0x3,
          E_MI_IVE_RESIZE_TYPE_MAX
      } MVE_IVE_ResizeMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_RESIZE_TYPE_U8C1 输入图像的每个像素用 1 个 8bit 无符号数据表示单通道图像
      E_MI_IVE_RESIZE_TYPE_U8C3_PLANAR 输入图像的每个像素用 3 个 8bit 无符号数据表示 1 个像素的 3 通道图像,且以 planar 格式存储。
      E_MI_IVE_RESIZE_TYPE_U8C3_PACKAGE 输入图像的每个像素用 3 个 8bit 无符号数据表示且以 package 格式存储 3 通道图像。
      E_MI_IVE_RESIZE_TYPE_YUV420SP 输入为 YUV420 Semiplanar 格式的图像。
      E_MI_IVE_RESIZE_TYPE_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_ResizeCtrl_t


    2.79. MI_IVE_ResizeMethod_e

    • 说明

      定义 Resize 算法模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_RESIZE_METHOD_BILINEAR = 0x0,
          E_MI_IVE_RESIZE_METHOD_AREA     = 0x1,
          E_MI_IVE_RESIZE_METHOD_MAX
      } MI_IVE_ResizeMethod_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_RESIZE_METHOD_BILINEAR 使用Bilinear算法进行Resize,支持缩小和放大。
      E_MI_IVE_RESIZE_METHOD_AREA 使用Area算法进行Resize,仅支持缩小。
      E_MI_IVE_RESIZE_TYPE_MAX 错误模式
    • 注意事项

      • 仅Souffle系列支持该枚举,其他系列芯片默认使用Bilinear模式。
    • 相关数据类型及接口

      MI_IVE_ResizeCtrl_t


    2.80. MI_IVE_ResizeCtrl_t

    • 说明

      定义 Resize 控制参数。

    • 定义

      typedef struct _MVE_IVE_ResizeCtrl_s
      {
          MVE_IVE_ResizeMode_e enMode;
          MI_IVE_ResizeMethod_e eResizeMethod;
      } MVE_IVE_ResizeCtrl_t;
      
    • 成员

      成员名称 描述
      enMode 输入图像模式
      eResizeMethod Resize模式
      仅 Souffle 系列支持
    • 相关数据类型及接口

      MI_IVE_ResizeMode_e

      MI_IVE_ResizeMethod_e


    2.81. MI_IVE_BatCtrl_t

    • 说明

      定义 BAT 控制参数。

    • 定义

      typedef struct _MVE_IVE_BatCtrl_s
      {
          MVE_IVE_BatMode_e enMode;
          MI_U16 _t u16HorTimes;
          MI_U16 _t u16VerTimes;
      } MVE_IVE_BatCtrl_t;
      
    • 成员

      成员名称 描述
      enMode 输入图像模式
      u16HorTimes 水平侦测阀值
      u16VerTimes 垂直侦测阀值
    • 相关数据类型及接口

      MI_IVE_BatMode_e


    2.82. MI_IVE_BatMode_e

    • 说明

      定义 Bat 运算模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_BAT_OUT_CTRL_BOTH = 0x0,
          E_MI_IVE_BAT_OUT_CTRL_HOR  = 0x1,
          E_MI_IVE_BAT_OUT_CTRL_VER  = 0x2,
          E_MI_IVE_BAT_OUT_CTRL_MAX
      } MVE_IVE_BatMode_e
      
    • 成员

      成员名称 描述
      E_MI_IVE_BAT_OUT_CTRL_BOTH 水平和垂直共同模式
      E_MI_IVE_BAT_OUT_CTRL_HOR 水平模式
      E_MI_IVE_BAT_OUT_CTRL_VER 垂直模式
      E_MI_IVE_BAT_OUT_CTRL_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_BatCtrl_t


    2.83. MI_IVE_AccCtrl_t

    • 说明

      定义 Acc 控制参数。

    • 定义

      typedef struct MVE_IVE_AccCtrl_s
      {
          MVE_IVE_AccMode_e enMode;
      } MVE_IVE_AccCtrl_t;
      
    • 成员

      成员名称 描述
      enMode 输入图像模式
    • 相关数据类型及接口

      MI_IVE_AccMode_e


    2.84. MI_IVE_AccMode_e

    • 说明

      定义 Acc 运算模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_ACC_MODE_INCREASE            = 0x0,
          E_MI_IVE_ACC_MODE_DECREASE            = 0x1,
          E_MI_IVE_ACC_MODE_INCREASE_MAP_255TO1 = 0x2,
          E_MI_IVE_ACC_MODE_MAX
      } MVE_IVE_AccMode_e
      
    • 成员

      成员名称 描述
      E_MI_IVE_ACC_MODE_INCREASE 累积增加模式
      E_MI_IVE_ACC_MODE_DECREASE 累积减少模式
      E_MI_IVE_ACC_MODE_INCREASE_MAP_255TO1 累计增加,且 255 转换为 1 模式
      E_MI_IVE_BAT_OUT_CTRL_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_AccCtrl_t


    2.85. MI_IVE_MatrTranfMode_e

    • 说明

      定义 matrix_transform 的输入信道模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_MATRIX_TRANSFORM_TYPE_C1 = 0x0,
          E_MI_IVE_MATRIX_TRANSFORM_TYPE_C2 = 0x1,
          E_MI_IVE_MATRIX_TRANSFORM_TYPE_C3 = 0x2,
          E_MI_IVE_MATRIX_TRANSFORM_TYPE_MAX
      }MVE_IVE_MatrTranfMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_MATRIX_TRANSFORM_TYPE_C1 单一输入图像模式
      E_MI_IVE_MATRIX_TRANSFORM_TYPE_C2 两个输入图像模式
      E_MI_IVE_MATRIX_TRANSFORM_TYPE_C3 三个输入图像模式
      E_MI_IVE_MATRIX_TRANSFORM_TYPE_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_MatrTranfCtrl_t


    2.86. MI_IVE_MatrTranfCtrlMode_e

    • 说明

      定义 matrix_transform 的输入控制模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_MATRIX_TRANSFORM_CTRL_ROUNDING = 0x0,
          E_MI_IVE_MATRIX_TRANSFORM_CTRL_CLIPPING = 0x1,
          E_MI_IVE_MATRIX_TRANSFORM_CTRL_MAX
      }MVE_IVE_MatrTranfCtrlMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_MATRIX_TRANSFORM_CTRL_ROUNDING 四舍五入模式
      E_MI_IVE_MATRIX_TRANSFORM_CTRL_CLIPPING 无条件舍去模式
      E_MI_IVE_MATRIX_TRANSFORM_CTRL_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_MatrTranfCtrl_t


    2.87. MI_IVE_MatrTranfCtrl_t

    • 说明

      定义 matrix_transform 控制参数。

    • 定义

      typedef struct MI_IVE_MatrTranfCtrl_S
      {
          MVE_IVE_MatrTranfMode_e enMode; /*Input channel mode*/
          MVE_IVE_MatrTranfCtrlMode_e CtrlMode;
          MI_S16 s16MatrixArray[9]; //Official
      } MI_IVE_MatrTranfCtrl_t;
      
    • 成员

      成员名称 描述
      enMode 输入信道模式
      CtrlMode 输入控制模式
      s16MatrixArray[9] 矩阵系数
    • 注意事项

      • 若 enMode = E_MI_IVE_MATRIX_TRANSFORM_TYPE_C1, 则只需输入s16MatrixArray[0] 即可

      • 若 enMode = E_MI_IVE_MATRIX_TRANSFORM_TYPE_C2, 则只需输入s16MatrixArray[0] ~ s16MatrixArray[3] 即可

      • 若 enMode = E_MI_IVE_MATRIX_TRANSFORM_TYPE_C23, 则全部矩阵系数都需输入

    • 相关数据类型及接口

      MI_IVE_MatrTranfMode_e

      MI_IVE_MatrTranfCtrlMode_e


    2.88. MI_IVE_SHIFT_DETECT_MODE_e

    • 说明

      定义 shift detector 的追踪检测模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_SHIFT_DETECT_MODE_SINGLE = 0x0,
          E_MI_IVE_SHIFT_DETECT_MODE_MULTI  = 0x1,
          E_MI_IVE_SHIFT_DETECT_MODE_MAX
      }MVE_IVE_MatrTranfMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_SHIFT_DETECT_MODE_SINGLE 单一物件追踪模式
      E_MI_IVE_SHIFT_DETECT_MODE_MULTI 全域物件追踪模式
      E_MI_IVE_SHIFT_DETECT_MODE_MAX 错误模式
    • 相关数据类型及接口

      MI_IVE_SHIFT_DETECT_CTRL_t


    2.89. MI_IVE_SHIFT_DETECT_CTRL_t

    • 说明

      定义 shift detector控制参数。

    • 定义

      typedef struct MVE_IVE_SHIFT_DETECT_CTRL_S
      {
          MVE_IVE_SHIFT_DETECT_MODE_e enMode;
          MI_U8 pyramid_level;
          MI_U8 search_range;
          MI_U16 u16Left;
          MI_U16 u16Top;
          MI_U16 u16Width;
          MI_U16 u16Height;
      } MI_IVE_SHIFT_DETECT_CTRL_t;
      
      • 成员
      成员名称 描述
      enMode 输入通道模式
      pyramid_level 金字塔大小
      search_range 搜索范围
      u16Left 目标左上X方向位置
      u16Top 目标左上Y方向位置
      u16Width 目标区域宽度
      u16Height 目标区域高度
    • 注意事项

      • 若 enMode = E_MI_IVE_SHIFT_DETECT_MODE_SINGLE, u16Width与u16Height代表目标区域的宽高。

      • 若 enMode = E_MI_IVE_SHIFT_DETECT_MODE_MULTI, u16Width与u16Height则代表全域追踪时的方块大小。

    • 相关数据类型及接口

      MI_IVE_SHIFT_DETECT_MODE_e


    2.90. MI_IVE_BgBlurMode_e

    • 说明

      定义BGBlur工作模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_BGBLUR_MODE_BLUR            = 0x0,
          E_MI_IVE_BGBLUR_MODE_REPLACE         = 0x1,
          E_MI_IVE_BGBLUR_MODE_MOSAIC          = 0x2,
          E_MI_IVE_BGBLUR_MODE_BLUR_AND_MOSAIC = 0x3,
          E_MI_IVE_BGBLUR_MODE_MAX
      } MI_IVE_BgBlurMode_e;
      
    • 成员

      成员名称 描述
      E_MI_IVE_BGBLUR_MODE_BLUR 背景模糊模式。
      E_MI_IVE_BGBLUR_MODE_REPLACE 背景替换模式。
      仅 Souffle 系列支持
      E_MI_IVE_BGBLUR_MODE_MOSAIC 背景马赛克模式。
      仅 iFord 系列支持
      E_MI_IVE_BGBLUR_MODE_BLUR_AND_MOSAIC 背景模糊+马赛克模式。
      仅 iFord 系列支持
      E_MI_IVE_BGBLUR_MODE_MAX 错误模式。
    • 相关数据类型及接口

      MI_IVE_BgBlurCtrl_t


    2.91. MI_IVE_BgBlurMaskOp_e

    • 说明

      定义BGBlur Mask预处理模式。

    • 定义

      typedef enum
      {
          E_MI_IVE_BGBLUR_MASK_OP_DILATE = 0x0,
          E_MI_IVE_BGBLUR_MASK_OP_NONE   = 0x1,
          E_MI_IVE_BGBLUR_MASK_OP_ERODE  = 0x2,
          E_MI_IVE_BGBLUR_MASK_OP_MAX
      } MI_IVE_BgBlurMaskOp_e;
      
      • 成员
      成员名称 描述
      E_MI_IVE_BGBLUR_MASK_OP_DILATE Mask 膨胀预处理模式。
      E_MI_IVE_BGBLUR_MASK_OP_NONE 无 Mask 预处理模式。
      E_MI_IVE_BGBLUR_MASK_OP_ERODE Mask 腐蚀预处理模式。
      E_MI_IVE_BGBLUR_MASK_OP_MAX 错误模式。
    • 注意事项

      • 在Mask图像与实际前景轮廓不贴合的情况下,背景模糊输出图像会出现前景光晕/闪烁,背景穿透等问题,此时通过对Mask进行预处理,可达到改善输出图像效果目的。

      • 推荐在背景纹理较少且背景与前景对比度较大时,使用E_MI_IVE_BGBLUR_MASK_OP_DILATE。

      • 推荐背景纹理丰富时,使用E_MI_IVE_BGBLUR_MASK_OP_NONE或E_MI_IVE_BGBLUR_MASK_OP_ERODE。

    • 相关数据类型及接口

      MI_IVE_BgBlurCtrl_t


    2.92. MI_IVE_BgBlurCtrl_t

    • 说明

      定义BGBlur控制参数。

    • 定义

      typedef struct MI_IVE_BgBlurCtrl_S
      {
          MI_IVE_BGBLUR_MODE_e eBgBlurMode;
          MI_U8 u8MaskThr;
          MI_U8 u8BlurLv;
          MI_U8 u8ScalingStage;
          MI_IVE_BgBlurMaskOp_e eBgBlurMaskOp;
          MI_U8 u8SaturationLv;
          MI_U8 u8MosaicSize;
      } MI_IVE_BgBlurCtrl_t;
      
    • 成员

      成员名称 描述
      eBgBlurMode BGBlur 模式。
      u8MaskThr 用于Mask源图像二值化的阈值参数,取值范围[0, 255]。
      u8BlurLv 用于配置背景模糊等级,取值范围[0, 255]。
      仅 Souffle 系列设定时有效
      u8ScalingStage 用于配置背景模糊缩放挡位,取值范围[1, 15]。
      eBgBlurMaskOp BGBlur Mask预处理模式。
      u8SaturationLv 用于配置输出图像UV分量色彩饱和度,取值范围[0, 128]。
      仅 iFord 系列支持
      u8MosaicSize 用于配置背景马赛克粒度,取值范围[2, 4, 6, 8, 10]。
      仅 iFord 系列支持
    • 注意事项

      • u8BlurLv用于指定Alpha blending时的权重值,取值为0时模糊强度最大,可参考MI_IVE_AlphaBlending相关说明。

      • u8ScalingStage指定输入原始小图的缩放挡位,配置背景模糊时,将对原始小图进行缩放,缩放倍数越大,得到的背景越模糊;取值为15时缩放倍数最大,即模糊强度最大。

      • u8SaturationLv用于配置输出图像UV分量色彩饱和度,取值为0时,背景为灰度图像;取值为128时,背景为全彩色图像;

      • u8MosaicSize用于配置背景马赛克粒度,取值为10时,背景马赛克程度最大;

    • 相关数据类型及接口

      MI_IVE_BgBlurMode_e

      MI_IVE_BgBlurMaskOp_e


    3. 错误码

    智能加速引擎 API 错误码如下表所示。

    错误代码 宏定义 描述
    0xA0002001 MI_IVE_ERR_INVALID_DEVID 设备 ID 超出合法范围
    0xA0002002 MI_IVE_ERR_INVALID_CHNID 通道组号错误或无效区域句柄
    0xA0002003 MI_IVE_ERR_ILLEGAL_PARAM 参数超出合法范围
    0xA0002004 MI_IVE_ERR_EXIST 重复执行已存在的设备、通道或资源
    0xA0002005 MI_IVE_ERR_UNEXIST 试图使用或者销毁不存在的设备、通道或者资源
    0xA0002006 MI_IVE_ERR_NULL_PTR 函数参数中有空指针
    0xA0002007 MI_IVE_ERR_NOT_CONFIG 模块没有配置
    0xA0002008 MI_IVE_ERR_NOT_SUPPORT 不支持的参数或者功能
    0xA0002009 MI_IVE_ERR_NOT_PERM 该操作不允许,如试图修改静态配置参数
    0xA000200C MI_IVE_ERR_NOMEM 分配内存失败,如系统内存不足
    0xA000200D MI_IVE_ERR_NOBUF 分配缓存失败,如申请的图像缓冲区太大
    0xA000200E MI_IVE_ERR_BUF_EMPTY 缓冲区中无图像
    0xA000200F MI_IVE_ERR_BUF_FULL 缓冲区中图像满
    0xA0002010 MI_IVE_ERR_SYS_NOTREADY 系统没有初始化或没有加载相应模块
    0xA0002011 MI_IVE_ERR_BADADDR 地址非法
    0xA0002012 MI_IVE_ERR_BUSY 系统忙
    0xA0002013 MI_IVE_ERR_CHN_NOT_STARTED 系统未开始
    0xA0002014 MI_IVE_ERR_CHN_NOT_STOPED 系统未停止
    0xA0002015 MI_IVE_ERR_NOT_INIT 没有初始化
    0xA0002019 MI_IVE_ERR_SYS_TIMEOUT 系统超时
    0xA000201F MI_IVE_ERR_FAILED 函数执行错误

    4. IVE硬件加速实作表

    4.1. 智能加速硬件API实作

    表4-1 智能加速硬件API实作表

    API Name Ispahan Pudding/Tiramisu/Muffin Souffle iFord
    MI_IVE_Csc v v v
    MI_IVE_FilterAndCsc v v v
    MI_IVE_Filter v v v
    MI_IVE_MagAndAng v v v
    MI_IVE_Hist v v v
    MI_IVE_Integ v v v
    MI_IVE_Dilate v v v
    MI_IVE_Erode v v v
    MI_IVE_Map v v v
    MI_IVE_And v v v v
    MI_IVE_Or v v v v
    MI_IVE_Xor v v v v
    MI_IVE_Add v v v v
    MI_IVE_Sub v v v v
    MI_IVE_Ncc v v v
    MI_IVE_Sobel v v v
    MI_IVE_Thresh v v v v
    MI_IVE_ThreshS16 v v v v
    MI_IVE_ThreshU16 v v v v
    MI_IVE_16BitTo8Bit v v v
    MI_IVE_OrdStatFilter v v v
    MI_IVE_Sad v v v v
    MI_IVE_Bernsen v v v
    MI_IVE_Lbp v v v
    MI_IVE_BAT v v v
    MI_IVE_AdpThresh v v v
    MI_IVE_Matrix_Transform v v v
    MI_IVE_Image_Dot v v v
    MI_IVE_AlphaBlending v v v
    MI_IVE_Ccl v
    MI_IVE_Gmm v
    MI_IVE_Resize v
    MI_IVE_BGBlur v v

    4.2. 智能加速引擎flush and Invalidate机制说明

    智能加速引擎支持纯软,Neon加速及硬件加速,在连续调用IVE API时内部支持对MI_IVE_Image_t结构变量自动进行Cache Invalidate及Cache Flush,唯须调用硬件加速算子前后及CPU介入运算前后需自主进行Cache Invalidate或Cache Flush。以下范例进行说明,宣告一MI_IVE_Image_t src; src.u16Reserved初始化为0,智能加速引擎运算过程中使用此flag纪录软硬件状态,若为连续调用IVE API时(如图左),即使其中MI_IVE_Ccl为纯软运作,内部仍支持自动进行Cache Invalidate及Cache Flush;若内存被CPU介入运算(如图右),或者API调用结束时,则使用者须自行进行一次Cache Invalidate或Cache Flush,并将src.u16Reserved设为0。不同的芯片支持的硬件加速需参照表4-1。


    4.3. 智能加速引擎使用限制说明

    • address : 16 byte 对齐

    • stride : 16 像素对齐

    • width : 16 像素对齐,MI_IVE_BGBlur支持 2 像素对齐

    • height : 2 像素对齐


    4.4. 智能加速引擎使用确认说明

    可检查IVE的register进行确认,每个函数都有自己对应的代码。

    表4-2 IVE Register资讯-1

    Ispahan Pudding/Tiramisu/Muffin Souffle/iFord
    BANK 1521 1191 151F
    OFFSET 0004 0004 0004

    表4-3 IVE Register资讯-2

    op_type Function
    0x00 MI_IVE_Filter
    0x01 MI_IVE_Csc
    0x02 MI_IVE_FilterAndCsc
    0x03 MI_IVE_Sobel
    0x04 MI_IVE_MagAndAng
    0x05 MI_IVE_OrdStatFilter
    0x06 MI_IVE_Bernsen
    0x07 MI_IVE_Dilate
    0x08 MI_IVE_Erode
    0x09 MI_IVE_Thresh
    0x0A MI_IVE_ThreshS16
    0x0B MI_IVE_ThreshU16
    0x0C MI_IVE_And
    0x0D MI_IVE_Or
    0x0E MI_IVE_Xor
    0x0F MI_IVE_Add
    0x10 MI_IVE_Sub
    0x11 MI_IVE_16BitTo8Bit
    0x12 MI_IVE_Map
    0x13 MI_IVE_Hist
    0x14 MI_IVE_Integ
    0x15 MI_IVE_Sad
    0x16 MI_IVE_Ncc
    0x18 MI_IVE_Lbp
    0x1F MI_IVE_Matrix_Transform
    0x20 MI_IVE_Image_Dot
    0x21 MI_IVE_AlphaBlending
    0x22 MI_IVE_Ccl
    0x23 MI_IVE_Gmm
    0x24 MI_IVE_Resize
    0xFF MI_IVE_BGBlur