搜索
bottom↓
回复: 105

很郁闷~再开源一个对数,线性,指数LED调光曲线获取算法

  [复制链接]

出0入0汤圆

发表于 2013-8-22 14:48:27 | 显示全部楼层 |阅读模式
本帖最后由 myqiang1990 于 2013-8-22 14:49 编辑

这个是舞台灯光LED调光对数,线性和,指数的调光曲线获取算法,生产的是PWM值,下面是资料,但是算法被我改良过的,可以生产3种曲线~~~~只要修改GAMMA值,如果伽马值是1,就是线性,如果小于1就是对数,大于1就是指数,,,,大家对照我的图,自己用delphi做一个,很简单的,只要把算法复制,在对照程序,对照图片自己弄一下就OK乐!!



  1. //////////////////////////////////////////////////对数调光光曲线生成START//////////////////////////////////////
  2. //////////////////////////////////////////////////对数调光光曲线生成START//////////////////////////////////////
  3. procedure TForm1.LightWave(a,b:string; color:byte; style:string; Gamma:Double; show:boolean; func:byte);
  4. var
  5.   PwmData: array[0..65535] of double;
  6.   //GammaData: array[0..65535] of integer;

  7.   PwmLeves:integer;
  8.   CurveLeves, i,j:integer;
  9.   Ratio, f:Double;
  10. begin
  11. //如果当前曲线为要显示指令
  12. if  show = true then
  13. begin
  14.    PwmLeves   := StrToInt(a); //求出PWM级数
  15.    CurveLeves := StrToInt(b);  //求出调光级数

  16.    //Ratio :=  (log10(PwmLeves)) / CurveLeves; //求出系数
  17.    j := 1;
  18.    //求出曲线
  19.    {for i := 0 to  CurveLeves - 1 do
  20.     begin
  21.      PwmData[i] := Power(10, (i + 1) * Ratio);
  22.      iXYPlot1.Channel[color].AddXY(i, trunc(PwmData[i])) ;
  23.     end;
  24.      iXYPlot1.Channel[color].AddXY(0, trunc(PwmData[0])) ;//画线性直线
  25.      }
  26.     //对曲线进行GAMMA纠正
  27.       Ratio := 1 / Gamma;
  28.       //GAMMA运算
  29.       for i:= 0 to CurveLeves - 1 do
  30.       begin
  31.        f := (i + 0.5) / PwmLeves * (PwmLeves / CurveLeves);//归一化
  32.        f := Power(f, Ratio);//预补偿
  33.        PwmData[i] := trunc(f * PwmLeves - 0.5);//反归一化
  34.        if((i <> 0)  and (PwmData[i] = 0)) then
  35.          PwmData[i] := PwmData[i] + 1;
  36.        iXYPlot1.Channel[color].AddXY(i, PwmData[i]);  //GammaData
  37.       end;
  38.       //显示
  39.       RGBshowstr := RGBshowstr+'/////////////////////' + Format('%s',[style]) +'_'+ '对数调光曲线///////////////////////'+#13;
  40.       RGBshowstr := RGBshowstr+'//PWM级数 :' + Format('%d',[PwmLeves])+#13;
  41.       RGBshowstr := RGBshowstr+'//调光级数:' + Format('%d',[CurveLeves])+#13;
  42.       RGBshowstr := RGBshowstr+'//伽马(Gamma)校正值:' + Format('%.5f',[Gamma])+#13;
  43.       //8,16BIT选择
  44.       if checkbox8.Checked = true then
  45.         RGBshowstr := RGBshowstr+'const u16 '+ format('%s', [style])+'_Log_8Bit_LightCurve'+'['+format('%d', [CurveLeves])+']'+' =' + #13 + '{'+#13
  46.       else
  47.         RGBshowstr := RGBshowstr+'const u16 '+ format('%s', [style])+'_Log_16Bit_LightCurve'+'['+format('%d', [CurveLeves])+']'+' =' + #13 + '{' +#13;
  48.     //存储数据

  49.     for i := 0 to CurveLeves - 1 do
  50.      begin
  51.       if style = 'Red' then    //调整曲线
  52.         PwmData[i] := PwmData[i] + Red[i]
  53.       else if style = 'Green' then
  54.         PwmData[i] := PwmData[i] + Green[i]
  55.       else if style = 'Blue' then
  56.         PwmData[i] := PwmData[i] + Blue[i];
  57.       
  58.           //判断调整后数据合法性
  59.            if  PwmData[i] >  PwmLeves then
  60.               PwmData[i] := PwmLeves
  61.            else if  PwmData[i] < 0 then
  62.              PwmData[i] := 0;
  63.            //画曲线
  64.           iXYPlot1.Channel[color].AddXY(i, PwmData[i]);
  65.           //显示数据10,16进制
  66.           if checkbox7.Checked = false then
  67.            RGBshowstr := RGBshowstr+ Format('%d, ', [trunc(PwmData[i])])
  68.           else
  69.            RGBshowstr := RGBshowstr+ Format('0x%.4x, ', [trunc(PwmData[i])]) ;

  70.        if ((i+1) mod 20 = 0) then
  71.         begin
  72.          RGBshowstr := RGBshowstr +'//'+format('%d', [ j* 20])+ #13;
  73.          j := j+1;
  74.         end;
  75.       end;

  76.     RGBshowstr := RGBshowstr + #13;
  77.     RGBshowstr := RGBshowstr + '};'+#13;
  78.     memo1.Lines.Text:=RGBshowstr;

  79.     end
  80.     else
  81.     begin
  82.       iXYPlot1.Channel[color].Clear;
  83.     end;
  84. end;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

 楼主| 发表于 2013-8-22 14:49:28 | 显示全部楼层
