PPG Patterned Pixel Grouping Interpolation by Alain Desbiolles
很可惜,这个算法没找到文献来源,只有网上的DCRAW的代码作为参考。
1. 总而言之 算法流程与AHD的第一部分插值极其类似。
2. 也是先插出G,再插出BR。
3. 第一部分G的插值公式是一样的,区别在于AHD是插出横向竖向两种结果, 而PPG是根据插值点横向竖向的delta(G0-G2),B0-B2变化量的大小直接选择横向还是竖向插值, 即插值前已经确定好插值方向了。
4. 插出G后,BR的插值部分,AHD是直接双线性插值delta进行。而PPG也是一样的双线性,唯一区别就是3*3中定点4个点插出5个点中边缘4个点与AHD一样是双线性插值,而中心点的BR使用不同插值方式。
5.中心点BR插值方式: 沿对角线方向插值delta,同样是插值前选取方向,也是类似上述的判断准则进行,然后插值。
实现了下该算法,PC上12M图纯C代码4线程50ms,未加指令集。
该算法耗时与AHD比较仅相当于其第一个模块耗时, 并且AHD插出两种结果,PPG只插出一种,所以理论复杂度仅1/2,不过由于其中多了判断插值方向的操作,所以性能加了近乎一倍 (28ms->50ms) , 判断操作与ABS操作不知为何,CPU上性能开销很大。
而且有趣的一点在于,其BR的