Local dimming algorithm in matlab

LED局部背光算法的matlab仿真 

       最近公司接了华星光电(TCL)的一个项目LCD-BackLight-Local-Diming-Algorithm-IP ,由于没有实际的硬件,只能根据客户给的论文 算法进行调研,评估和确认。即先理解论文的算法,再用MATLAB或OpenCV仿真,再通过视觉或客观图像评价指标评估算法效果,最后通过对几种论文算法的实验仿真效果分析比较确定一种算法,作为fpga实现。最大感触是得搞清楚实际情况再行动!

一  论文算法原理

     论文题目为<< Backlight Local Dimming Algorithm for High Contrast LCD-TV>>,我一般看英语论文先用excel表格记录论文编号,题目,背景,关键词,主要方法,缺点(可以创新的地方),结论等核心点,接着看文献顺序为:摘要,结论,实验,着重看论文算法(准确理解,很耗时),若很闲则会看Introduction。当然,这次对这个算法的改进是多次,每次蹦出一个想法就改善算法,主要有三点:一是多用参数化定义,提高算法移植性和通用性。二是多想办法减少重复劳动,如在一个窗口中一次显示多个参数取不同值的结果,这一点很重要,以后多用。三是,一个算法的改进周期很长,直接方法是看高手的写法,而且得多次对比和看文档书籍才有提升,而不是成谜自己的小成果。

下面直接给出算法整体框架:

Local dimming algorithm in matlab

从上图可以看出整个算法分为四步,LED亮度强度计算,暗区域增强,空间滤波器,时间滤波器。注意点1:算法的仿真是放在FPGA上通过对LED的亮度调节,即整个算法是对LED块的分块的亮度进行处理,由于没有LED等实际硬件,本次仿真是对图像分块后的每个图像块亮度强度进行处理。注意点2:算法的实验是进行视频仿真,而MATLAB主要是进行图像处理,故本次时间滤波器的处理,这一步包含当前帧和上一帧,通过用potplayer软件截取一帧视频图像,方法如下:

第一步是视频素材下载网站:

视频下载网站(水印)
https://www.vjshi.com/watch/6162152.html
视频素材下载(无水印)
https://mixkit.co/free-stock-video/nature/

第二步是PotPlayer的截取视频的一帧图像:在用potpalyer播放视频时,快捷键crtl+G打开连续截取画面,按照下面的12345步骤即可成功截取想要的两帧图像。

Local dimming algorithm in matlab

论文算法的参数如下表格所示:

Local dimming algorithm in matlab

上面的参数在第一步到第三步都会有所涉及,这里提前给出。

(一)LED亮度强度计算

1.算法介绍

Local dimming algorithm in matlab

Linit(n)为第n个LED块的初始亮度强度,第一步的输出;LMAX可允许的最大LED亮度强度水平;TL 是一个预定义参数,用来控制局部调节水平,由表1可知为0.0625;PNUM(第n个图像块的总像素数量);

Hn(i)是第n个图像块的直方图;W(i)是预定义的权重向量,论文里为变量i的平方。

2.MATLAB代码实现

从上面公式1可知,算法整体为两项中取最小值,第二项有点繁琐,那就从第二项开始:第二项的TL,Pnum都很好计算,一个为常数0.0625,一个为图像块的总像素数,即图像的尺寸M*N,图像行列的乘积;

第二项中的图像块直方图和权重W(i)的乘积的累加和需注意,图像块的直方图怎么实现,若是调用imhist仅仅是显示直方图,而在这里明显不对,故需要查资料弄懂图像的直方图的含义,通过看<<数字图像处理>>这本书,明白图像的直方图:对应灰度级的像素数。而MATLAB怎么表示,通过在MATLAB中搜索help imhist和不断看相关函数发现了histogram函数。在MATLABhelp文档中,知道了一种用法可以表示图像某个灰度级的像素数:h = histogram(In,256);counts=h.Values ;通过这两行代码把第n个图像块的直方图搞定了,那么公式1则轻松表示出来了。故对公式1的处理关键:拆分,弄明白直方图的含义,通过经典的数字图像处理书籍和matlab官方的文档,准确理解直方图含义。由于后面的步骤要调用这个结果,故把这一步封装成函数,调用很方便。代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfzwp.html