我有一个用于关键点检测的图像数据集。每个图像都用一个关键点 (x|y) 标记。
我使用 numpy 翻转图像以进行数据增强。
我使用以下代码翻转图像水平:
img = img[:, ::-1]
与此代码垂直
img = img[::-1]
到目前为止,一切都很好。但我还必须重新计算关键点(标签)([85 35]
)我知道它的基本数学,但我还没有找到解决方案。
提前致谢。
我有一个用于关键点检测的图像数据集。每个图像都用一个关键点 (x|y) 标记。
我使用 numpy 翻转图像以进行数据增强。
我使用以下代码翻转图像水平:
img = img[:, ::-1]
与此代码垂直
img = img[::-1]
到目前为止,一切都很好。但我还必须重新计算关键点(标签)([85 35]
)我知道它的基本数学,但我还没有找到解决方案。
提前致谢。
使用旋转矩阵:
x_new = x_old * np.cos(alpha) - y_old * np.sin(alpha)
y_new = x_old * np.sin(alpha) + y_old * np.cos(alpha)
Alpha 是以弧度表示的旋转角度,但我不知道是什么给出的img = img[:, ::-1]
)))
如果水平翻转图像,那么距左侧 85 个单位的像素将距右侧 85 个单位。垂直翻转也是如此,顶部 35 个单位将是底部 35 个单位。
因此,现在您可以借助img.shape
图像的大小来计算位置,也可以使用可以使用负索引访问图像的事实。所以点将[85 35]
是点[-85 35]
或[width_of_image-85 35]
如果您要翻转 180°(垂直或水平),则不需要旋转矩阵。只需获取图像的形状即可。
X = img.shape[1]
y = img.shape[0]
水平翻转时重新计算 X-Position。
X_Position_New = X - X_Position_Old
垂直翻转时重新计算 Y 位置。
Y_Position_New = Y - Y_Position_Old