DM8168算法集成--集成SCD(可进一步运动检测、运动跟踪等)

简介:

原文地址:http://blog.csdn.net/guo8113/article/details/41693289

SCD算法是在DVRRDK的DSP中运行的,随DVRRDK一起提供的。并且在3.0以上的版本中在Mcfw_demo里实现了类似目标的跟踪等高级功能。SCD采用DMVAL库,所以核心的算法源码没有给出。SCD的intergration文档中对于其相关参数有说明。但是DVRRDK没有在Link_api_demos中实现SCD。所以将其在doubles_doubleChCapScEncSend.c中实现1080p的处理:

步骤:

1.向chains中加入相关的link:

目前ScdLink位于dup0之后,因为dup可以有3个输出队列,1个给encLink,1个给display,1个给Scd。

UInt32 sclrId;

UInt32 nsfId2;

UInt32 ipcFramesOutVpssId2;

UInt32 ipcFramesInDspId2;

UInt32 scdId;

UInt32 ipcBitsOutDspId2;

UInt32 ipcBitsInHostId2;

一定要注意scd的输入仅支持420格式,这个在文档中说支持422/420是错误的。422会有格式不支持的报错:

另外一定要注意link create时的顺序,必须按照数据流的相反顺序进行创建,否则会出现以下类似的错误。

还有,根据link的结构,如果该link消耗buffer,那么它一定需要从nextlink来获取空buffer,所以在调试时next link是必须有的(可以使用null link调试),比如没有OutDspLink之后的link,在运行时就会提示:0x9是空指针的错误(在DMVAL的文档中有说明)。

2.读取SCD的状态:

可以通过发送消息主动获取其状态:

System_linkControl(

scdId,                                       ALG_LINK_SCD_CMD_GET_ALL_CHANNEL_FRAME_STATUS,

&(scdAllChFrameStatus),

sizeof(scdAllChFrameStatus),

TRUE

);

好的方法是借鉴Demo_scd_bits_wr.c进行bits的获取,到hostA8中进行分析,因此移植了Demo_scd_bits_wr.c、Demo_scd_bits_wr.h,在chains中只需要调用:

Scd_bitsWriteCreate(0,ipcBitsInHostId2);     //Init scd‘s ipcBitsInHost by:guo8113

创建相关的线程

Chains_ipcBitsInitCreateParams_BitsInHLOSVcap(&ipcBitsInHostPrm2);

//为ipcBitsInHostLink注册回调函数

就可以在chains_scd_bits_wr.c的void*Scd_bitsWriteMain(void *pPrm)函数中进行相应的操作了。具体内容,参考chains_scd_bits_wr.c。(根据Demo_scd_bits_wr.c进行定制)

可能会遇到的问题:关于Link的回调线程只运行n(6或有限次数)的问题:

IpcBitsLink需要从Host A8获得空的Buffer,并交给IpcBItsInHost才可以不断的取数据生成满的Buffer,参考Demo_scd_bits_wr.c实现

Scd_getAlgResultBuffer、Scd_releaseAlgResultBuffer等函数。

===========================================================================================

不宜详细描述,仅提供参考思路,有问题可以留言、交流。

转载请注明:http://blog.csdn.net/guo8113/article/details/41693289

===========================================================================================

时间: 2024-11-10 01:06:29

DM8168算法集成--集成SCD(可进一步运动检测、运动跟踪等)的相关文章

统计学习方法--提升方法adaBoost算法(集成学习)

1.主要内容 介绍集成学习,然后讲述boosting和bagging的区别与联系,同时对adaBoost进行推导然后进行gbdt的推导,最后比较随机森林和gdbt的区别和联系. 2.集成学习 集成学习(ensamble learning)通过构建多个学习器来完成任务.集成学习的一般结构:先产生一组"个体学习器",然后再用某种策略将这些个体学习器进行联系起来,个体学习器由现有的一个算法产生,比如说c4.5决策树,bp神经网络等.根据集成学习中个体学习器是否相同可以分为同质集成和已质集成,

差分进化算法优化集成参数