其实你还可以把他作为步进电机加速曲线来用~~~~一个算法能生产3种加速曲线。。。

出0入10汤圆

发表于 2013-8-22 14:51:27 | 显示全部楼层
LZ,郁闷到要把公司里的秘密都拿出来了???

出0入0汤圆

 楼主| 发表于 2013-8-22 14:52:45 | 显示全部楼层
chengtina 发表于 2013-8-22 14:51
LZ,郁闷到要把公司里的秘密都拿出来了???

这不算是秘密~~~如果我把整个软件传上来,那才是秘密~~

出0入0汤圆

 楼主| 发表于 2013-8-22 15:05:17 | 显示全部楼层
曲线斜度,改变伽马值就行了~~~估计做LED的都懂了,,一般的LED灯里面会有好几种曲线,指数,线性,对数,S型~~~

出0入0汤圆

 楼主| 发表于 2013-8-22 15:10:10 | 显示全部楼层
chengtina 发表于 2013-8-22 14:51
LZ,郁闷到要把公司里的秘密都拿出来了???

这个不算是秘密,,秘密是调光算法~~~调光算法很重要,有曲线还得加上好的调光算法,才能使LED灯柔和不闪动~~~而且亮度变化速度和LED的光线变化柔和是很难把握~~~做过LED灯的都知道~~~那种烂灯,调出来的光是一闪一闪的~~而且我要快速收光或者开光,一般的灯为何兼顾LED灯亮度的柔和(就是不闪),他们会把最低亮度到最高亮度用延时进行处理,,这样无法快速收光或者开光的~~

出0入0汤圆

发表于 2013-8-22 15:39:36 | 显示全部楼层
myqiang1990 发表于 2013-8-22 15:10
这个不算是秘密,,秘密是调光算法~~~调光算法很重要,有曲线还得加上好的调光算法,才能使LED灯柔和不闪 ...

我也调试的郁闷了,OV 5640这个摄像头模组调试弄得我痛苦不堪,曝光、增益、横纹、错位,想想头都大了。

出0入0汤圆

 楼主| 发表于 2013-8-22 15:47:17 | 显示全部楼层
Mario 发表于 2013-8-22 15:39
我也调试的郁闷了,OV 5640这个摄像头模组调试弄得我痛苦不堪,曝光、增益、横纹、错位,想想头都大了。 ...

慢慢调~~~~

出0入0汤圆

发表于 2013-8-22 15:58:33 | 显示全部楼层
标记一下,说不定以后有用!

出0入0汤圆

发表于 2013-8-22 16:09:34 | 显示全部楼层
那个软件很诱人,呵呵

出0入0汤圆

发表于 2013-8-22 16:13:59 | 显示全部楼层
MARK 一下

出0入0汤圆

发表于 2013-8-22 16:36:38 | 显示全部楼层
貌似很强大的样子

出0入0汤圆

发表于 2013-8-22 20:09:52 | 显示全部楼层
之前調光都用PWM線性去調
沒想到這麼深奧
學習了

另外Gamma值通常都如何取得?
實驗嗎?

出0入0汤圆

发表于 2013-9-3 17:43:13 | 显示全部楼层
简单的东西里有大学问

出0入17汤圆

发表于 2013-9-3 17:52:52 | 显示全部楼层
Mark一下,说不定能用上

出0入0汤圆

发表于 2013-9-3 18:41:00 来自手机 | 显示全部楼层
其它曲线能懂,S曲线是什么效果?同样想请教这些曲线用到电机调速上会有什么效果呢?外行问得有点不好意思啊。哈哈

