细说raw图像格式


有关位深度

转:D300Raw格式14bit与12bit的粗浅比较
未经许可转载了两位网友的精彩回答,主要担心网站挂了,望见谅!

回答1:

LZ这样不能比较12位和14位的差别!

14位和12位的差别就是一个颜色点可以用更大的数据表示。

计算机的颜色空间是RGB,也就是每个点包括红、绿、蓝三个分量。位数就是每个分量在计算机系统中占用的空间。

普通JPEG是8位,每个分量只能(0~2的8次方-1),是255个级别。RGB一共可以表示的颜色数量是:16,777,216种颜色。

12位的是(0~2的12次方-1),每个分量是4096色。一共可以表示68,719,476,736种不同的颜色。

14位的是(0~2的14次方-1),每个分量是16384个级别。一共可以表示4,398,046,511,104种不同的颜色。

在RAW文件转换为8位的JPEG的时候,颜色数量会减少,程序会根据各自的算法,把12或者14位颜色转换为8位,也就是说在14位的颜色中平均262,144个颜色只能用8位文件中的一个颜色来替代。

值得注意的是,12和14两个数字是在指数上增加的,14位颜色数量是12位的64倍!!

为什么我说LZ这样比较不出来呢?

事实上8位的色彩,也就是16,777,216种颜色很多显示器都不能完全显示,手机现在主流是26万色,这个26万精确的数字是262,144,是6位颜色。

其实也不完全是显示器的原因,液晶显示器是数字信号,因此如果生产的时候是8位的那么就只能显示8位。

而CRT基于模拟技术来显示的,他通过线圈加上连续高压让电子束偏移来实现的,因此理论上,CRT可以显示无数多的色彩!

有一个很关键的问题是操作系统,32位的Windows系统只能支持8位的颜色,你可以在你的控制面板里面看看,显示属性里面你只能选择16位或者32位(32位是整个颜色点的容量,三个RGB8位的分量是24位,Windows的颜色系统还有一个Alpha透明通道,也是8位,加起来是RGBA,占4个字节,32位。),也就是你无论多少位拍摄的照片,最终都会由显示驱动程序简化成8位来显示。

另外值得一提的是,目前普遍认为人眼能够分辨的颜色极限数量差不多就是1000万色,略微少于8位颜色,因此,在Windows中,8位色彩被称作“真彩色”。

其实RAW能够拥有这么多颜色的优势是图片处理,尽管那些颜色显示不出来,但是他是事实存在的,你可以使用软件来决定着14位的颜色如何被映射成8位,相当于你可以从RAW那么多颜色里面最终挑选出你需要的16,777,216中颜色转换成JPEG。这个选择过程在你调整RAW的曝光等的时候有软件来决定。比如你增加曝光补偿,相当于把原来那么多颜色比较亮的部分挑选了出来。

因此如果你不需要后期编辑,那么8位的JPEG就行了,反正多了显示器也显示不出来。

回答2:

你这样说也是正确的,你说的是14位的颜色数据是如何来的。这些数据是相机的A/D转换器转换来的。因为CMOS输出原始的电压信号,该信号和CMOS接受到的光强度成线性关系,斜率(放大倍率)就是ISO。 这个电压信号是个模拟信号,他随光线强度无级变化,要存入储存卡必须是数字信号,那么模拟->数字就牵扯到精度问题,则有了12位和14位的差别。 你可以设想,如果只有一位的A/D转换器,也就是一个RGB颜色分量转完了只能是0或者1,而12位可以0-4095。 保存在计算机上的文件就是这些模拟量全部转换位数字量后的结果。但这些数字量如何在只能显示8位颜色的显示器上,那还全靠软件。因此,不同的软件解码RAW的效果都不同。至于说亮部或者暗部的细节,软件的影响很大,RAW文件包含的细节比你在屏幕上看到得多。一般你只能减少曝光、减少饱和度,这样可以比较明显地看到亮部和颜色饱和处的细节。相反,增加曝光和饱和度,可以看到暗部和低饱和度区域的细节。 sRGB和Adobe RGB只是JPEG的色域,和RAW文件没有关系。 另外TIFF可以保存8位或者16位的颜色,也就是说,不管是D90的12位RAW还是D300的14位还是D3X的16位都可以无损的转换为16位TIFF。你可以看到,Adobe Lightroom就是把TIFF格式作为中间格式的,不过占用的空间有点夸张。

回答3:

关于RAW数据无损压缩这个过程可以分两步理解。即:CMOS=>未压缩RAW=>无损压缩RAW。

1)RAW数据采样于CMOS,此时12bit还是14bit的设置影响采得的数据量。采样所得结果即为无压缩RAW。

如果选了12bit,相比14bit损失的2bit信息是永远回不来的。这点应该不难理解。或许可以在后期处理过程中放到更大的容器中,但是半瓶水不会因为杯子大了就变为一瓶水。丢掉的细节就是丢掉了。

2)数据无损压缩,指的是,压缩后的RAW文件能完整解压出无压缩RAW来。可以将其理解为类似zip压缩,可以解压得到完全一样的原文件。这里的无损,指的是压缩前和压缩后,而与被压缩的文件本身内容是什么毫无关系。12bit的RAW,经过无损压缩不会变成11bit,解压后也不可能变成13bit。

