具体实施方式
图4是本发明的珈玛校正系统的方块图,以对一n位的视频信号(videosignal)进行珈玛校正以产生一珈玛校正值(GammaOut),该系统包含:一第一索引值产生装置410、一第一珈玛值产生装置420、一第二索引值产生装置430、一若干个临界值形成装置440及一修正装置450。
第一索引值产生(index generator)装置410由一第一索引对应(indexmapping)装置411及第二索引对应装置412所组成。第一索引对应装置411接收该n位的视频信号值(InputValue),而产生一虚拟索引值(Virtual.Index)。为方便说明,该视频信号为16位。该虚拟索引值再经由第二索引对应装置412分别获得一第一主索引值(1st_main.index)及一第一子索引值(1st_sub.index)。
图5为第一索引值产生装置410的示意图。第一索引对应装置411的伪码为:
if InputValue<8192
Virtual.Index=fix[InputValue/16]
Else
Virtual.Index=fix[InputValue/64]+384
其中,InputValue为该视频信号值,Virtual.Index为虚拟索引值,fix[]为一地板运算。第二索引对应装置412的伪码为:
1st_main.index=fix[Virtual.Index/4]
1st_sub.index=Virtual.Index-(1st_main.index*4)
其中,1st_main_index为该第一主索引值,1st_sub.index为该第一子索引值。第一及二索引对应装置411、412可由伪码使用例如Verilog、VHDL或SystemC的硬件描述语言所实现。
由图5显示,当InputValue小于8192时,是先将其除以16,再执行一地板运算而获得Virtual.Index。当视频信号值大于或等于8192时,是先将其除以64,加上384,再执行一地板运算而获得Virtual.Index。将Virtual.Index除以4,再执行一地板运算而获得1st_main.index。1st_main.index乘以4产生一第一中间值,将Virtual.Index减去第一中间值以产生1st_sub.index。
当n位的视频信号值(InputValue)为57563时,依据图5的伪码可计算出虚拟索引值为1283、1st_main.index为320及1st_sub.index为3。
图6是第一珈玛值产生装置420的示意图,其耦合至该第一索引值产生装置410,由该1st_main.index及1st_sub.index形成一第一珈玛值(SegLeftPtValue)。其包含一第一查询表格(Lookup table)421及一第一计算装置422。第一计算装置422伪码为:
Sum=0
for i=0:1st_sub.index
Sum+=LUT[1st_main.index][1st_sub.index]
end
SegLeftPtValue=Sum
SegRightPtValue=LUT[1st_main.index+1][0]
其中,SegLeftPtValue为第一珈玛值,SegRightPtValue第二珈玛值,LUT[][]为第一查询表格421的字段。
当第一主索引值为320及第一子索引值为3时,第一计算装置422读取第一查询表格421的LUT[320][0]、LUT[320][1]、LUT[320][2]及LUT[320][3]四个字段,其中LUT[320][0]所储存为10位的Output[1280],LUT[320][1]、LUT[320][2]及LUT[320][3]分别为2位的Diff[1]、Diff[2]及Diff[3]。第一计算装置422则将Output[1280]、Diff[1]、Diff[2]及Diff[3]相加,而产生该第一珈玛值(SegLeftPtValue)。
第一计算装置422并读取第一查询表格421的LUT[321][0]字段,以作为一第二珈玛值(SegRightPtValue)。当第一主索引值为320及第一子索引值为3时,由第一计算装置422及第一查询表格421可获得第一珈玛值为1004,第二珈玛值为1007。真正输出的珈玛校正值(GammaOut)则介于第一珈玛值与第二珈玛值之间。也就是1004 GammaOut 1007。
图7是第二索引值产生装置430的示意图,其耦合至该第一珈玛值产生装置420,接收第一珈玛值而分别产生一第二主索引值、一第二子索引值。其伪码为:
2st_main.index=fix[SegLeftPtVal/4]
2st_sub.index=SegLeftPtVal-2st_main.index*4
其中,SegLeftPtVal为该第一珈玛值,2st_main.index为该第二主索引值,2st_sub.index为该第二子索引值。由图7显示,是先将第一珈玛值除以4,再执行一地板运算而获得该第二主索引值。第二主索引值乘以4产生一第二中间值,将第一珈玛值减去第二中间值以产生第二子索引值。SegLeftPtVal为1004时,2st_main.index为251,2st_sub.index为0。
图8是若干个临界值形成装置440的示意图,其耦合至该第二索引值产生装置430,由该第二主索引值及第二子索引值形成若干个临界值。若干个临界值形成装置440是包含一第二查询表格441及一第二计算装置442。第二计算装置442伪码为:
Thr0=Output[2nd_main.index][0]
Thr1=Outpt[2nd_main.index][0]+Output[2nd_main.index][2]×Fac
Thr2=Output[2nd_main.index][0]+(Output[2nd_main.index][2]
+Output[2nd_main.index][3])×Fac
Thr3=Output[2nd_main.index][0]+(Output[2nd_main.index][2]
+Output[2nd_main.index][3]+Output[2nd_main.index][4])×Fac 其中,Fac为缩放因素,Thr0、Thr1、Thr2及Thr3为若干个临界值,Output[][]为第二查询表格441的字段。
当2st_main.index为251时,第二计算装置442依据第二主索引值(2st_main.index)先读取Output[251][1]字段,若其为0b00,则缩放因素为1,若其为0b01,则缩放因素为2,若其为0b10,则缩放因素为4,若其为0b11,则缩放因素为8。第二计算装置442依序读取Output[251][0]、Output[251][2]、Output[251][3]及Output[251][4]字段,以计算第一、第二、第三及第四临界值(Thr0、Thr1、Thr2、Thr3)。
图9是修正装置450的示意图,其耦合至该第一珈玛值产生装置420及若干个临界值形成装置440。其伪码为:
if(Inputvalue≥Thr3)
GammaOut=SegLeftPvValue+3
elseif(Inputvalue≥Thr2)
GammaOut=SegLeftPvValue+2
elseif(Inputvalue≥Thr1)
GammaOut=SegLeftPvValue+1
elseif(Inputvalue≥Thr0)
GammaOut=SegLeftPvValue
其中,GammaOut为该珈玛校正值。真正输出的珈玛校正值(GammaOut)则介于第一珈玛值与第二珈玛值之间。也就是1004 GammaOut 1007。图10为修正装置450运作的示意图。修正装置450对比该n位的视频信号值(InputValue)与该若干个临界值(Thr0、Thr1、Thr2、Thr3),以修正第一珈玛值(SegLeftPtVal)。当视频信号值大于或等于第四临界值时,将第一珈玛值加3,以产生珈玛校正值(GammaOut)。同理,当视频信号值小于第四临界值且大于或等于第三临界值时,将第一珈玛值加2以产生珈玛校正值。其余依序类推。
由图6及图8可知,第一查询表格421的大小为702字节(351×16/8),第二查询表格441的大小为1536字节(256×48/8),二者所使用的储存空间小于2.5K字节,远小于公知技术所需的17K字节。同时,本发明所使用的乘法及除法均可使用向左移位缓存器及向右移位缓存器,而无须使用花费许多逻辑闸的乘法器及除法器。第二索引值产生装置430、若干个临界值形成装置440及修正装置450可依据输入值对第一珈玛值进行调整,以获得较精确的珈玛校正值(GammaOut)。
综上所述,本发明因为采用二阶段查表方法,不仅可避免公知技术产生可观的误差的问题,也可改善公知技术使用许多储存空间的问题。
上述较佳具体实施例仅是为了方便说明而举例而已,本发明所主张的保护范围自应以本发明权利要求所述为准,而非仅限于上述实施例。