Q1:sensor info
内容:通过给到的文件知道所用的配置
A1:Sensor info.txt模板如下:
30.000000f, /* Max FPS */
0, /* min line ct */
0, /* maximum line count in max fps */
0, /* maximum line count */
0, /* minimum gain */
0, /* max gain fix fps */
0, /* max gain after linear afr */
4096, /* raw image width */
3072, /* raw image height */
BGGR, /* bayer pattern */
10, //bits per pixel
mipi //1, //packed or not, packed=1, unpacked=0
0, /* crop top after camif */
0, /* crop bottom after camif */
0, /* crop left after camif */
0, /* crop right after camif */
0, //black level in 12-bit value based on spec
0, //black level under low light
0, //black level under bright light
来源:可以从sensor_lib.h中获取到
FPS:sensor最大输出帧率,对应out_info 的max_fps
Min/max line: 从sensor手册中获取到
Min/max gain: 最大增益由自己定,一般不会太大,不会超过256
Raw image width/height:raw尺寸,对应out_info里面的x_output/y_output
Bayer pattern: RAW 滤光片排列格式,对应sensor_output的filter_arrangement,一般是RGGB
Bit per pixel:sensor一般支持10bit和12bit,看寄存器配成多少bit,对应sensor_output的raw_output
Packed or not:RAW的两种格式
Crop:上下左右的裁剪,对应crop_params
Black level: 来自手册或者自己的测量,注意10bit要转成12bit,比如raw测出来的黑电平是60,转成12bit,就是多加两位,乘以四,最后就是240
建议:
建议先抓一张raw图,把raw图导入chromatix工具,多测试几种格式,确定了RAW图的格式再把sensor info.txt定下来
像黑电平,曝光行等在chromatix工具调试的过程中可以修改,并不是说写了多少就是多少
问题2:调试文件目录
1.一般来说3A 对应的是3A模块:AE,AWB,AF
2.Common 对应的是RAW域最前端的基础处理模块:黑电平(线性化),rolloff。
3.CPP 对应的是ISP中的CPP模块,主要是yuv域的降噪WNR和锐化ASF。
4.Isp 对应的是VFE模块,包括PDAF,ABF,绿平衡,坏点校正,去马赛克,gamma,color conversion,宽动态调节(LTM(注意有两个版本,都是有效的)/GTM/ADRC),肤色去噪,CAC,色度抑制,肤色增强,统计数据配置,video HDR(只支持隔行扫描HDR sensor),人脸检测等模块。
5.最常用到的就是ABF,gamma,color conversion,宽动态调节。
6.Postproc 对应的是RNR降噪参数,CAC等不常用的参数,一般不会调,用默认的。
chromatix工具最终是生成头文件的,我们当然可以跳过工具,直接去修改头文件。两者是一样的效果。
问题3:抓RAW图
手机/ipc设备拍摄raw图的方法。
回答:
手机抓raw图(传统)
1.安装骁龙相机
2.连续点击五次设置里面的红颜消除,进入高级设置
3.关闭零秒快排ZSL选项,关闭pdaf选项
4.选择图片格式RAW
5.按下拍照就是抓去RAW图了,图片保存在sdcard/DCIM/Camera或者/data/misc/camera路径下
lpc抓取raw图的方法:
1.连接usb线
2.安装total control
3.安装骁龙相机
4.用于手机抓raw图的方法抓取
Adb抓取raw图(仅适用于660以上平台)
adb shell chmod 777 /data/misc/camera
adb shell setprop persist.camera.raw_yuv 1
adb shell setprop persist.camera.preview_raw 1
adb shell setprop persist.camera.dumpimg 0
adb shell setprop persist.camera.dumpimg 131088
Tips
可以在QCamera2HWICallbacks.cpp的dumpFrameToFile函数查看具体实现过程。可能会出现抓拍到不止1张raw图的情况。
用骁龙相机抓出来的raw图是MIPI格式,而这里格式要改成packed,图片的名称中带有图片的大小。
第一次抓取raw图,设置好要重启camera或者重启应用程序。由于persist.camera.raw_yuv只有在给channel添加通道的时候才会读取,因此设置之后需要重启camera,可以重启设备或者重启应用程序。
图片路径在/data/misc/camera
问题4:头文件对应关系
详细
不同的sensor有不同的chromatix头文件,同一个sensor在不同数据流(预览,抓拍,录像)下也有不同的头文件,如何确定到底哪个生效呢?
回答
拿660平台举例,在/vendor/qcom/proprietary/mm-camera/media-controller/modules/sensors/configs路径下的xml里进行了配置。
这个位置有很多的xml配置文件,先找到这个设备的xml,比如说sdm660_camera.xml
<CameraModuleConfig>
<CameraId>0CameraId>
<SensorName>imx290SensorName>
<ChromatixName>imx290_chromatixChromatixName>
<ModesSupported>1ModesSupported>
<Position>BACKPosition>
<MountAngle>90MountAngle>
---------------
----------------
<ResolutionChromatixInfo>
<ChromatixName sensor_resolution_index="0">
<ISPPreview>imx290_previewISPPreview>
<ISPSnapshot>imx290_previewISPSnapshot>
<ISPVideo>imx290_previewISPVideo>
<CPPPreview>imx290_cpp_previewCPPPreview>
<CPPSnapshot>imx290_cpp_previewCPPSnapshot>
<CPPVideo>imx290_cpp_previewCPPVideo>
<CPPLiveshot>imx290_cpp_previewCPPLiveshot>
<A3Preview>imx290_default_preview_3aA3Preview>
<A3Video>imx290_default_preview_3aA3Video>
ChromatixName>
<ChromatixName sensor_resolution_index="1">
-------------