算法介绍

简介

Sentry1视觉传感器集成有多种离线视觉算法,无需网络即可识别物体。

视觉基础

  • 图像检测

    判断画面中是否有某一类目标物体,而不区分这个物体具体内容是什么。

  • 图像识别

    不仅要判断画面中是否有某一类目标物体,还要对这个物体具体的内容进行识别。

  • 分类标签

    对于具有物体识别功能的算法,需要用一个数字来标记不同的物体,这个数字即为分类标签:Label。

    对于不同的算法,即便具有相同的数字,其所代表的含义也是不同的,比如在颜色识别算法中用数字1代表*黑色*,而在卡片算法中用数字1代表*前进*。

  • 像素

    每一幅画面都是由各种颜色的”点“按一定的规则排列而成的,这些点称之为像素。颜色可以通过三原色来表示,对于图像而言,其三原色为红色Red,绿色Green,蓝色Blue。

    每个像素的颜色就是由不同深浅的R、G、B三种颜色组成的。每个通道颜色的深浅可以称之为该通道的亮度,可以由一个字节的数据来表示,其范围为0~255,其中0为最暗,255为最亮。

    当RGB三个通道都为0时最暗,表现出来的就是黑色,反之都为255时最亮,表现出来就是白色。

  • 图像坐标系

    Sentry1采用百分比坐标系,将水平方向和垂直方向量化至0~100的范围内,即100等分,返回坐标是相对满量程的值。百分比坐标系的图像中点为(50,50),即水平方向50%的位置和垂直方向50%的位置。

    注意:百分比坐标系下想表示一个正方形,其宽w和高h是不相等的,而是符合3:4的关系。比如,如果正方形的宽w为12%,那么其对应的高度h应该为12/3×4=16%

  • 目标物体标记方法

    当检测到物体后,需要按照某种方式来标记目标物体,通常采用矩形框标记法和顶点标记法。

    矩形框标记法:

    该方法会提供四个参数,分别为目标物体的中心点水平坐标x,中心点垂直坐标y,物体的水平宽度w,物体的垂直高度h。 通过这4个参数就可以将物体在画面中的方位和大小标记出来。大部分算法都采用此类标记法。

    顶点标记法

    该方法会提供1个或多个端点的x-y坐标,用于标记一个或多个端点。 比如在线条检测算法中,每组处理结果的2个端点可以确定一条直线,可以推算出其方向和大小。

算法介绍

算法列表

算法ID

名称

英文名称

简介

1

颜色识别

Color

可设置识别区域,返回区域中的颜色信息,如R,G,B值及分类标签

2

色块检测

Blob

检测图像中是否有指定的色块,支持黑、白、红、绿、蓝、黄6种色块检测

3

球体识别

Ball

可以检测识别橙色乒乓球或者绿色的网球

4

线条检测

Line

检测图像中的线条,返回两个端点坐标及倾斜角度

6

卡片识别

Card

识别特制的5张交通卡片图案,包含前进,左转、右转、调头和停车

7

人体检测

Body

可以检测到人体

算法详解

ID:1 颜色识别-Color

  • 算法简介

    用户指定一个识别区域,其位置和大小由用户进行设置,返回该区域的颜色标签信息和实际的红R、绿G、蓝B数值。

  • 颜色分类标签

    定义了7种颜色分类标签:

    分类标签

    英文标识

    中文含义

    分类标签

    英文标识

    中文含义

    1

    Black

    黑色

    2

    White

    白色

    3

    Red

    红色

    4

    Green

    绿色

    5

    Blue

    蓝色

    6

    Yellow

    黄色

    0

    Unknown

    未知

    注意:由于紫色、青色(蓝绿色)、橙色、灰色等,相对来说容易造成误报,因此这几个颜色部分区间被划分为临近颜色的标签,部分被划分为未知颜色,如果用户确实有这几种颜色的使用需求,可以通过返回参数的R、G、B实际值自行计算与判断

  • 配置参数

    用户需要指定识别区域的坐标和大小,如果没有指定,则默认为图像中心点

    当通过主控设置寄存器参数时,每个识别区域都需要设置以下参数:

    参数

    含义

    1

    识别区域中心x坐标

    2

    识别区域中心y坐标

    3

    识别区域宽度w

    4

    识别区域高度h

    5

  • 返回结果

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    R,红色值,范围 0~255

    2

    G,绿色值,范围 0~255

    3

    B,蓝色值,范围 0~255

    4

    5

    颜色分类标签

  • 使用技巧

    1. 由于是对像素进行统计处理,当识别区域较多且较大时,处理速度会相应的变慢,反之则会比较快速。

    2. 当识别区域窗口较小时(比如2x2),可以识别较小的色块,处理速度快,但统计样本太少,容易被干扰,可信度较低,适合于背景单一可控的环境。

    3. 当识别区域窗口较大时(比如32x32),统计样本多,即便出现若干的杂色也会被滤除,具有较高的可信度,但处理速度会变慢,当识别区域处于2种颜色的边界时,颜色可能会经常跳变。

    4. 当画面存在偏色时,需要锁定白平衡功能

