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
暂无评论内容