嵌入式

红外行人识别系统标记方法

在行人识别的最后步骤,需要对识别出的行人进行标记。通常在实验阶段往往只是把ROI的框涂出来,但是在工程阶段,需要更加精细的标记方法以获得更好的用户体验。 经过总结,标记的ROI需要满足以下需求: 只标记人的身体部分,不填或少填无关的部分; 标记部分显示黄色,颜色深浅随着roi的置信度变化; 设计思路: 一般人体的亮度均大于背景,因此可以设置一个阈值,只标记高于阈值的像素,实现只标记人体部分。 我们红外图像只有亮度信息,对应到RGB色域中,RGB的值就是亮度的值。因此我们可以调高R和G的值来提高黄色的色度,降低B的值来增加颜色的深度。只要R和G的值一样且大于B就能获得理想的效果。 那么开始设计: 去除背景部分 经过测试,行人身体的亮度大都大于192,因此只标记亮度大于192的像素。 通过两个像素的均值确定需要填图的黄色色度 yy = (ptr[current + 1] + ptr[

  • Akkz
2 min read
嵌入式

行人识别算法的系统设计

模块化设计 行人识别算法的具有一定的复杂度,在设计系统框架时要处理好以下问题: 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 单一职责原则 **定义:**不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 **实现:**对系统功能模块化,每个模块只负责自己的功能。 里氏替换原则 **定义:**如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,

  • Akkz
2 min read
嵌入式

DM6437上行人识别程序开发总结

最近完成了DSP平台上行人识别程序的框架设计与实现,这里总结一下开发过程中遇到的问题及解决方案: 1. BIOS配置文件修改生效问题 CCS3.3编译程序的方式有increase build和build all两种方式,通常情况下如果只有改了某个文件,可以选择increase build来提高算法的编译速度。但是如果修改了配置文件,则一定要选择build all,否则修改无法生效。 2. 周期函数、软中断的配置问题 在BIOS中配置周期函数和软中断的时候,要注意中断配置的名称和它调用的方法不能同名,如果同名的话会导致配置失效。 3. 不同中断函数之间变量共享方式 多个中断函数需要共享某些变量时,可以使用闭包的方式,避免全局变量的使用。即将这几个函数定义在一个.c文件中,使用static修饰共享的变量。 4. 模块复用性提高 上面闭包的方式可以使多个软中断函数共享变量,但是这种设计会降低模块的复用程度,

  • Akkz
2 min read
嵌入式

DM6437 使用PRD操作VPFE和VPBE时视频帧异常问题修复

为了将算法执行流程与视频流交换流程分开,需要使用PRD出发软中断,再执行算法或视频流交换操作。 但是在实践中发现,当视频流交换函数触发的时钟周期为50ms时,会随机出现部分视频帧为旧数据的问题,造成视频播放时内容回跳,非常影响显示效果。经过试验,排除了缓冲区过小,硬件计算性能等问题,最后将问题锁定在vpfe和vpbe时数据交换失败上,并解决。 原理说明 在解决问题前首先需要理解sdk中视频帧交换的过程,在DSP/BIOS VPFE Device Driver User's Guide中可以查到,vpfe和vpbe各有两个缓冲队列READY Queue和FREE Queue,它们会不断从READY队列中存入/取出数据,并放入FREE队列中。使用FVID_exchange可以将一个空的buffer加入READY队列并从FREE队列中取出一帧,这也是例子中所推荐的方法,在未使用PRD时也可以流程的执行。 但是,

  • Akkz
2 min read

Subscribe to 咚咚咚的小极客

皖ICP备13007154号-1