ID:2 色块检测-Blob

  • 算法简介

    用户指定检测某个颜色,判断图像中是否有该颜色的色块,返回其坐标和大小,颜色分类标签与颜色识别中的定义相同。

  • 配置参数

    用户需要指定待检测的颜色标签,用户还可以通过设置色块的最小宽度w和高度h来过滤那些小于该值的色块,以减少误报。

    当通过主控设置寄存器时,有以下参数需要设置:

    参数

    含义

    1

    2

    3

    有效色块最小宽度w

    4

    有效色块最小高度h

    5

    待检测的颜色分类标签(注意:该值是与设置参数一致的)

  • 返回结果

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    色块中心x坐标

    2

    色块中心y坐标

    3

    色块宽度w

    4

    色块高度h

    5

    颜色分类标签

  • 使用技巧

    1. 当确定需要跟踪一个物体时,比如检测白色的道路或是跟踪小球,可以将色块数量设置为1,可以提高速度,减少误报

    2. 采用较小的识别区域并使用准确性能模式,可以看到更远处的物体

    3. 识别大面积的色块时,运行帧率会明显下降,此时可以用灵敏模式

    4. 当画面存在偏色时,需要锁定白平衡功能

ID:3 球体识别-Ball

  • 算法简介

    判断图像中是否有球体,只支持橙色小球(比如乒乓球)或绿色小球(比如网球),当然,近似颜色的球体都可以被检测到

  • 配置参数

  • 返回结果

    识别到球体后会返回其坐标、大小和标签编号

    分类标签

    英文标识

    中文含义

    分类标签

    英文标识

    中文含义

    1

    Pingpong

    乒乓球(橙色)

    2

    Tennis

    网球(绿色)

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    球体中心x坐标

    2

    球体中心y坐标

    3

    球体宽度w

    4

    球体高度h

    5

    球体分类标签

ID:4 线条检测-Line

  • 算法简介

    检测图像中是否有线条,如果有则会返回线条的两个端点和倾斜角度,如果为曲线,则会返回近似的直线段

  • 配置参数

  • 返回结果

    检测到线条后会返回其两个端点和倾斜角度

    注意:水平向右为0度,逆时针增大,垂直向上为90度,水平向左为180度,一般不会向下检测输出角度

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    线段终点x坐标(高处)

    2

    线段终点y坐标(高处)

    3

    线段起点x坐标(低处)

    4

    线段起点y坐标(低处)

    5

    线段的倾斜角度

  • 使用技巧

    1. 背景与线条应清晰分明,比如白底黑线,如果背景杂乱,则可能会检测出背景中的线条

    2. 线条粗细应适中,不可过细,也不可太宽

    3. 一般来说,巡线时,第一条线段始终为屏幕下方先发现的线段,然后是分支线段

ID:6 卡片识别-Card

  • 算法简介

    识别图像中是否有指定的交通卡片图案,返回其卡片坐标、大小、分类标签等信息。分类标签见下表

    交通标志

    分类标签

    英文标识

    中文含义

    分类标签

    英文标识

    中文含义

    1

    Forward

    前进

    2

    Left

    左转

    3

    Right

    右转

    4

    Turn Around

    掉头

    5

    Park

    停车

  • 配置参数

  • 返回结果

    该算法只支持单张卡片识别,卡片在20度以内的旋转仍然可以识别,角度旋转过大则无法识别

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    卡片中心x坐标

    2

    卡片中心y坐标

    3

    卡片宽度w

    4

    卡片高度h

    5

    卡片分类标签

ID:7 人体检测-Body

  • 算法简介

    检测图像中是否含有人体上半身特征,上半身只包含头部、肩膀所在的人体区域。正面效果最佳,侧面及背面识别率会降低。

  • 配置参数

  • 返回结果

    当通过主控读取寄存器时,将会返回以下的数据:

    结果

    含义

    1

    人体中心x坐标

    2

    人体中心y坐标

    3

    人体宽度w

    4

    人体高度h

    5

//end