精华内容
下载资源
问答
  • 按键去抖动

    2014-06-02 10:20:57
    按键去抖 去抖动算法模块 verilog
  • 常用的去抖动方法有两种,即硬件方法和软件方法,两种方式的去抖效果相近,硬件去抖动的方法很多,主要用触发器或单稳态电路构成消抖电路。另外,由于软件去抖比较方便,不用增加额外的硬件开销,所以一般场合都采用...

    常用的去抖动方法有两种,即硬件方法和软件方法,两种方式的去抖效果相近,硬件去抖动的方法很多,主要用触发器或单稳态电路构成消抖电路。另外,由于软件去抖比较方便,不用增加额外的硬件开销,所以一般场合都采用软件去抖。单片机中常用软件去抖动法,软件法其实也很简单,就是在单片机获得端口为低电平的信息后,不是立即认定按键已被按下,而是延时10ms或更长一些时间后再次检测该端口,如果仍为低,说明此键的确被按下了,这实际上是避开了按键按下时的抖动时间,而在检测到按键释放后端口为高电平时,再延时50ms,消除后沿的抖动,然后再对按键进行处理,不过一般情况下,通常不对按键释放的后沿进行处理,实践证明也能满足日常的要求。如图8-3所示为按键抖动现象和硬件去抖动电路。

    fedaa34718ff6efa0bd498ff13fe03c5.png图8-3 按键抖动现象和硬件去抖动电路

    下面通过一个实验来验证一下,实验程序如下:

    ORG 0000H ;

    AJMP START ;

    ORG 0030H ;

    START:MOV SP,5FH ;

    MOV P1,#0FFH ;

    MOV P3,#0FFH ;

    L1:JNB P3.4,L2 ;按下按键开关取反一次P1.0 灯亮,再按一次灯灭

    JNB P3.5,L3 ;按下按键开关取反一次P1.1 灯亮,再按一次灯灭

    LJMP L1 ;

    L2:CPL P1.0 ;

    LJMP L1 ;

    L3:CPL P1.1 ;

    LJMP L1 ;

    END

    把这个程序下载到单片机会发现,当按下相应的按键时,并不是像想象中的按一下灯亮再按一下就灯灭,而是有时灵有时不灵,为什么会这样呢?原来当按了一次按键,可是单片机却早已执行了好多次,如果执行的次数是奇数,那么结果相符;如果执行的次数是偶数,结果相反。为了使CPU能正确地读出端口的状态,对每一次按键只作一次响应就必须考虑如何去除按键的抖动。下面把前面的程序进行修改,实现按键的去抖动:

    ORG 0000H;

    AJMP START;

    ORG 0030H;

    START:MOV SP,#5FH;

    MOV P1,#0FFH;

    MOV P3,#0FFH;

    L1:JB P3.4,L2;P3.4为1时不做处理,转P3.5 否则说明有键按下

    LCALL D10mS;调用延时程序去除抖动

    JB P3.4,L1;P3.4为0,说明此键确实被按下了

    CPL P1.0;取反P1.0

    L3:JNB P3.4,L3;直到P3.4释放后转去判断第二个键

    L2:JB P3.5,L1;P3.5为1,返回继续处理P3.4,否则说明有键按下

    LCALL D10mS;调用延时程序去除抖动

    JB P3.5,L2;P3.5为0,说明此键确实被按下了

    CPL P1.1;取反P1.1

    L4:JNB P3.5,L4;直到P3.5释放为止

    LJMP L1;返回

    D10mS:MOV R7,#50;延时的时间一般为5~20ms

    D1:MOV R6,#100;

    D2:DJNZ R6,D2;

    DJNZ R7,D1;

    RET;

    END

    把这段程序写入单片机查看结果,与预测相符,这就是独立式按键去抖动的基本方法,不过这个程序在实际应用中并没有多大的意义,因为如果按键数量比较多,程序就会变得很长,因为这里采用了直接寻址的方式,如果把键值放入一个表格中,再通过查表程序来判断到底是哪个按键被按下,然后处理相应的程序就会很简单,读者可尝试实现。

    举报/反馈

    展开全文
  • 去抖动电路

    2011-12-19 10:55:04
    去抖动电路,十分实用的说,为了赚积分了啦哈哈哈
  • 视频去抖动程序

    2014-04-15 15:25:01
    可实现视频的去抖动操作,基于C++的代码
  • 本文介绍一种很实用的软件去抖动方法,它借助于单片机内的定时中断资源,只要运算一下逻辑表达就完成了去抖动。这个方法效率高,不耗机时且易实现。文中使用的逻辑表达式由简单卡诺图和真值表推出,使该方法的机理...

    一种软件去除键抖动的方法摘要:单片机控制系统中大多使用控制键来实现控制功能。消除按键瞬间的抖动是设计者必须要考虑的问题。本文介绍一种很实用的软件去抖动方法,它借助于单片机内的定时中断资源,只要运算一下逻辑表达就完成了去抖动。这个方法效率高,不耗机时且易实现。文中使用的逻辑表达式由简单卡诺图和真值表推出,使该方法的机理容易理解。文中还提供用C51单片机编程语言编写的实用例程。

    关键词:单片机 键处理 控制系统 去抖动 键盘

    56cc1925f4be1b3639d0f2713aa04867.png

    概述

    在单片机控制系统中,通过按键实现控制功能是很常见的。对按键处理的重要环节是去抖动,包括去除按下和抬起瞬间的抖动。去抖动的`方法有很多种,如使用R-S触发器的硬件方法、运用不同算法的各种软件方法等。硬件方法会增加成本和体积,对于按键较多的矩阵式键盘,会用硬件方法;软件方法用的比较普遍,但有一种加固定延时的去抖动法效率最低,它以无谓地耗费机时来实现去抖动。

    此处介绍的是一种软件方法。简单说来是一种运算法,配合定时中断读取按键,通过运算逻辑表达式:

    Keradyn=Ktemp Kinput+Kreadyn-1 (Ktemp ⊙Kinput)    (1)

    Ktemp=Kinput    (2)

    可以获得消除抖动的按键消息。这种方法效率高,不需耗时的循环等待,而且算法简单、使用方便。

    一、基本原理

    由于按键的按下与抬起都会有10~20ms的抖动毛刺存在,因此,为了获取稳定的按键信息,须要避开这段抖动期。

    设置3个变量Kready、Ktemp和Kinput,并设置定时中断周期为20ms。在定时中断服务程序中读取按键,并把读取的数据存于变量Kinput中。变量Kready中是所需要的稳定的按键信息;Ktemp是中间变量,它的值是上一次的Kinput。

    根据当前按键的状态,考虑到Kready中是20ms抖动后的有效键信息,则Kready、Ktemp和Kinput之间,在不同时刻的状态关系如表1所列。

    表1

    时 刻KreadyKtempKinput100020013010400151

    [1] [2] [3] [4] [5] [6]

    【一种软件去除键抖动的方法】相关文章:

    展开全文
  • 视频去抖动算法

    2013-05-18 22:46:48
    靠谱的视频拍摄去抖动算法, 微软研究院公开的成果。
  • 独立按键去抖动

    2014-07-06 18:15:05
    独立按键去抖动,对独立按键进行功能调用,为了能排除意外情况而采取去抖动,这是此功能源代码。
  • matlab去抖动代码 ImageRestoration Image motion deblurring 自然图像运动去模糊 使用场景:相机抖动、遥感成像 主要任务:matlab代码移植到C++,加入CUDA GPU加速 最终目标:可视化运动去模糊软件
  • 维纳滤波进行图像去抖动去模糊

    千次阅读 2020-10-12 07:19:21
    首先,我们简单说明一下利用维纳滤波进行图像去抖动去模糊的基本原理,并给出仿真结果。 利用维纳滤波器进行图像去抖去模糊的基本原理如下所示: 对原始图像进行维纳滤波的算法是首先估计出每个像素点的M*...

    首先,我们简单说明一下利用维纳滤波进行图像去抖动去模糊的基本原理,并给出仿真结果。

        利用维纳滤波器进行图像去抖去模糊的基本原理如下所示:

        

       

          对原始图像进行维纳滤波的算法是首先估计出每个像素点的M*N邻域内的平均值和方差值。有如下两个表达式计算:

        

        

          用如下的表达式计算输出的灰度值。其中a(n1,n2)是调整前的灰度值,b(n1,n2)是调整后的灰度值:

        

          以上这部分是维纳滤波的基本原理,在我们提供的一些参考文献中均有详细介绍,所以这里就不多做介绍了,我们主要是对后面的创新部分进行详细的说明。

          注意:由于手机拍摄抖动导致的模糊,在数学上属于运动模糊,所以,我们为了对比滤波性能的好坏,直接使用运动模糊来模拟抖动效果。然后进行滤波对比。

          使用传统的维纳滤波算法,对抖动模糊的仿真效果如下所示:

    运行程序:main.m

    车1:

    车2:

    车3:

    其余结果可自行测试。

    下面,我们对维纳滤波之后的图像质量进行实际的分析。

    运行程序:main_pnsr.m

     

    图1                                                           图2

     

    图3

           注意,在程序main_pnsr.m中

     

     

    上面的图中:

    图1:参数为LEN=30,Motion=30

    图2:参数为LEN=30,Motion=38

    图3:参数为LEN=30,Motion=20

          从仿真结果可知,通过维纳滤波之后,图像的质量得到了明显的提升,和我们肉眼看到的结果一致。

          当图像处理端定义的运动模糊模型参数和实际模型完全吻合的时候,图像具有较好的滤波特性,而两个参数出现偏差的时候,滤波效果较差。这个是维纳滤波的一个缺陷,

         在分析另一个缺陷:

         缺陷分析:

         打开main_test.m

          由于在实际中,进行维纳滤波的模块都是固定参数的,但是手机拍摄输入的抖动程度是不一定的,那么这个时候,会导致某些程度的抖动,系统无法正常工作。我们对这种现象进行测试,效果如下所示:

           设置模糊参数LEN=5,运动模型参数motion=10。

          很明显,当两个参数不一致的时候,滤波效果比较差(注意,在实际中,我们不能直接使用PSF这个参数,因为这个参数仅仅在图像源)。

           设置模糊参数LEN=15,运动模型参数motion=10。

     

         假设LEN和motion参数完全相同,这个时候,我们又需要对维纳滤波的参数进行设置,

    假设LEN = Motion =50;然后设置不同的参数:

    0.1:

    0.01:

    0.001:

    0.0001:

    0.00001:

    0.000001:

    即,参数的不同,会对最后的滤波效果有较大的影响。

     

          通过上面分析,使用维纳滤波的时候,由于同时需要控制两个参数,这就大大增加了系统滤波的参数控制难度

          注意,在很多现有资料中,代码都deconvwnr(Ipsf,PSF)这么写,其实这么做是不完善的,因为PSF是在图像源中加入抖动的时候产生的。实际中PSF的具体值是未知的,只能知道其维度。

          所以,直接使用维纳滤波具有很大的难度。这里我们选择逆卷积+自适应参数控制的方法进行设计。

    改进算法的实现:

    % 参数自适应识别

           这里,我们首先需要引入图像模糊度的概念(图像模糊度的参考论文很多,但是我这没发现利用图像模糊度和去抖动滤波的资料,所以我这里将这两种算法进行结合)

           图像模糊度,这里我提供的文献如下所示:

         

    首先,我们打开这个文件夹,运行程序,选择不同的图像进行测试,这里,我们随机的选择三个图像来测试。仿真结果如下所示:

     

     

          从上面的仿真结果可知,通过对不同的图像进行测试,我们都可以计算其模糊度来区分该图像的模糊程度,从而选择一个合适K值。

          这里,我们发现,对于设置不同的模糊度LEN,其值差不多都是0.8左右最小,最大到0.9左右。因此,我们设置如下的对应关系:

       

    即通过计算模糊度,然后根据不同的值,输入进入逆卷积滤波。

     

     

     

     

     

    改进后的算法流程如下所示:

     

    左图是原始的算法,有图是本文介绍的改进后的算法(看了一些资料,貌似都没这么干)

          通过加入模糊度计算之后,我们进行仿真,分别设置抖动程度为

    10:

    10:

    50:

    100:

    从程序上看,改进后的算法:

           其通过对输入模糊图像的模糊度估计,得到K值,而INIIPSF是全1的初始值,因此,整个模型,只需要输入模糊图像即可,而不需要进行其他参数的人为输入。

           同时,我们对改进后的算法,计算PNSR。

    main_psnr1:输入模糊程度相同的情况,LEN = 50;运行,获得如下的曲线:

     

    main_psnr2:输入模糊程度随机的情况,LEN = 20~100之间随机变化;运行,获得如下的曲线:

     

    这个是对同一个场景下的不同抖动程度的仿真,通过分析,可知,对于任意随机情况下的抖动,系统都能够自动的获得加好的去抖动效果。

     

    关于论文的这个部分内容书写提纲:

    1.介绍抖动模糊的一些理论知识——运动模糊

    2.介绍维纳滤波和逆卷积滤波的理论知识

    3.对维纳滤波进行仿真分析,分析其优势,缺陷

    4.根据存在的缺陷,给出本问题的算法

    4.1模糊度的介绍(具体参考我发你的资料)

    4.2根据模糊度得到逆卷积滤波参数

    4.2仿真分析

    5将我们的这个去模糊算法,引入到你的模型中进行测试,分析性能提升了多少。

    展开全文
  • 去抖动 改进的去抖动实现 在这里发布了有关博客
  • 基于openCV的视频去抖动、稳像处理,效果比较明显,有参考价值
  • 视频编码旨在减少视频数据内存在的各种冗余,视频去抖动的目的是消除视频拍摄过程中所产生的画面抖动。本文针对视频编码和去抖动两个方面的工作展开相关算法的研究,通过设计高效的视频编码算法和去抖动算法,实现对...
  • 利用verilog代码实现FPGA中的按键去抖动,资源不需要积分,希望对大家有用。
  • 行业资料-电子功用-基于LCOS的图像去抖动电路结构
  • 去抖动 微小的异步去抖动器 npm install debounceify 用法 const debounceify = require ( 'debounceify' ) const debounced = debounceify ( async function ( ) { console . log ( 'Running...' ) await new ...
  • 针对OCT视网膜三维图像因抖动产生的扭曲变形问题,提出一种基于曲线拟合的OCT视网膜三维重建图像去抖动方法,即通过预处理提取OCT视网膜图像的边界,再利用最小二乘法曲线拟合来计算各帧切片图像的偏移量。...
  • 视频去抖动效果展示

    2020-11-05 21:38:34
    视频去抖动算法 视频防抖动算法 防抖主要分为两大步骤: (1) 运动估计,找出最优运动向量 (2) 运动补偿,根据运动向量补偿当前帧,去除抖动。 在计算的过程中又可以和其他方法结合起来,比如帧间去噪,公用...

    视频去抖动算法

     

    视频防抖动算法
    防抖主要分为两大步骤:

    (1)    运动估计,找出最优运动向量

    (2)    运动补偿,根据运动向量补偿当前帧,去除抖动。

    在计算的过程中又可以和其他方法结合起来,比如帧间去噪,公用buffer.

    模型如下:


    防抖算法的核心显然就变成了运动估计,即求(x’,y’)。收罗下常用的方法有:

    (a) 灰度投影法

    (b) 块匹配法

    (c) 位平面匹配法

    (d) 边缘匹配法

    (e) 特征点匹配法

    针对这些方法,稍后介绍下。

    (a)灰度投影法是一种基于整幅图像的方法,前后帧之间最终找到一个运动适量,这是最简单的方法,如果图像中有小物体的位移,这种方法的效果将非常糟糕。

    大致流程为,计算前后帧对应的灰度投影图,其实就是一维向量,针对横向和纵向的向量,分别计算xy两个方向上的全局运动向量。在一个给定的移动范围内,使两帧对应的灰度投影图的差异最小即可。

    由于太简单,用处不大,就不贴code了。

    利用该方法也可以做一些优化,比如利用局部方法,将图像分成一些小区域,然后再进行防抖处理,就像局部二值化一样。我的目标是:像264压缩一样,找到局部最优的精度高的运动向量。

    (b)块匹配法

    块匹配算法的思想是,将一帧图像分割为 或者是更为常用的 像素大小的许多互不重叠的子块(例如32*32),并假定子块内所有像素的运动向量都相同。然后,在设定的搜索范围内,当前块与前一帧中对应的块相比较,基于某种匹配准则,找出最佳匹配,得到当前块的替代位置或相应的运动向量。

    展开全文
  • 具有滚动去抖动的选项,或在最后一次滚动事件后的指定时间触发回调函数。 灵感 默认油门使用 如果当前正在运行,则限制滚动事件并防止触发回调。 老的: window . addEventListener ( 'scroll' , customFunc , ...
  • 51单片机按键检测并去抖动的C程序。绝对可以用
  • 016.C#VS2017利用定时器去抖动问题.rar
  • 具有去抖动调整大小的选项,或在上次调整大小事件后的指定时间触发回调函数。 灵感 默认油门使用 如果当前正在运行,则限制调整大小事件并防止触发回调。 老的: window . addEventListener ( 'resize' , ...
  • 图像增强算法之去抖动算法

    千次阅读 2019-09-28 16:28:53
    图像增强算法之去抖动算法 对LCD面板的色彩显示能力,通常用在每一种色彩通道上,液晶面板能显示灰度的位数来加以描述。 LCD 的每个点通过R、G、B 三通道进行显示,首先影响色彩位数的是LCD 所使用的驱动IC 的不同...
  • 抽象的、去抖动的窗口事件。 允许您侦听事件发射器而不是 DOM。 安装 npm i windowsill --save component install ayamflow/windowsill 应用程序接口 窗台(事件,选择) 工厂返回一个 sill 对象(事件发射器响应...
  • 去抖动承诺 创建 Promise 返回函数的去抖动版本 安装 npm i -S debounce-promise 使用示例 var debounce = require ( 'debounce-promise' ) function expensiveOperation ( value ) { return Promise . resolve ...
  • 测量两个引脚之间的上升和下降去抖动持续时间。 最大去抖动持续时间为上升或下降4秒(两个信号都可以保持高电平的时间没有限制)。 防抖动持续时间必须大于1us,并且持续时间超过2us的精度为+/- 1个时钟(20.7ns)...
  • * S接B S 接A 悬空时间 S接A振动 S悬空时间 接 B振动 开关去抖动电路
  • 经典去抖动程序---

    2009-12-11 22:34:32
    经典去抖动程序 RS触发器实现; -----------------------
  • 针对无人机在航拍大场景对象进行三维重建时因抖动产生的图像模糊现象,以及二维图像序列经运动恢复结构SFM后得到的点云较为稀疏,可视化差等不足,采用去抖动模糊算法恢复模糊图像的原始图像信息,然后在运动恢复...
  • 去抖动输入装饰器 装饰器可轻松创建去抖动的React输入 安装 安装: > npm install --save debounce-input-decorator 用法 您可以将此装饰器应用于DOM元素或任何React组件,只要它接受onChange和value属性即可。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,765
精华内容 17,506
关键字:

去抖动