作为对比,可以参照jpeg的有损压缩。一个位图文件经由jpeg有损压缩后的图像再也无法还原成位图那样清晰。细节经压缩即为永久性丢失。而且jpeg的压缩损失是叠加的,比如从一张sRGB的jpeg转换到一张aRGB的jpeg,细节会更少。


<think>嗯,用户要求提供D435i深度相机的标定方法和步骤。从引用内容看,用户应该是在Ubuntu系统下使用ROS环境进行标定工作,需要具体可操作的指导。 用户可能正在搭建机器人视觉系统,需要精确的深度数据。考虑到D435i是RGB-D相机,标定应该包含内参标定、外参标定(如果涉及多传感器)和深度校准三个核心部分。引用[1][3]提到的Kalibr工具确实是主流选择,但需要提醒用户注意版本兼容性。 深度相机标定有几个技术难点:首先是标定板的选择,用户可能不知道必须用非对称圆网格板;其次是IMU和相机的同步问题,引用[1]提到imu_utils工具很关键;最后是深度校准容易被忽视,但实际对精度影响很大。 需要特别强调操作细节:比如标定时的移动速度控制在0.1m/s,光照条件要求,以及标定板必须占图像1/3面积等。这些在引用中没有细说但直接影响标定效果。另外用户可能分不清eye-in-hand和eye-to-hand的区别,引用[2]的案例值得参考。 用户上次询问过标定方法,这次应该是要具体实施。建议分层次说明:基础内参标定用Kalibr单目模式即可完成,深度校准需要官方工具,多传感器联合标定则涉及时间同步等复杂操作。对于新手,应该先完成基础标定再尝试高级功能。 注意到引用[3]提到docker镜像方案,这对解决环境依赖问题很有帮助,应该作为首选方案推荐。同时要提醒用户备份系统,因为编译这些工具经常会导致环境冲突。</think>以下是D435i深度相机的标定方法及详细步骤,结合ROS环境和常用工具整理: --- ### **一、标定前准备** 1. **硬件要求** - D435i相机固定于稳定支架 - 标定板:建议使用**AprilTag**或**棋盘格**(如7×6方格,边长2.5cm) - 均匀光照环境 2. **软件环境** ```bash Ubuntu 18.04/20.04 + ROS Melodic/Noetic 安装Realsense SDK: sudo apt-get install ros-<distro>-realsense2-camera ``` --- ### **二、相机内参标定(单目+双目)** **推荐工具:Kalibr** 1. **安装Kalibr** ```bash # 安装依赖 sudo apt-get install python3-dev python3-pip pip3 install numpy scipy matplotlib pyyaml # 编译Kalibr mkdir -p ~/kalibr_ws/src && cd ~/kalibr_ws git clone https://github.com/ethz-asl/kalibr.git catkin build -DCMAKE_BUILD_TYPE=Release ``` 2. **采集标定数据** ```bash roslaunch realsense2_camera rs_camera.launch rosrun kalibr kalibr_calibrate_cameras \ --target aprilgrid.yaml \ # 标定板配置文件 --bag output.bag \ # 录制数据包 --models pinhole-equi pinhole-equi # 相机模型(D435i为鱼眼) --topics /camera/infra1/image_raw /camera/infra2/image_raw ``` **关键参数**: - 缓慢多角度移动标定板,确保覆盖整个视野 - 录制时长建议60秒以上 3. **输出结果** 生成`camchain.yaml`包含相机内参矩阵$K$和畸变系数$D$: $$ K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}, \quad D = [k_1, k_2, p_1, p_2, k_3] $$ --- ### **三、IMU标定(D435i内置IMU)** **工具:imu_utils** 1. **安装工具链** ```bash git clone https://github.com/gaowenliang/code_utils git clone https://github.com/gaowenliang/imu_utils catkin_make # 编译 ``` 2. **采集静态IMU数据** ```bash roslaunch realsense2_camera rs_camera.launch rosbag record /camera/imu -O imu_calib.bag # 静止放置2小时 ``` 3. **计算标定参数** ```bash roslaunch imu_utils d435i_imu_calib.launch rosbag play imu_calib.bag ``` 输出`imu_params.yaml`包含陀螺仪和加速度计噪声参数[^1]。 --- ### **四、深度校准** **使用Intel官方工具** 1. 安装[Depth Quality Tool](https://www.intelrealsense.com/sdk-2/) 2. 调整参数: - 目标距离与标定板一致 - 检查深度图的平整度,修正深度偏移值$\Delta d$ $$ d_{\text{corrected}} = d_{\text{raw}} + \Delta d $$ --- ### **五、手眼标定(Eye-to-Hand)** **适用机械臂场景(如Kinova JACO2)[^2]** 1. 固定相机于工作站,机械臂末端安装标定板 2. 使用**ROS Easy_Handeye**包: ```bash roslaunch easy_handeye calibrate.launch \ robot_base_frame:=base_link \ robot_effector_frame:=end_effector \ tracking_base_frame:=camera_link \ tracking_marker_frame:=calibration_board ``` 3. 控制机械臂多姿态移动,自动计算变换矩阵$T_{\text{cam}}^{\text{base}}$ $$ T_{\text{cam}}^{\text{base}} = \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix} $$ --- ### **常见问题解决** - **标定误差大**:检查标定板移动是否充分覆盖视野,避免运动模糊 - **IMU数据异常**:确保静止采集时无振动,温度稳定 - **深度跳变**:更新固件至最新版本(`rs-fw-update -l`) --- **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值