Demosaic Comparison
进入公司2个月多了,对于ISP和Demosaic才刚起步,赶紧把CNN掌握好,做出点工作来吧!
总体来说, nnr和sht直接插值,锯齿感太强,Lu和NAT的方法效率不行,然后感觉AP和SA的PSNR虚高,实际效果不行。可以考虑测一下CPSNR和CIE Lab或者锯齿等其它指标。
下面比较一下AP[1], SA,LCC1和DLMMSE[2], RI[3]的结果。
[1] SA, http://www.csee.wvu.edu/~xinl/demo/demosaic.html
[2] DLMMSE, Zhang L, Wu X. Color demosaicking via directional linear minimum mean square-error estimation[J]. Image Processing, IEEE Transactions on, 2005, 14(12): 2167-2178.
[3] RI, http://www.ok.ctrl.titech.ac.jp/res/DM/RI.html
结果总结
总体来说,这些方法都在大部分地方插值准确,肉眼不容易区分,都没有发现有锯齿等明显不和谐区域的出现。主要是在变化剧烈的边缘和光亮变化强的区域出现Artifacts。时间上以SA、AP、LCC1、RI占优,效果上以DLMMSE和RI最优。
从实现来说LCC1是简单高效的,AP做了一个映射也是可以的,DLMMSE主要做了PCA的分解,SA是有迭代的求解,RI有待进一步学习。
ImageJ
看了不少的论文和代码了,及时地来总结一下吧,马上又要开展对于DL的学习了。先来ImageJ的吧?把JAva各个类和用例都看了,然而并没有派上用场,所以应该吸取教训,先学足够的,马上就用。不然看完也没有机会用,看完也用不上,看完也还是不会用,对于CODING这样的事情来说就是实用至上,不断使用行动,付出并成为一种习惯,从而变成一种轻松的反射或者习惯,最后培养成为爱好。ImageJ主要是一个科学图像的小插件,由JAVA框架开发,可以不依赖系统,自带JRE。一般分为MARCRO,SCRIPTS等,做些命令脚本批量处理之类的。系统自带功能包括图像基本操作、处理和分析,强大之处在于用户可以开发插件Plugin快速量身定做图像处理工具。
Plugin分为普通plugin,图片filter plugin以及堆 stack plugin。先setup了,获得指定图片类型后,然后用run()方法对读入的图片进行处理。总体还是看一下一本图像处理ImageJ实战和ImageJ手册吧,要用就回头去看一下。现在先放一放ImageJ吧,主力还是在Matlab和MatConv,高层的调用可以帮助开发者在思维和方法层面上更专注,不然用c和c++这样的还是需要花费力气在数据结构和指针,语言组织上,确实吃力不讨好的事情。
ISP
再者说一下关于ISP的流程吧,进来后发现组里是做相机的,包括从硬到软的各个层面,硬件->FPGA->嵌入式->图像算法->IQ等等。这里说一下相机出图的ISP流程,从RAW到用户看到的JPEG: RAW->BLC->LSC->AWB->DEMOSAIC->DENOISE->CC->GAMMA->JPEG,里面每个算法和相机原理都是进来才学习了解到的。希望对以后有用。
Demosaic
然后回到今天要记录的重点,Demosaic的papers和学习总结:首先看了Comparison和Survey这两篇关于去马赛克发展的重要文章,科普了不少要点:比如说如何用空间相关信息和谱间相关信息来恢复Downsample后的信息,讲述了主要包括空域和谱域的方法,color ratio and color difference的基本假设。空域上利用插值,bilinear以及梯度适应的adaptive gradient interpolation,还有转到其他频域如傅里叶和小波上面去做滤波的,根据不同频段的相关性来进行近似恢复。这里着重说一下影响力比较高的文章,首先是Alternating Projection:将谱间的强相关性信息映射到一个POCS(Project onto convex set)里面,然后求解convex问题得到一个较优的像素解来作为插值。然后是Succesive Approximate是将谱间差值的difference变成一个由局部迭代成局部最优的过程,先从简单的插值后,然后迭代更新color difference从而到达局部较优的位置。SSD是利用增强自相关性,还没仔细了解。还有利用非局部相似块的方法,如定义Non-local Similarity,如果它表达的相关性(梯度小)比当前块强,则用该块作为当前块的插值结果。然后我老板的两个比较突破性的论文:DLMMSE提出了去马赛克噪声,然后引入去噪模型,转换成求解最优color difference的方法,里面有些数学证明还待细看,该工作直接把PSNR提高了5db。后来的LDI_NAT也是经过LDI的梯度插值后,然后使用PCA的方法分解构造出sparse模型,从而去掉artifacts. 再后来的方法就包括一些sparse模型,dictionary learning,tv等,还有Tokyo Insitute 的RI方法,利用残差的方法,快速有效进行去马赛克。
CNN
后面用凯爷的网络跑了一下CNN的结果,目测要比Tokyo Institute的RI要好,这里用的是5层卷积神经网络,使用柯德IQA的库中500多张图片作为TrainingSets,Kodak的24张图作为TestSets,使用的是MatconvNet的框架。