一种动态生成LUT表的医用显示器系统及方法
技术领域
本发明涉及医用显示领域,尤其涉及一种动态生成LUT表的医用显示器系统和方法,在显示器使用过程中动态生成校正LUT表,并利用动态LUT表最终令灰阶液晶医用显示器在背光变动时能时刻保持与DICOM曲线的一致性。
背景技术
与普通液晶民用显示器相比,专业的灰阶液晶医用显示器使用DICOM标准第14部分中规定的曲线(DICOM曲线)进行灰阶校正,通过查找表(Look-Up-Table,LUT)的实现方法使得实际输出图像的灰阶变化符合灰阶标准显示函数(GSDF),从而令人眼有能力辨识每一个细微的灰阶变化。
但是,DICOM曲线并非是一条线性变化的曲线。如果液晶显示器的背光亮度发生改变时,例如由于显示器老化、温度变化或者手动调节背光亮度等原因,如果在显示器内使用静态的校正查找表(LUT),液晶显示器的输出响应会偏离标准DICOM曲线,引起图像的显示误差。严重时,可能影响医生阅读医疗影像,漏失病灶。
发明内容
针对现有医学显示器静态LUT表存在的局限性,本发明提出一种动态生成LUT表的医用显示器系统和方法,动态生成DICOM LUT表,并设计了相应的装置在医用显示器中实施该方法,能够使医用显示器的输出灰阶曲线在背光亮度变化时也能时刻符合DICOM规定,提高了医生对病灶的诊断效率及准确率。
实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种动态生成LUT表的医用显示器系统,包括上位机和显示器,所述显示器包括微处理器模块、FPGA模块、背光亮度传感器模块和液晶面板;所述上位机与显示器中的微处理器模块之间进行通信,其包括数据处理模块和色彩分析仪,色彩分析仪获取的数据传输给数据处理模块进行处理;所述微处理器模块用于在使用过程中进行LUT表动态计算,并把结果传输给FPGA模块,FPGA模块把处理后的信号输出到液晶面板;所述液晶面板的背面设有通光孔,背光亮度传感器置于通光孔上,用于监测背光亮度值。
所述FPGA模块包含2个存储区和至少一个切换模块,2个存储区分别用于存放供显示器正常使用的LUT表和动态生产的LUT表,二者构成乒乓结构,通过切换模块实现LUT表无缝切换。
一种动态生成LUT表的方法,包括以下步骤:
步骤一、在生产过程中,将显示器的背光调节至任意亮度,并点亮显示器,按照设定的时间进行老化;
步骤二、上位机中的数据处理模块向显示器中的微处理器模块发送指令,微处理器模块接受到指令后,令FPGA模块直接向液晶面板输出直接驱动电平DDL;
步骤三、反复进行步骤二,从小到大遍历所有的驱动电平DDL,并用色彩分析仪记录液晶显示屏相应的输出流明度Lout(k),其中k表示输入液晶面板的驱动电平DDL数值,k∈[0,2b-1],其中b表示显示器输出位宽(bit),即DLL总数为2b个;
步骤四、对采集到的流明度数据进行归一化处理,并将归一化的液晶屏相应的输出流明度T(k)存入微处理器模块的存储区域A中
步骤五、用最大的直接驱动电平DDL的数值驱动液晶面板,在设定的背光的调节范围内调节驱动背光的PWM波占空比,同时记录下背光亮度传感器的读数,并用色彩分析仪测量液晶面板的输出流明度,形成两者的映射表后存入微处理器模块的存储区域B中;
步骤六、在使用过程中,设定背光亮度传感器的计数值触发阈值;
步骤七、微处理器模块轮询当前背光亮度传感器的读数;
步骤八、与上一次的背光亮度传感器的读数进行比较,如果读数的变化量大于预设的阈值,执行步骤九,否则返回步骤七;
步骤九、微处理器模块根据生产阶段记录下的数据或者DICOM曲线计算公式和生产阶段记录下的数据,计算LUT表中的映射数据;
步骤十、微处理器模块把LUT表数据写入FPGA中;
步骤十一、FPGA模块接受完成所有数据后,通过乒乓结构实现无缝切换LUT表。
所述步骤九中,微处理器模块根据生产阶段记录下的数据,计算LUT表中的映射数据,具体为:
9.1根据当前的背光亮度传感器的读数lB,搜索存储区域B中的映射表;
9.2对lB临近点的亮度值进行线性插值,计算出lB对应的当前液晶面板能够输出的最大亮度l(2b-1),其中2b表示驱动电平DDL的总数;
9.3计算l(0)的值
l(0)=T(0)·l(2b-1);
9.4根据l(2b-1)、l(0)计算得到最小亮度和最大亮度对应的JND指数,分别为jmin和jmax;
其中,A~I均为系数;
9.5计算每个灰阶的JND指数步进:
9.6计算输入灰阶的JND指数:
j(i)=jmin+i·jstep,i∈[0,2b-1];
9.7计算输入灰阶的预期的校正流明度:
式中,i∈[0,2b-1],a-h、k、m均为系数;
9.8将L(i)进行归一化处理
9.9对比T(k)和T’(i)两张表,找出灰阶映射关系,具体为:在T(k)表中搜索与T’(i)最接近的数值,并将灰阶映射关系记录在LUT表中。
所述对lB临近点的亮度值进行线性插值,具体为:通过二分法搜索,当实际测得的背光亮度传感器读数x介于存储区域B记录的两个相邻的读数值a和b之间,即a<x<b,则读取a和b对应的面板流明度数值:L(a)和L(b),通过线性插值计算x对应的面板流明度。
除上述的一种动态生成LUT表的方法外,本专利还提供另一种动态生成LUT表的方法。该方法与上述方法的不同之处在于,所述步骤五和步骤六之间还包括:把JND指数对流明度数值的公式LDICOM(n),n∈[1,N]和映射表中保存至微处理器模块的存储区域C中,其中n代表JND数值,N的取值为所有显示器最大输出流明度所对应的JND指数值。
所述步骤九中,微处理器模块根据DICOM曲线计算公式和生产阶段记录下的数据,计算LUT表中的映射数据,具体为:
(9.1)根据当前的背光亮度传感器的读数lB,搜索存储区域B中的映射表;
(9.2)对lB临近点的亮度值进行线性插值,计算出lB对应的当前液晶面板能够输出的最大亮度l(2b-1);
(9.3)计算l(0)的值;
l(0)=T(0)·l(2b-1);
(9.4)从微处理器存储区域C中搜索l(0)在JND对流明度的映射表中的位置,例如实际检索到LDICOM(n)≤l(0)<LDICOM(n+1),找出Lmin实际对应的JND指数jmin
同理获取l(2b-1)实际对应的JND指数jmax,例如实际检索到LDICOM(m)≤l(2b-1)<LDICOM(m+1)此时jmax∈N+
(9.5)计算每个灰阶的JND指数步进:
(9.6)计算输入灰阶的JND指数:
j(i)=jmin+i·jstep,i∈[0,2b-1];
(9.7)通过检索存储在微处理器存储区域C中的数据,获取输入灰阶i的预期的校正流明度L(i),具体为,取j(i)的整数部分,记为n,找到LDICOM(n)和LDICOM(n+1)的数值,L(i)的计算方法如下式:
L(i)=LDICOM(n)+(LDICOM(n+1)-LDICOM(n))·(j(i)-n);
(9.8)将L(i)进行归一化处理
(9.9)对比T(k)和T’(i)两张表,找出灰阶映射关系,具体为:在T(k)表中搜索与T’(i)最接近的数值,并将灰阶映射关系记录在LUT表中。
所述(9.4)中的搜索方法为二分法,具体为:检索到LDICOM(n)≤l(0)<LDICOM(n+1)或者LDICOM(m)≤l(2b-1)<LDICOM(m+1)。
本发明的有益效果:
(1)DICOM校正LUT表动态生成,在背光亮度改变时触发,时刻保证精确符合DICOM曲线。
(2)无需再生产阶段时在不同亮度下进行多次DICOM校正,仅需进行一次液晶面板特性测量。
(3)背光亮度无极可变,不再受亮度档位限制,同时也能保证DICOM的符合性。
附图说明
图1为本发明一种实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,一种动态生成LUT表的医用显示器系统,包括上位机和显示器,所述显示器包括微处理器模块、FPGA模块、背光亮度传感器模块和液晶面板;所述上位机与显示器中的微处理器模块之间进行通信,其包括数据处理模块(上位机软件)和色彩分析仪,色彩分析仪获取的数据传输给数据处理模块进行处理;所述微处理器模块用于在使用过程中进行LUT表动态计算,并把结果传输给FPGA模块,FPGA模块把处理后的信号输出到液晶面板;所述液晶面板的背面设有通光孔,背光亮度传感器置于通光孔上,用于监测背光亮度值。
在本发明的优选实施例中,所述微处理器模块可以是单片机、ARM或者FPGA内嵌处理器中的任一种。微处理器模块需预留2或3块存储空间或者同一块存储空间的2或3个地址段(对于本发明中的第二种方案,需要预留3块存储空间或则同一块存储空间的3个地址段)。微处理器模块在使用过程中进行LUT表动态计算,并把计算结果输出到FPGA模块。
在本发明的优选实施例中,所述FPGA模块包含2个存储区和至少一个切换模块,2个存储区分别用于存放供显示器正常使用的LUT表和动态生产的LUT表,二者构成乒乓结构,通过切换模块实现LUT表无缝切换。优选地,包括两个切换模块,均与2个存储区相连。
一种动态生成LUT表的方法,包括以下步骤:
步骤一、在生产过程中,将显示器的背光调节至任意亮度,并点亮显示器,按照设定的时间进行老化;优选地,所述设定的时间为至少半小时以上,亮度设置为出厂默认背光亮度;
步骤二、上位机中的数据处理模块向显示器中的微处理器模块发送指令,微处理器模块接受到指令后,令FPGA模块直接向液晶面板输出直接驱动电平DDL;
步骤三、反复进行步骤二,从小到大遍历所有的驱动电平DDL,并用色彩分析仪记录液晶显示屏相应的输出流明度Lout(k),其中k表示输入液晶面板的驱动电平DDL数值;假定显示器的灰阶位宽为b,那么DDL总数为2b个,相应的共记录2b个流明度数据(单位cd/m2),记为Lout(k),k∈[0,2b-1],
步骤四、对采集到的流明度数据进行归一化处理,并将归一化的液晶屏相应的输出流明度T(k)存入微处理器模块的存储区域A中
步骤五、用最大的直接驱动电平DDL的数值驱动液晶面板,在设定的背光的调节范围内调节驱动背光的PWM波占空比(背光亮度的调节范围由产品规格参数决定,可以根据需求来自定义这个产品规格参数),同时记录下背光亮度传感器的读数,并用色彩分析仪测量液晶面板的输出流明度,形成两者的映射表后存入微处理器模块的存储区域B中;
步骤六、在使用过程中,设定背光亮度传感器的计数值触发阈值;
步骤七、微处理器模块轮询当前背光亮度传感器的读数,记为lB;
步骤八、与上一次的背光亮度传感器的读数进行比较,如果读数的变化量大于预设的阈值,执行步骤九,否则返回步骤七;
步骤九、微处理器模块根据生产阶段记录下的数据或者DICOM曲线计算公式和生产阶段记录下的数据,计算LUT表中的映射数据;
步骤十、微处理器模块把LUT表数据写入FPGA中;
步骤十一、FPGA模块接受完成所有数据后,通过乒乓结构实现无缝切换LUT表。
在本发明的一种实施例中,所述步骤九中,微处理器模块根据生产阶段记录下的数据,计算LUT表中的映射数据,具体为:
9.1根据当前的背光亮度传感器的读数lB,搜索存储区域B中的映射表;
9.2对lB临近点的亮度值进行线性插值,计算出lB对应的当前液晶面板能够输出的最大亮度l(2b-1),其中2b表示驱动电平DDL的总数;
9.3计算最小亮度l(0)的值:
l(0)=T(0)·l(2b-1);
9.4根据l(2b-1)、l(0)计算得到最大亮度和最小亮度对应的JND指数,分别为jmin和jmax;
其中,A~I均为系数;
9.5计算每个灰阶的JND指数步进:
9.6计算输入灰阶的JND指数:
j(i)=jmin+i·jstep,i∈[0,2b-1];
9.7计算输入灰阶的预期的校正流明度:
式中,i∈[0,2b-1],a-h、k、m均为系数;
9.8将L(i)进行归一化处理
9.9对比T(k)和T’(i)两张表,找出灰阶映射关系,具体为:在T(k)表中搜索与T’(i)最接近的数值,并将灰阶映射关系记录在LUT表中。
在上述步骤中,LUT表中每一项映射数据逐个产生,逐个写入FPGA模块的内部存储器中。为了避免动态生成LUT表时影响显示器正常显示功能,在FPGA模块中设置两个完全一样的存储器,形成乒乓结构:显示器正常使用其中一个存储器中的LUT进行校正;动态生成LUT时,数据写入另一个存储器;完全生成新的LUT以后,由FPGA模块控制,在下一帧图像进行LUT表切换。用这种方法实现无缝切换LUT表、不影响画面显示。
优选地,A~I的参数值见表一。
表一
所述系数a-h、k、m的值具体见表二:
表二
系数 |
数值 |
a |
-1.3011877 |
b |
-2.5840191E-2 |
c |
8.0242636E-2 |
d |
-1.0320229E-1 |
e |
1.3646699E-1 |
f |
2.8745620E-2 |
g |
-2.5468404E-2 |
h |
-3.1978977E-3 |
k |
1.2992634E-4 |
m |
1.3635334E-3 |
进一步地,由于映射表的离散分布,为了获取更高的精度,所述对lB临近点的亮度值进行线性插值,具体为:通过二分法搜索,当实际测得的背光亮度传感器读数x介于存储区域B记录的两个相邻的读数值a和b之间,即a<x<b,则读取a和b对应的面板流明度数值:L(a)和L(b),通过线性插值计算x对应的面板流明度:
在本发明的另一种实施例中,所述步骤五和步骤六之间还包括:把DICOM协议中第14部分的JND指数对流明度数值的公式LDICOM(n),n∈[1,N]和对应的映射表保存至微处理器模块的存储区域C中,其中n代表JND数值,N的取值为所有显示器最大输出流明度所对应的JND指数值。即仅需要截取并存储包含所有显示器最大输出流明度以下的所有数值即可。例如若液晶面板的最高输出流明度为1000cd/m2,通过检索DICOM协议中第14部分的JND指数对流明度数值的表格可知对应的JND指数为811,那么N的取值为811即可。其中JND指数从大到小排列作为存储时的地址索引,JND指数对应的流明度数值存储在相应地址的存储空间中。
在本发明的另一种实施例中,所述步骤九中,微处理器模块根据DICOM曲线计算公式和生产阶段记录下的数据,计算LUT表中的映射数据,具体为:
(9.1)根据当前的背光亮度传感器的读数lB,搜索存储区域B中的映射表;
(9.2)对lB临近点的亮度值进行线性插值,计算出lB对应的当前液晶面板能够输出的最大亮度l(2b-1);
(9.3)计算l(0)的值;
l(0)=T(0)·l(2b-1);
(9.4)从微处理器存储区域C中搜索l(0)在JND对流明度的映射表中的位置,当实际检索到LDICOM(n)≤l(0)<LDICOM(n+1),找出Lmin实际对应的JND指数jmin
同理获取l(2b-1)实际对应的JND指数jmax,当实际检索到LDICOM(m)≤l(2b-1)<LDICOM(m+1)此时jmax∈N+
(9.5)计算每个灰阶的JND指数步进:
(9.6)计算输入灰阶的JND指数:
j(i)=jmin+i·jstep,i∈[0,2b-1];
(9.7)通过检索存储在微处理器存储区域C中的数据,获取输入灰阶i的预期的校正流明度L(i),具体为,取j(i)的整数部分,记为n,找到LDICOM(n)和LDICOM(n+1)的数值,L(i)的计算方法如下式:
L(i)=LDICOM(n)+(LDICOM(n+1)-LDICOM(n))·(j(i)-n);
(9.8)将L(i)进行归一化处理
(9.9)对比T(k)和T’(i)两张表,找出灰阶映射关系,具体为:在T(k)表中搜索与T’(i)最接近的数值,并将灰阶映射关系记录在LUT表中。例如,若T’(100)与T(103)最为接近,则将灰阶映射关系100->103记录在LUT表中。
通过上述步骤,动态的生成符合DICOM曲线的LUT表。
所述(9.4)中的搜索方法为二分法,具体为:检索到LDICOM(n)≤l(0)<LDICOM(n+1)。
实施例一与实施例二的差异在于:
实施例二在生产阶段中还需要增加一块存储空间,用于记录标准DICOM曲线。
实施例二在使用阶段中,不是通过DICOM公式来计算LUT表中数据,而是通过查表和插值的方法得到LUT表中的数据。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。