基于DragonBoard 410c的遥控炮台八之控制协议优化(下)
2017-05-24 15:40
225 查看
一.背景
在实现了遥控炮台的实时视频传输功能后,今天我们控制协议这块可以针对此功能优化出简单的基于二维坐标系的“自动瞄准”的功能!
二.原理
1.移动侦测:
看过博主系列博客的童鞋相信都知道 motion系统的存在!motion系统作为视频流分发的开源软件,同时具备有个相当酷炫的功能---“移动侦测”:即根据当前视野里场景动态识别移动的的物体,从而确定一块目标区域,示意如下:
图1 移动侦测
2.智能捕获:在获取目标区域后,我们再进一步确立移动物体的核心坐标(x,y),这里做个简单的逻辑解析:
2.1.图像二值化 :基于灰度平局值值法将目标区域进行图像二值化处理:
图2 二值化前图像
图3 二值化后图像
2.1.1. 灰度平局值值法:
简介:即使用整幅图像的灰度平均值作为二值化的阈值,一般该方法可作为其他方法的初始猜想值。
原理:
算法实现:
public static int GetMeanThreshold(int[] HistGram)
{
int Sum = 0, Amount = 0;
for (int Y = 0; Y < 256; Y++)
{
Amount += HistGram[Y];
Sum += Y * HistGram[Y];
}
return Sum / Amount;
}
2.2.采用六点面积法确定灰度图中心,最终获取坐标(x,y).
[b]
[/b]
[b]图4 六点面积法
[/b]
图3 面积公式
图4 中心坐标公式
3.动态瞄准 :由2获取移动物体的中心坐标(x,y),再结合我们的“视角”是与炮口形成水平线的平等姿态,那么我们动态瞄准的过程就转化成了我们“视角”中心点坐标(x1,y1)与移动物体中心(x,y)的水平线偏差&x=|x1-x|(这里由于结构限制,我们暂时只考虑水平方向的瞄准),如图7所示。
图5 视频炮台侧面图
图6 炮台正面图
图7 偏差范围
那么最终的问题就转化为,我们炮台视角与目标物体的中心偏差值&x与我们炮台水平方向的左右转角偏差值Q成线性变化,即&x=k Q
(备注:k按实际情况转化量纲,这里不做详细描述)
下一章节,博主再继续分享基于此原理上实现的“自动瞄准”功能。
在实现了遥控炮台的实时视频传输功能后,今天我们控制协议这块可以针对此功能优化出简单的基于二维坐标系的“自动瞄准”的功能!
二.原理
1.移动侦测:
看过博主系列博客的童鞋相信都知道 motion系统的存在!motion系统作为视频流分发的开源软件,同时具备有个相当酷炫的功能---“移动侦测”:即根据当前视野里场景动态识别移动的的物体,从而确定一块目标区域,示意如下:
图1 移动侦测
2.智能捕获:在获取目标区域后,我们再进一步确立移动物体的核心坐标(x,y),这里做个简单的逻辑解析:
2.1.图像二值化 :基于灰度平局值值法将目标区域进行图像二值化处理:
图2 二值化前图像
图3 二值化后图像
2.1.1. 灰度平局值值法:
简介:即使用整幅图像的灰度平均值作为二值化的阈值,一般该方法可作为其他方法的初始猜想值。
原理:
算法实现:
public static int GetMeanThreshold(int[] HistGram)
{
int Sum = 0, Amount = 0;
for (int Y = 0; Y < 256; Y++)
{
Amount += HistGram[Y];
Sum += Y * HistGram[Y];
}
return Sum / Amount;
}
2.2.采用六点面积法确定灰度图中心,最终获取坐标(x,y).
[b]
[/b]
[b]图4 六点面积法
[/b]
图3 面积公式
图4 中心坐标公式
3.动态瞄准 :由2获取移动物体的中心坐标(x,y),再结合我们的“视角”是与炮口形成水平线的平等姿态,那么我们动态瞄准的过程就转化成了我们“视角”中心点坐标(x1,y1)与移动物体中心(x,y)的水平线偏差&x=|x1-x|(这里由于结构限制,我们暂时只考虑水平方向的瞄准),如图7所示。
图5 视频炮台侧面图
图6 炮台正面图
图7 偏差范围
那么最终的问题就转化为,我们炮台视角与目标物体的中心偏差值&x与我们炮台水平方向的左右转角偏差值Q成线性变化,即&x=k Q
(备注:k按实际情况转化量纲,这里不做详细描述)
下一章节,博主再继续分享基于此原理上实现的“自动瞄准”功能。
相关文章推荐
- 基于DragonBoard 410c的遥控炮台七之控制协议优化(中)
- 基于DragonBoard 410c的遥控炮台六之控制协议优化(上)
- 基于DragonBoard 410c的遥控炮台三之远程交互(上)
- 基于DragonBoard 410c的遥控炮台二之舵机驱动(下)
- 基于DragonBoard 410c的遥控炮台五之远程交互(下)
- 基于dragonboard 410c的kobuki机器人简单控制——驱动安装
- 基于Dragonboard 410c的总线控制之SPI(一)
- 基于DragonBoard 410c的家庭智能环保卫士——(13)融合多数据处理的运动控制
- 如何实现DragonBoard 410c GPIO控制(基于linux环境)
- 基于Dragonboard 410c的总线控制之I2C(三)
- 基于Dragonboard 410c的总线控制之UART(二)
- 基于Dragonboard 410c的总线控制之SPI(二)
- 基于Dragonboard 410c的总线控制之UART(一)
- 基于Dragonboard 410c的总线控制之I2C(一)
- 基于dragonboard 410c的kobuki机器人控制——远程控制
- 基于Dragonboard 410c的总线控制之I2C(二)
- 基于dragonboard 410c的智能魔镜设计(1)——整体方案设计
- DragonBoard 410c手把手控制Linux的GPIO
- 基于dragonboard 410c的智能魔镜设计(5)——基于人脸的用户身份识别
- 基于DragonBoard 410c的远程家居监控平台一之远程图像传输(上)