1

我有一个用于关键点检测的图像数据集。每个图像都用一个关键点 (x|y) 标记。

我使用 numpy 翻转图像以进行数据增强。

我使用以下代码翻转图像水平:

img = img[:, ::-1]

与此代码垂直

 img = img[::-1]

到目前为止,一切都很好。但我还必须重新计算关键点(标签)([85 35])我知道它的基本数学,但我还没有找到解决方案。

提前致谢。

4

3 回答 3

0

使用旋转矩阵:

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])))

于 2018-09-03T08:33:49.103 回答
0

如果水平翻转图像,那么距左侧 85 个单位的像素将距右侧 85 个单位。垂直翻转也是如此,顶部 35 个单位将是底部 35 个单位。

因此,现在您可以借助img.shape图像的大小来计算位置,也可以使用可以使用负索引访问图像的事实。所以点将[85 35]是点[-85 35][width_of_image-85 35]

于 2018-09-03T08:36:48.580 回答
0

如果您要翻转 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
于 2018-09-03T08:37:28.723 回答