2022-10-16 23:44:14 [显示全部楼层]
9034浏览
查看: 9034|回复: 2

[项目] 关于tcs34725传感器,谁用过,颜色不准的问题?

[复制链接]
本帖最后由 盗版软件 于 2022-10-17 00:23 编辑

用的是tcs34725,数据读取没有问题,获得数据如下:
红色得到的原始数据是:
ct:1291        red:1095        green:103        blue:136
        c:-28946        r:217        g:20        b:26        lux:-292

计算后数据是:rgb=217,20,26,lux照度=-292?c色温-28946? 实际这个看起来没啥大问题,也是红色的,只是有点偏差,可以通过修正来解决,

第二组数据:
绿色
ct:2969        red:412        green:1831        blue:575
        c:4353        r:35        g:157        b:49        lux:2335

看起来起码他还是个绿色的,也没啥大问题,起码绿色是高的

第三组数据:
黑色
ct:58        red:15        green:22        blue:18
        c:6773        r:66        g:97        b:79        lux:16

这个问题就是来,RGB颜色值还是很高,但是照度降低了很多,难道计算时候要把照度作为一个参数计算进去吗?要不颜色不可能计算的对了,因为获得原始rgb的值小了,ct的值也变小,在乘以255后,得到换算的rgb还是挺大,就不可能出现黑色了,而白色也同样的问题!

//我总感觉这种算法就不对啊
这个计算方式实际很简单,就是通过获取rgbc四个通道的值,获得一个比例,然后乘以255,就是实际的rgb,clear通道值实际是一直大于rgb的,所有rgb/clear,最大也就是1,得到rgb最大也就是255,这个没有毛病,毛病在于这个rgb不仅仅是看占比啊,rgb=1:1:1和rgb=100:100:100他不是一个颜色啊,这个时候是不是就应该用clear的值去参与计算,问题是怎么参与呢?如果是这样那还不如直接让rgb都除以一个65535然后乘以255后在校准到标准值!这样才能正确反应颜色!另外需要再固定光源下才能准确

读取代码如下:
  uint16_t clear, red, green, blue,colortemp,lux;

  tcs.getRGBC(&red, &green, &blue, &clear);
  tcs.lock();  // turn off LED
  colortemp = tcs.calculateColorTemperature(red,green,blue);
  lux = tcs.calculateLux(red,green,blue);


  // Figure out some basic hex code for visualization
  uint32_t sum = clear;
  float r, g, b;
  String rgb_str;
  r = red;   r /=sum;
  g = green; g /= sum;
  b = blue;  b /= sum;
  r *= 255; g *= 255; b *= 255;


  rgb_str= "R:"+String(r)+' G:'+String(g)+" B:"+String(b);







盗版软件  学徒
 楼主|

发表于 2022-10-17 23:36:43

正确算法应该是:
  r= map(red,0,65535,0,255);
  g= map(green,0,65535,0,255);
  b= map(blue,0,65535,0,255);

  r *= 5.66; g *= 3.75; b *= 3.8;

  int max_value = max(max(r,g),b);
  if (max_value>255)
  {
      r= map(r,0,max_value,0,255);
      g= map(g,0,max_value,0,255);
      b= map(b,0,max_value,0,255);   
    }
  
  
回复

使用道具 举报

DFSyBM3-i4u  中级技师

发表于 2022-10-18 11:29:58

不同的环境光,色卡颜色,色卡是否标准都会影响rgb原始值。
关于tcs34725传感器,谁用过,颜色不准的问题?图1
除了在代码中校准数值,也可以尝试调整配置参数Integration Time和Gain

关于tcs34725传感器,谁用过,颜色不准的问题?图2


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail