its中raw的定义说明

raw总体分为分为raw, raw10, raw12,rawstats四种格式。

raw10 raw12介绍

raw10/raw12 是指pack的,要过unpack.
参考C:\android-cts-verifier\CameraITS\pymodules\its\image.py
unpack_raw10_capture
unpack_raw12_capture
最后都要转为raw16格式。

如下code,定义了unpack为uint16格式后bit的排列结构。
args中也说明了一个raw10 image的dtype是uint8 结构的。而且是pack格式的。
returns说明了unpack后是uint16格式的。

def unpack_raw10_image(img):
     """Unpack a raw-10 image to a raw-16 image.
Output image will have the 10 LSBs filled in each 16b word, and the 6 MSBs
will be set to zero.

Args:
    img: A raw-10 image, as a uint8 numpy array.

Returns:
    Image as a uint16 numpy array, with all row padding stripped.
"""

raw格式介绍

但its其实没有raw16的定义, 而替代的是raw格式。
参考C:\android-cts-verifier\CameraITS\pymodules\its\image.py
def convert_capture_to_planes(cap, props=None)

google定义的raw是什么格式呢,通过上述函数知道:
raw是unpack后的格式。
可以是raw10 unpack的,也可以是raw12 unpack的。
它的结构是:
Output image will have the 10 LSBs filled in each 16b word, and the 6 MSBs
will be set to zero.

rawstats格式介绍

这种格式是拍完raw后,经过jni层转换计算后拿到var mean值的信息。
当然its中也有保留其自己的计算var mean的方法。
这种格式比较简单, mean var 是数组的上下结构。
code如下:

def unpack_rawstats_capture(cap):
    """Unpack a rawStats capture to the mean and variance images.

    Args:
        cap: A capture object as returned by its.device.do_capture.

    Returns:
        Tuple (mean_image var_image) of float-4 images, with non-normalized
        pixel values computed from the RAW16 images on the device
    """
    assert(cap["format"] == "rawStats")
    w = cap["width"]
    h = cap["height"]
    img = numpy.ndarray(shape=(2*h*w*4,), dtype='<f', buffer=cap["data"])
    analysis_image = img.reshape(2,h,w,4)
    mean_image = analysis_image[0,:,:,:].reshape(h,w,4)
    var_image = analysis_image[1,:,:,:].reshape(h,w,4)
    return mean_image, var_image
© 版权声明
THE END
在时间中留下我的脚印
分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片