出0入0汤圆

发表于 2013-9-4 22:50:23 | 显示全部楼层
记号一下.

出0入0汤圆

发表于 2013-9-5 09:32:05 | 显示全部楼层
如果LZ郁闷了就会开源,那我等是不是应该希望LZ天天郁闷?

还有:LZ有什么不开心的事,说出来让大伙开心一下嘛.

出0入0汤圆

发表于 2013-9-5 09:41:47 | 显示全部楼层
简简单单的东西

出0入0汤圆

发表于 2013-9-5 09:49:51 | 显示全部楼层
学习了,看是简单的LED里面的学问真心是很大@!

出0入0汤圆

 楼主| 发表于 2013-9-5 09:52:20 | 显示全部楼层
linhua770880163 发表于 2013-9-5 09:41
简简单单的东西

我这个是简单,但是如果你说做LED灯简单,那你是吹大了~~

出0入0汤圆

发表于 2013-9-5 09:56:49 | 显示全部楼层
myqiang1990 发表于 2013-9-5 09:52
我这个是简单,但是如果你说做LED灯简单,那你是吹大了~~

几年前就做了LED非线形调光实际中没有仪器支持你这效果绝对不行

出0入0汤圆

发表于 2013-9-5 09:59:49 | 显示全部楼层
linhua770880163 发表于 2013-9-5 09:56
几年前就做了LED非线形调光实际中没有仪器支持你这效果绝对不行

调光过程中RGBW的照度比列是线性的,因此PWM一定是非线性 并且一定不是对数指数什么的

出0入0汤圆

 楼主| 发表于 2013-9-5 10:09:59 | 显示全部楼层
linhua770880163 发表于 2013-9-5 09:59
调光过程中RGBW的照度比列是线性的,因此PWM一定是非线性 并且一定不是对数指数什么的 ...

所以不要说简单,,,如果你能做到每一级调光点混出来的光都没有偏色(至少不要偏那么离谱~~国内的都一个J8样,能亮就OK!),那真的是牛逼得不行了~~~国外有一家能做到(美国)~~~朋友有一台~~~他的驱动电路跟常规的一点都不一样,电流控制精度相当相当精准~~

出0入0汤圆

