文件最后提交记录最后更新时间
3 个月前
3 个月前
3 个月前
3 个月前
3 个月前
3 个月前
3 个月前
README

ImageProjectiveTransform

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT √
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:对输入图像施加射影变换(Projective Transform),根据变换矩阵将输出图像中的每个像素映射回输入图像中对应的坐标,再通过插值计算输出像素值。

  • 计算公式:

    对于输出图像中的每个像素 (xout,yout)(x_{out}, y_{out}),其对应的输入图像坐标 (xin,yin)(x_{in}, y_{in}) 通过射影变换矩阵计算:

    xin=a0⋅xout+a1⋅yout+a2a6⋅xout+a7⋅yout+1x_{in} = \frac{a_0 \cdot x_{out} + a_1 \cdot y_{out} + a_2}{a_6 \cdot x_{out} + a_7 \cdot y_{out} + 1}

    yin=a3⋅xout+a4⋅yout+a5a6⋅xout+a7⋅yout+1y_{in} = \frac{a_3 \cdot x_{out} + a_4 \cdot y_{out} + a_5}{a_6 \cdot x_{out} + a_7 \cdot y_{out} + 1}

    其中 a0,a1,…,a7a_0, a_1, \ldots, a_7 为变换矩阵的8个参数,由输入 transforms 张量提供。

    根据插值模式计算输出像素值:

    • BILINEAR(双线性插值):

      xfloor=⌊xin⌋,xceil=xfloor+1x_{floor} = \lfloor x_{in} \rfloor, \quad x_{ceil} = x_{floor} + 1

      yfloor=⌊yin⌋,yceil=yfloor+1y_{floor} = \lfloor y_{in} \rfloor, \quad y_{ceil} = y_{floor} + 1

      vyfloor=(xceil−xin)⋅p(xfloor,yfloor)+(xin−xfloor)⋅p(xceil,yfloor)v_{yfloor} = (x_{ceil} - x_{in}) \cdot p(x_{floor}, y_{floor}) + (x_{in} - x_{floor}) \cdot p(x_{ceil}, y_{floor})

      vyceil=(xceil−xin)⋅p(xfloor,yceil)+(xin−xfloor)⋅p(xceil,yceil)v_{yceil} = (x_{ceil} - x_{in}) \cdot p(x_{floor}, y_{ceil}) + (x_{in} - x_{floor}) \cdot p(x_{ceil}, y_{ceil})

      result=(yceil−yin)⋅vyfloor+(yin−yfloor)⋅vyceilresult = (y_{ceil} - y_{in}) \cdot v_{yfloor} + (y_{in} - y_{floor}) \cdot v_{yceil}

      当源坐标超出输入图像边界时,使用填充值(默认为0)代替越界像素值。当变换矩阵分母为0或结果为NaN/Inf时,浮点类型输出NaN,整数类型输出INT_MIN。

    • NEAREST(最近邻插值):

      xi=round(xin),yi=round(yin)x_i = \text{round}(x_{in}), \quad y_i = \text{round}(y_{in})

      当源坐标超出输入图像边界时,使用填充值(默认为0)。

参数说明

  • 参数说明:

    参数名 输入/输出/属性 描述 数据类型 数据格式
    images 输入 输入图像张量,shape为(N, H, W, C),其中N为批次数,H为图像高度,W为图像宽度,C为通道数。 FLOAT16 / FLOAT / UINT8 / INT32 NHWC
    transforms 输入 射影变换矩阵参数,shape为(N, 8),每行包含8个变换参数[a0, a1, a2, a3, a4, a5, a6, a7]。 FLOAT ND
    output_shape 输入 输出图像的空间尺寸,shape为(2,),包含[height, width]。 INT32 ND
    interpolation 属性(必选) 插值模式,取值为"BILINEAR"(双线性插值)或"NEAREST"(最近邻插值)。 String -
    fill_mode 属性(可选) 填充模式,默认值为"CONSTANT"。 String -
    transformed_images 输出 变换后的图像张量,shape为(N, HOut, WOut, C),数据类型与images一致。 FLOAT16 / FLOAT / UINT8 / INT32 NHWC

约束说明

  • images输入必须为4维(NHWC格式)。
  • transforms输入必须为2维,shape为(N, 8),数据类型为FLOAT。
  • output_shape输入必须为1维,shape为(2,),数据类型为INT32。
  • fill_mode当前仅支持"CONSTANT"模式,填充值为0。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_image_projective_transform 通过算子IR构图方式调用ImageProjectiveTransform算子。