博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于DragonBoard 410c的遥控炮台八之控制协议优化(下)
阅读量:2229 次
发布时间:2019-05-09

本文共 910 字,大约阅读时间需要 3 分钟。

一.背景

在实现了遥控炮台的实时视频传输功能后,今天我们控制协议这块可以针对此功能优化出简单的基于二维坐标系的“自动瞄准”的功能!

二.原理

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

图4 六点面积法

图3 面积公式 

图4 中心坐标公式

3.动态瞄准 :由2获取移动物体的中心坐标(x,y),再结合我们的“视角”是与炮口形成水平线的平等姿态,那么我们动态瞄准的过程就转化成了我们“视角”中心点坐标(x1,y1)与移动物体中心(x,y)的水平线偏差&x=|x1-x|(这里由于结构限制,我们暂时只考虑水平方向的瞄准),如图7所示。

图5 视频炮台侧面图

图6 炮台正面图

图7 偏差范围

那么最终的问题就转化为,我们炮台视角与目标物体的中心偏差值&x与我们炮台水平方向的左右转角偏差值Q成线性变化,即&x=k Q  

(备注:k按实际情况转化量纲,这里不做详细描述)

下一章节,博主再继续分享基于此原理上实现的“自动瞄准”功能。

你可能感兴趣的文章
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java集合详解8:Java集合类细节精讲,细节决定成败
查看>>
Java并发指南1:并发基础与Java多线程
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>