如何从图像中的对象获得标准化的坐标

时间:2019-05-03 13:03:02

标签: c# machine-learning artificial-intelligence object-recognition microsoft-custom-vision

我正在使用Microsoft的CustomVision.ai构建自定义视觉应用程序。

我正在使用本教程: https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/csharp-tutorial-od

有一点我需要:

  

在对象检测项目中标记图像时,需要使用归一化坐标指定每个标记对象的区域

为此,我需要编写以下代码:

Dictionary<string, double[]> fileToRegionMap = new Dictionary<string, double[]>() {
// FileName, Left, Top, Width, Height
{"scissors_1", new double[] { 0.4007353, 0.194068655, 0.259803921, 0.6617647 } },
{"scissors_2", new double[] { 0.426470578, 0.185898721, 0.172794119, 0.5539216 } },
{"scissors_3", new double[] { 0.289215684, 0.259428144, 0.403186262, 0.421568632 } }
...

其中double是图像内对象的规范化坐标。

如何从图像中获取这些坐标?有什么软件可以用来创建这些坐标并将其添加到代码中?

1 个答案:

答案 0 :(得分:0)

归一化坐标是范围为0.0到1.0(不包括)的坐标。

如果您的图片坐标在范围内

(X = 0..Width, Y = 0..Height)

使用

变换坐标
double x_normalized = X / Width;
double y_normalized = Y / Height;

这假设坐标XYWidthHeight都以doublefloat的形式给出。如果以int的形式给出,请使用

double x_normalized = (double)X / Width;
double y_normalized = (double)Y / Height;

图像内部对象的宽度或高度相同

double object_width_normalized = object_width / Width;
double object_height_normalized = object_height / Height;

请注意,如果坐标以int的形式给出,则通常在[0..Width - 1, 0..Height - 1范围内,以便除法得出值0.0 <= value < 1.0