发表于 2013-9-5 10:18:35 | 显示全部楼层
myqiang1990 发表于 2013-9-5 10:09
所以不要说简单,,,如果你能做到每一级调光点混出来的光都没有偏色(至少不要偏那么离谱~~国内的都一个 ...

国外其实电路都很简单 国内做到也很多 好的电源+好的场效应管+ADC闭环控制 +好的预先设置的PWM表+批次一致性好的灯珠

出0入0汤圆

发表于 2013-9-5 10:20:38 | 显示全部楼层
老外的电路很少先国内的一样用恒流芯片,因为恒流芯片无法做闭环控制

出0入0汤圆

发表于 2013-9-5 10:22:08 | 显示全部楼层
谢谢楼主无私奉献

出235入235汤圆

发表于 2013-9-5 12:56:57 | 显示全部楼层
请问软件上绘制曲线的控件叫什么呢?想了解一下。

出0入0汤圆

发表于 2013-9-5 13:04:17 | 显示全部楼层
看似很深奥啊,灯光控制还需要曲线 ?

出0入8汤圆

发表于 2013-9-5 14:05:14 | 显示全部楼层
舞台灯光,mark一下

出0入0汤圆

发表于 2013-9-5 14:46:14 | 显示全部楼层
MARK一下。

出0入0汤圆

发表于 2013-11-29 16:41:58 | 显示全部楼层
同做LED舞台灯,刚入门,MARK

出0入0汤圆

发表于 2013-11-29 18:14:30 来自手机 | 显示全部楼层
我们都希望楼主天天郁闷,哈哈!

出0入0汤圆

发表于 2013-11-30 12:03:01 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-11-30 12:09:19 | 显示全部楼层
楼主在广州的话 可以交个朋友

出0入0汤圆

发表于 2013-12-6 08:01:43 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-12-6 14:00:09 | 显示全部楼层
不错,非常赞同楼主的想法。曾经也玩过LED调光,以为调PWM就行,做了才知道很多东西跟本不了解,需要学习的还很多。

出0入0汤圆

发表于 2013-12-8 20:30:51 | 显示全部楼层
最近做LED灯泡 RGB+W,负责软件的,新手,之前没做过这方面的,调色方面希望能给些建议,需要了解些什么知识,谢谢。

出0入0汤圆

发表于 2013-12-8 21:02:27 | 显示全部楼层
了解下     

出0入0汤圆

发表于 2013-12-12 21:09:37 | 显示全部楼层
你好,因为我在做LED灯(RGB+W),你那个生成调光曲线和RGB数组的是什么软件,是不是生成了RGB数组,PWM按照数组的值就能调出对应的颜色?还有对数,线性和,指数的调光曲线这些概念不是很明白,有没相关的资料呢,谢谢。

出0入0汤圆

发表于 2013-12-12 23:26:43 | 显示全部楼层
学习学习~~~

出0入0汤圆

发表于 2013-12-12 23:41:26 | 显示全部楼层

出0入0汤圆

发表于 2013-12-13 00:14:25 | 显示全部楼层
多谢楼主,收藏了先

出0入0汤圆

发表于 2013-12-18 11:57:20 | 显示全部楼层
看看大公司如何做的,才知道自己做的如何

出0入0汤圆

发表于 2014-1-9 14:51:28 | 显示全部楼层
LED调光学问特别大。

出0入0汤圆

发表于 2014-1-10 00:49:12 | 显示全部楼层
好帖子,谢谢了!!!对这方面不熟悉

出0入0汤圆

发表于 2014-1-10 09:19:44 | 显示全部楼层
貌似不错。mark一下

出0入0汤圆

发表于 2014-1-11 21:24:58 | 显示全部楼层
试过对数曲线,调光也闪烁。看来调光还需要好的调光算法啊。

出0入0汤圆

发表于 2014-3-3 17:25:16 | 显示全部楼层
正准备智能调光,收藏

出0入0汤圆

发表于 2014-3-27 15:38:09 | 显示全部楼层
myqiang1990 发表于 2013-8-22 15:10
这个不算是秘密,,秘密是调光算法~~~调光算法很重要,有曲线还得加上好的调光算法,才能使LED灯柔和不闪 ...

是的,调光算法才是最难的。

出0入0汤圆

发表于 2014-3-29 09:53:40 | 显示全部楼层
heyj6969 发表于 2013-12-12 21:09
你好,因为我在做LED灯(RGB+W),你那个生成调光曲线和RGB数组的是什么软件,是不是生成了RGB数组,PWM按照 ...

我也在做全彩的灯,大家可以聊一下。

出0入0汤圆

发表于 2014-4-22 21:16:05 | 显示全部楼层
第一个问题 就是LED灯  亮度并不是线性的 还得还原成线性 才能处理成 各个曲线

出0入0汤圆

发表于 2014-4-22 21:16:37 | 显示全部楼层
还是顶一下  开源精神

出0入0汤圆

发表于 2014-4-23 21:03:13 | 显示全部楼层
软件好强大的样子呀

出0入0汤圆

发表于 2014-4-23 21:26:35 | 显示全部楼层
很深入的样子

出0入0汤圆

发表于 2014-4-30 17:26:33 | 显示全部楼层
mark一下!

出0入0汤圆

发表于 2014-5-1 21:01:56 | 显示全部楼层
学习一个

出0入85汤圆

发表于 2014-5-1 23:22:39 | 显示全部楼层
围观并学习

出0入0汤圆

发表于 2014-8-7 01:47:36 | 显示全部楼层
看来 LZ 一直做舞台灯光

出0入0汤圆

发表于 2014-8-7 08:42:22 | 显示全部楼层
各种高大上

出0入0汤圆

发表于 2014-8-7 15:53:50 | 显示全部楼层
很深奥的说。

出0入0汤圆

发表于 2015-1-19 08:51:08 | 显示全部楼层
很强大啊,可以用来做呼吸灯了

出0入0汤圆

发表于 2015-1-19 09:06:07 | 显示全部楼层
mark,收藏下

出0入0汤圆

发表于 2015-8-5 19:24:11 | 显示全部楼层
很不错,目前遇到同样的问题

出0入0汤圆

发表于 2015-11-11 10:09:18 | 显示全部楼层
懂dephi的朋友帮帮忙,把代码搞起来共享下呗。大部分人都不懂这玩义。

出0入0汤圆

发表于 2016-1-7 16:04:44 | 显示全部楼层
这个不错!谢谢分享!

出0入0汤圆

发表于 2016-4-28 23:16:46 | 显示全部楼层
为什么你第一个数这么大有300多,那亮度不是相当高

出0入0汤圆

发表于 2016-4-28 23:42:45 | 显示全部楼层
Gamma系数怎么确定,也就是怎么样才能产生的数比较合理,怎么样才想这些数是合理的

出0入0汤圆

发表于 2016-4-29 09:17:56 来自手机 | 显示全部楼层
谢谢分享!这个好复杂,要学习

出0入0汤圆

发表于 2016-5-25 21:03:24 | 显示全部楼层
同行人  MARK

出0入0汤圆

发表于 2016-6-2 17:03:43 | 显示全部楼层
果断留名,好东西

出0入0汤圆

发表于 2016-6-2 17:05:20 | 显示全部楼层
多谢,学习了。

出0入0汤圆

发表于 2016-6-2 21:18:52 | 显示全部楼层
提出这个的,值得表扬,好好学习,但是我看得用好的灯珠,还有灯珠厂商换了,是不是要重新调试。

出0入0汤圆

发表于 2016-6-3 00:30:17 来自手机 | 显示全部楼层
赞一个,谢谢分享

出0入0汤圆

发表于 2016-6-4 20:44:07 | 显示全部楼层
LED调光曲线mark,感谢楼主分享!

出0入10汤圆

发表于 2016-6-4 23:19:07 | 显示全部楼层
我的理解是这样的,
这个控制的目的核心是为了产生彩色的光,也就是说要用曲线去弥补某些颜色的亮度不足或者是亮度太足。
换句话说,如果仅仅是单色LED灯的话,线性的控制就足够了。对吧?

出0入0汤圆

发表于 2016-6-5 21:47:49 | 显示全部楼层
Mark一下

出0入0汤圆

发表于 2016-6-8 15:06:43 | 显示全部楼层
我还以为led灯是很简单的东西...汗

出200入0汤圆

发表于 2016-6-23 22:34:16 来自手机 | 显示全部楼层
收藏,认真学习!

出0入0汤圆

发表于 2016-6-24 12:54:12 | 显示全部楼层
mark,学习一下

出0入0汤圆

发表于 2018-3-20 21:39:52 | 显示全部楼层
厉害了我的哥

出0入0汤圆

发表于 2018-3-30 08:57:37 | 显示全部楼层
原来舞台灯光这么难调

出0入0汤圆

发表于 2018-3-30 15:22:44 | 显示全部楼层
mark一下 后面好用

出0入0汤圆

发表于 2018-3-31 10:23:14 来自手机 | 显示全部楼层
Mark 正在搞led调光

出0入0汤圆

发表于 2018-4-25 12:10:37 | 显示全部楼层
mark一下: Gamma校正的快速算法及其C语言实现

出0入0汤圆

发表于 2018-5-21 20:12:04 | 显示全部楼层

mark一下: Gamma校正的快速算法及其C语言实现

出0入0汤圆

发表于 2018-6-21 10:38:56 | 显示全部楼层
楼主,delphi怎么弄,没搞过呀。。。

出0入0汤圆

发表于 2019-8-19 18:50:37 | 显示全部楼层
我是来学习的

出100入0汤圆

发表于 2019-8-19 18:55:07 | 显示全部楼层
学习了。。

出0入0汤圆

发表于 2019-8-20 08:20:52 | 显示全部楼层
做舞台灯光,广州的河东最著名了。人民大会堂的灯光都是他们公司弄的。

出0入0汤圆

发表于 2019-9-21 14:30:22 | 显示全部楼层
行业专家啊!不可小视

出0入0汤圆

发表于 2019-10-23 19:00:48 | 显示全部楼层
mark。。调光曲线

出0入0汤圆

发表于 2019-10-24 09:32:07 | 显示全部楼层
调光是需要理论结合实际,软件结合硬件才能做出好的效果的,除了电源还需要灯珠的配合,楼主很专业。
调光也是DALI和DMX最重要的功能。

出0入0汤圆

发表于 2019-10-28 15:48:54 | 显示全部楼层
可能用得上,参考

出0入0汤圆

发表于 2020-8-10 19:13:53 | 显示全部楼层
现在调试呼吸灯都有难度  

出0入0汤圆

发表于 2020-8-10 22:04:40 | 显示全部楼层
亮灯专家。  楼主,  有空再郁门一下。

出100入101汤圆

发表于 2020-8-10 23:12:18 来自手机 | 显示全部楼层
myqiang1990 发表于 2013-8-22 15:10
这个不算是秘密,,秘密是调光算法~~~调光算法很重要,有曲线还得加上好的调光算法,才能使LED灯柔和不闪 ...

lz给普及下调光算法?

出0入0汤圆

发表于 2020-9-19 10:25:35 | 显示全部楼层
MARK,LED调光曲线

出0入0汤圆

发表于 2020-9-19 13:55:53 来自手机 | 显示全部楼层
好东西,学习学习

出0入0汤圆

发表于 2020-10-9 21:27:42 | 显示全部楼层
mark 呼吸灯 mark 下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 17:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表