求一个亮度自适应的思路

2015-02-18 20:08:10 +08:00
 kokutou

Arduino 的一个组件,是用一个小芯片获得颜色信息的。
由一个白色led照射物体,然后光反射到芯片上。

这个颜色信息关键的获取地方是:

如果有光照射芯片,
在一段时间 t 内,一种颜色比如 r 会一直返回脉冲 rn ,
最后就有颜色的几个数值, rn gn 和 bn
再把它们 map 到 0-255 ,(map函数是:比如 0 - 2000 的范围,map 到 0 - 255,如果是1000 的话,map出来的就是 127左右,这样子) 就是 rgb 值了。

那么问题是:
map 要指定一个范围,
这个范围固定后,那么在反射光亮度不高,那么 map 出来的值就很小,可能就在 0-30 的样子,接近黑色。或者反射光太强了, map出来的值就太大,一直在 240以上,接近白光了。

这样这个取色就只能在一定的反射距离内,然后周围还不能太亮或者太暗。

就是这个范围怎么才能动态计算,像手机摄像机的亮度自适应一样。
求个思路~

3057 次点击
所在节点    问与答
6 条回复
Septembers
2015-02-18 20:17:39 +08:00
kokutou
2015-02-18 20:20:33 +08:00
@Septembers lux 是靠猜吧,经纬度时间等猜出外界亮度,再调整屏幕亮度,压根就没传感器。。。
这没关系啊。。。

你是认真的,么!- -
loading
2015-02-18 20:23:36 +08:00
光敏电阻不好吗?
mhycy
2015-02-18 20:37:49 +08:00
你需要的是一个信号自动增益控制(AGC)模块,但是这是需要参照物的。
对于摄像机,参照可以直接是CMOS单元产生的电压/电流强度。
那么只要稳定在一个合适的范围就对了,最高的子像素电平不超过处理上限就行。
下限就不管了,反正取的是一个固定的区间(动态范围)

对于你这个需求,首先你需要获得一个独立于最终颜色值的一个数据用于前置处理。
不然依赖颜色是无法计算的。
akfish
2015-02-18 21:03:56 +08:00
你需要在可控环境下做校准,通过实验获得传感器在特定亮度下的频率响应曲线。
至于亮度对于测量结果的影响,你可以在不同亮度条件下测量多组响应曲线,尝试拟合出频率响应曲线以亮度为自变量的函数。然后测量时先测亮度,用测得得的亮度计算响应曲线。
要么就限制使用环境,比如采样点保持黑暗,用已知的人工光源照明。

你可以去找些现成的color sensor的datasheet来看看,比如:
https://www.sparkfun.com/datasheets/Sensors/Imaging/AV02-0314EN.pdf
第5页就是响应曲线
kokutou
2015-02-18 22:54:33 +08:00
@loading 光敏电阻没光敏二极管灵敏,我用的这个传感器就是基于光敏二极管的,所以一样会有个过亮和过暗问题。

@mhycy
@akfish
感谢~
“拟合出频率响应曲线以亮度为自变量的函数” 就按这个来了~
最暗到最亮之间做很多采样点,然后做亮度适应~
调调参数我想大概就能到我要的效果了~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/171690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX