在人脸识别等任务中,经常需要把一幅二维灰度图做仿射变换。给定输入图像矩阵 A、仿射矩阵 M 以及目标图像尺寸,采用前向映射方式把原图像像素投到新坐标系中,超出目标范围的像素丢弃,目标中未被覆盖处保持为 0。 · 仿射矩阵 M 为两行三列: 第一行 [a, b, tx],第二行 [c, d, ty]。 · 对原图中列坐标 x、行坐标 y(均从 0 开始计),对应的新坐标计算为: x' = ax + by + tx y' = cx + dy + ty · 采用前向映射(source→target):对每个源像素计算 (x', y'),若 0 ≤ x' < out_width 且 0 ≤ y' < out_height,则把该像素值写入目标图像 (y', x');否则忽略。不做插值,按整数坐标落点覆盖。目标图像初始全 0。 · 输出为按行展开的一行数字(从第 0 行到最后一行,行内自左至右)。
· 第一行:a m o 三个整数,依次为输入图像 A 的行数 a、仿射矩阵行数 m(固定为 2)、以及后续“输出尺寸行数” o(固定为 1)。 · 接着 a 行:每行若干整数,表示该行像素值(列数由每行给出,行内列数保持一致)。 · 接着 m 行:每行 3 个整数,依次为仿射矩阵的参数 [a, b, tx] 与 [c, d, ty]。 · 最后 o 行:每行两个整数 out_height out_width,表示目标图像尺寸(行数、高度;列数、宽度)。
一行:将目标图像按行展开输出,元素之间用空格分隔。
2 2 1 1 2 3 4 5 6 1 0 1 0 1 1 3 4
0 0 0 0 0 1 2 3 0 4 5 6
考点:计算几何
限制 1 秒 / 256MB | 标准输入输出
参考方向:计算几何
把几何关系转成坐标运算,用整数运算避免浮点误差。
思路框架(计算几何 通法 · 非本题专属)
实现要点:叉积 cross = x1*y2 - x2*y1;用它判断顺时针/逆时针和共线。
复杂度:时间 O(n) ~ O(n²) | 空间 O(n)
该范式的通法易错点
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 2 2 1 / 1 2 3 / 4 5 6 / 1 0 1 / 0 1 1 / 3 4 → 输出 0 0 0 0 0 1 2 3 0 4 5 6
图像 2×3;M 表示整体平移 (+1, +1);目标尺寸 3×4。
源像素 (x,y) 被移到 (x+1,y+1)。第 0 行与第 0 列无像素落点,因此为 0;其余位置由源像素覆盖。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-10月23号留学生AI岗。