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

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

我正在使用这个教程:https://learn.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值是图像中对象的标准化坐标。

我如何从图像中获取这些坐标?有没有可以使用的软件来创建这些坐标并将它们添加到代码中?


回答:

标准化坐标是范围从0.0到1.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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注