慢动作频闪怎么解决_监控画面LED闪烁、黑条纹滚动,工程师教你解决办法

在极少数场景安装摄像机后,可能会遇到这种情况:珠宝店安装的摄像机画面有滚动的黑色条纹,工地监控PM2.5的LED屏上面的数字快速闪烁,地磅或者称重的LED仪表盘数字看不完整。遇到这种问题大家可能会被愣住,这是摄像机问题吗?怎么解决呢?

6e445cac2217ec2ecfb50edcd6f9ede0.gif

LED数字显示不完整

f370ab8112bcac29d113640236ad199e.gif

LED数字闪烁

60601a453d23c0bfeccef7ffc47e391b.png

黑条纹滚动

为什么会出现闪烁?

上述介绍的LED显示不全、LED跳动和黑条纹滚屏,这三种现象我们称之为频闪,频闪是一种物理光电成像现象,是一种在特定监控场景下才会出现的现象,不是摄像头损坏导致的。我们测试8个品牌的摄像头在特定监控场景下都会出现此类现象,下面介绍下频闪原因:

先了解:交流电直接供电的照明灯

220V交流电供电电压变化频率是50Hz,在能量上就表现为10ms为一个周期,也就是灯的闪烁频率。

211013c5ac30b95b8c998f53ae326e3d.png

在了解:LED数码管和显示牌

LED画面点亮方式基本都是动态扫描,即不能瞬间将需要显示的内容全部点亮,存在一个扫描周期的概念。

7de29f7f64247d9840730a0b9d69f4c9.png

最后了解:摄像机曝光机制

摄像机默认是自动曝光+逐行曝光方式,监控环境亮度很高时,为保证画面效果,摄像机会权衡降低增益和曝光时间(快门),当快门降的很低的时,每一帧拍摄的画面都曝光不足,从视频上来看就表现为类似文章开头描述的黑色条纹或LED闪烁现象。

2c6f424a22ebab6f218018d53b9d140c.png

形象一些说,就像你走在大太阳下(光照太强),眼睛(摄像机)会眯成一条缝(快门降低),减少光线进入(曝光量)。这样的话,太阳你是看清了,但天上飞的飞机你就看不到了(因为你眼睛眯了缝,导致飞机反射的光线进来的太少了)。就是这个道理,所以遇到问题后知其所以然,然后解决掉问题。怎么改善呢?

如何改善频闪现象?

首先大家切勿心急追求一锤子搞定,这个问题不是一个开关可以搞定的,需要尝试不同的方案。下面给大家介绍优化的办法:

1 、调整摄像机角度

摄像头的安装角度影响着监控画面的亮度,如果监控画面中有部分区域亮度很高,其他区域亮度较低,可以尝试调整角度,减少亮区,避免画面过亮,从而提高曝光时间。

e7df7c3842e0a3639afa18cdac138481.png

2 、设置区域补偿

如果摄像头不易触及,则可以采用区域补偿的方式调高摄像头的曝光时间,进而改善频闪现象。以下是某酒店监控效果的改善效果:

区域补偿设置方法:进入摄像头的web管理页面->设置->摄像头->画面显示->区域补偿->自定义,如下:

60b369acaf98e45a2437b4cb0c79e0cf.png

自定义选中画面中较暗区域进行补偿,提高曝光时间:

809cb5f1f2c3cc716de5fb09fff18139.png

区域补偿后画面亮度整体会提高 建议结合改善后的实际效果进行多区域尝试和选择

3、利用遮光纸

如果调整角度和区域补偿没有改善,并且需求是看清特定的LED屏或者数码表,其余区域或者物体不是主要目标。则可以尝试给摄像头镜头前贴一个黑色遮光纸,相当于增加了一层滤片来降低摄像头的进光量,从而提高曝光时间,改善频闪现象。

3b0ae84f51f9858ddcebe0dc78dd8c0a.png

帖遮光纸改善的效果

遮光纸有多个种类,透光度也存在差异,推荐使用窗户遮光纸,透光率在80%。遮光纸可以剪成圆形片,略大于摄像机的镜头,粘胶贴在镜头前方。如下:

c96f7af108488249a5464d616f3101f3.gif

使用遮光纸前最好先裁剪为合适尺寸,再粘贴在镜头边缘 切勿用遮光纸将整个摄像头前面板遮挡住

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您的STM32单片机屏幕一直闪烁,可能是因为您的程序中使用了循环延时的方式,导致CPU一直忙碌而无法及时刷新屏幕。为了解决这个问题,可以使用STM32的定时器中断来实现LED闪烁,从而释放CPU资源,让它能够及时地刷新屏幕。 以下是使用TIM中断方式实现LED闪烁的示例代码: ```c #include "stm32f10x.h" void TIM2_IRQHandler(void) // 定时器2中断服务函数 { if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) // 检查是否发生了更新事件 { static uint8_t led_state = 0; if (led_state == 0) { GPIO_SetBits(GPIOC, GPIO_Pin_13); // PC13输出高电平 led_state = 1; } else { GPIO_ResetBits(GPIOC, GPIO_Pin_13); // PC13输出低电平 led_state = 0; } TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 清除中断标志位 } } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 使能GPIOC时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2时钟 // 配置GPIOC.13为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); // 配置TIM2 TIM_TimeBaseStructure.TIM_Period = 999; // 自动重载值 TIM_TimeBaseStructure.TIM_Prescaler = 7199; // 预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 使能更新中断 TIM_Cmd(TIM2, ENABLE); // 启动定时器 // 配置NVIC NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); while (1) { // 空闲循环 } } ``` 在上面的代码中,我们使用了定时器TIM2,并把它配置为1ms的定时器。在定时器中断服务函数中,我们通过改变LED的状态来实现LED闪烁。由于使用了中断方式,CPU不会一直忙碌,从而可以释放CPU资源,让它能够及时地刷新屏幕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值