Integral Channel Features-论文整理

本文深入解析Integral Channel Features(ICF),包括Haar特征、积分直方图、梯度直方图及其快速计算方法。通过积分图计算各种特征,提高了效率但准确性受限。为解决此问题,引入多种Channel增强特征表达,如灰度、颜色、线性滤波器、非线性变换等。文章介绍了预平滑和后平滑对特征的影响,并探讨了行人检测中的软级联分类器应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Integral Channel Features-ICF


本文是我piotr dollar的integral channel features的理解,如有错误或者疑问请及时与我联系,谢谢。



一、导读

Integral Channel Features是指一类特征,这类特征可以通过积分图(Integral images)快速的计算出来。例如,Haar feature,local sums,gradient histograms。都可以通过积分图(Integral images)快速的计算出来。


PS:这里有几点要说明

1.什么是Haar特征,简单的说,在图像中划定一个矩形框,如下图,然后分别求出区域1和区域2中所有像素的和,记作sum(1),sum(2)。然后这俩个差值:sum(1)-sum(2)的值就是一个 Haar特征。当然,这只是一个例子,这个矩形可以有很多其它形式,详细了解请参考Haar


      


2.local sums这个特征就是图像中局部区域的像素和,比如上面的sum(1)


3.gradient histogram(梯度直方图):求出原始图像的gradient angle 和gradient magnitude,这个角度的值会决定对应像素落在直方图的那个bin上,而这个像素的gradient magnitude值会决定这个像素对这个bin的贡献。举个例子,下面这个梯度直方图有六个bin,分别是0-30度~150-180度。如果现在有个像素,它的gradient angle是142度,gradient magnitude是13,那么,这个像素会对120-150这个区间的直方图做出贡献,贡献值是13.更详细内容请参考HOG





4.积分图(Integral images),这个直接上图吧,比如下面4*4的图像

它的积分图也是同样大小的图片,即4*4大小,在积分图中,每个像素的的值,是原始图像中该位置左上角区域内所有的像素和。比如积分图像中,第二行第二列的像素就应该是:2+3+4+6=15



所以,上图的积分图像是这样的:

`pid->integral` 是 PID 控制器中的 **积分项(Integral Term)**,用于累积误差随时间的变化。它在控制算法中起着非常重要的作用,主要用于消除系统的 **稳态误差(Steady-State Error)**。 --- ### 🔍 `pid->integral` 的含义 ```c pid->integral += error * dt; ``` 这行代码的作用是: - 每次调用 `compute_pid()` 函数时,将当前的误差(`error`)乘以时间间隔(`dt`)并累加到 `integral` 中。 - 这个累加过程是对误差在时间上的积分的近似计算,即: $$ \text{integral} = \int_{0}^{t} \text{error}(\tau) \, d\tau $$ - 在离散系统中,我们使用 **数值积分**(通常是矩形积分)来近似这个过程。 --- ### 📈 为什么需要 `integral`? - 比例项(P)只能根据当前误差进行调整,无法完全消除系统长期存在的误差(稳态误差)。 - 积分项的作用是将误差随时间累积,即使误差非常小,只要存在,积分项就会不断增大,直到误差被完全消除。 - 例如:在温度控制系统中,如果加热器输出不够,温度始终比设定值低 1°C,积分项会逐渐增大,迫使加热器输出增加,直到温度达到设定值。 --- ### ⚠️ 积分项的问题:积分饱和(Integral Windup) 如果误差长时间存在(例如系统响应慢或执行器达到极限),积分项会不断增大,导致输出超出合理范围,这种现象称为 **积分饱和**。 #### 解决方法包括: 1. **积分限幅(Integral Clamping)**: - 限制 `integral` 的最大和最小值,防止其过大。 - 示例代码: ```c if (pid->integral > INTEGRAL_MAX) { pid->integral = INTEGRAL_MAX; } else if (pid->integral < -INTEGRAL_MAX) { pid->integral = -INTEGRAL_MAX; } ``` 2. **抗饱和机制(Anti-Windup)**: - 当控制器输出达到上限或下限时,停止积分- 示例代码: ```c if ((control_output > OUTPUT_MAX && error > 0) || (control_output < OUTPUT_MIN && error < 0)) { // 饱和状态,停止积分 pid->integral = pid->integral; // 不更新 } else { pid->integral += error * dt; } ``` --- ### ✅ 总结 - `pid->integral` 是误差的时间积分,用于消除稳态误差。 - 它是 PID 控制器中非常关键的一部分。 - 需要注意积分饱和问题,并加入适当的限幅或抗饱和机制。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值