一.差分进化的思想 差分进化是在遗传算法的基础上发展而来的,与遗传算法相似,有变异.交叉.选择等操作,但是实现简单,收敛速度快.差分进化的过程是随机生成一个初始化群体,经过交叉.变异.选择三个操作,反复迭代,保留有用的个体,寻找最优解. 差分进化利用了贪婪的思想,在每一次的迭代中,保留最优解.通过当前种群个体跟经过交叉.变异后的个体以适应度值为标准,进行比较,保留最优的个体. (1)初始化 (2)变异 (3)交叉 (4)选择 其中,F是变异因子,用来控制两个随机个体差分向量的缩放程度.CR是交叉

十大经典预测算法六---集成学习(模型融合算法)

模型融合算法概念 它不是具体的指某一个算法,而是一种把多个弱模型融合合并在一起变成一个强模型的思想 用模型融合算法的原因 1.单个模型容易过拟合,多个模型融合可以提高范化能力 2.单个模型预测能力不高,多个模型往往能提高预测能力 3.对于数据集过大或过小,可以分别进行划分和有放回的操作,产生不同的数据子集,然后通过数据子集训练不同的分类模型,最终合并成一个大的分类器 4.对于多个异构的特征集的时候,很难进行融合,可以考虑每个数据集构建一个分类模型,然后将多个模型融合 5.模型融合算法成功的关键在

运动跟踪之CMT算法

CMT(Clustering of Static-Adaptive Correspondences for Deformable Object Tracking),是一套比较新的跟踪算法,诞生于2014年,原名叫Consensus-based Tracking and Matching of Keypoints for Object Tracking ,当时在计算机视觉应用(Application of Computer Vision)的冬季会议上获得了最佳论文奖,随后于2015年发表在了CVP

机器学习算法--集成学习

1. 个体和集成 集成学习通过构建并结合多个"个体学习器"来完成学习任务.个体学习器通常由一个现有的学习算法从训练数据产生,若集成中只包含同种类型的个体学习器,称为同质集成:若包含不同类型的个体学习器,为异质集成.同质集成中的个体学习器也成为"基学习器". 如何产生并结合"好而不同"的个体学习器,恰是集成学习研究的核心. 根据个体学习器的生成方式,目前的集成学习方法大致分为两大类: (1)个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表

sklearn中调用集成学习算法

1.集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常广泛.生活中其实也普遍存在集成学习的方法,比如买东西找不同的人进行推荐,病情诊断进行多专家会诊等,考虑各方面的意见进行最终的综合的决策,这样得到的结果可能会更加的全面和准确.另外,sklearn中也提供了集成学习的接口voting classifier. sklearn中具体调用集成学习方法的具体代码如下:

大白话5分钟带你走进人工智能-第二十八节集成学习之随机森林概念介绍(1)

                                                      第二十八节集成学习之随机森林概念介绍(1) 从本系列开始,我们讲解一个新的算法系列集成学习.集成学习其实是怎么样去应用决策树解决一些问题. 在机器学习领域集成学习是一种非常简单直接的提升分类器回归器预测效果的一种思路.决策树有一个困境,当层数太深的时候会有过拟合问题,当我不想过拟合,就通过预剪枝给它砍掉一部分深度,此时损失又容易太大了,导致在训练集上预测的又不怎么准.所以对于决策树很难去找

机器学习之集成学习(一)

详细参考:https://www.cnblogs.com/pinard/p/6131423.html 首先明确集成学习它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务. 集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器.对于个体学习器第一种就是所有的个体学习器都是一个种类的,或者说是同质的.比如都是决策树个体学习器,或者都是神经网络个体学习器.第二种是所有的个体学习器不全是一个种类的,

第二十九章 集成

集成是指一种软件开发行为:将一些独立的软件组合为一个完整系统. 集成方式的重要性 从周到的继承中,你能预期获得某些下列的益处: 更容易诊断缺陷: 缺陷更少: 脚手架更少: 花费更少的时间获得第一个能工作的产品: 更短的整体开发进度表: 更好的顾客关系: 增强士气: 增加项目完成的机会: 更可靠地估计进度表: 更准确的现状报告: 改善代码的质量: 较少的文档. 集成频率--阶段式集成还是增量集成 阶段式集成 它遵循下列明确的步骤: 设计.编码.测试.调试各个类.这一步称为单元开发: 将这些类组合为