文档开发者中心
我的
|

HarmonyOS 7

RAW格式照片色彩严重失真

我在鸿蒙6/7的设备上在剪辑软件导入raw格式的照片之后会出现很严重的偏色,把照片传到其他非鸿蒙设备上也有类似的问题,这个场景不明显,如果实在外面那种大光比的场景会更明显(最右侧是原片,左侧两张照片是剪辑软件里面的画面)

点赞
2
收藏
回复
7
分享
举报
浏览103 编辑于2026-09-25 13:05北京
全部评论
最多点赞
最新发布
最早发布
做相机开发的时候遇到了同样的问题,感觉是bug,raw图的dng现有的很多显影管线都无法正确显影处理,蛮糟糕的
1
6楼回复于前天02:10 来自安徽
  • Kisssseven

    而且我发现原相机专业模特采集的dmg和camerakit采集到的dng完全不一样

    前天02:27 来自安徽
支持
5楼回复于2026-09-26 00:32 来自陕西
是这样的
4楼回复于2026-09-26 00:10 来自陕西
raw格式的照片是怎么来的,是用专业相机拍的照片吗?在非鸿蒙设备上也有类似问题是什么情况,这类照片是不是需要用什么特殊工具处理后,才能正常查看?
3楼回复于2026-09-25 18:04 来自上海
从你这张对比图看,这个问题不像是单纯的“鸿蒙显示颜色不准”,更像是剪辑软件对 RAW/DNG 的解码和色彩管理出了问题。
关键点在于:**右侧原片正常,而左侧剪辑软件导入后明显出现色偏,并且文件拿到其他非鸿蒙设备上也能复现。** 这基本可以把“鸿蒙屏幕本身显示异常”排除在主要原因之外。
你这个现象最可能发生在 RAW 解码这一层
RAW 和 JPEG 不一样,它本身不是一张已经完成颜色还原的 RGB 图片。
传感器拿到的是 Bayer 原始数据,软件需要按照 RAW 里的元数据完成大致这样的处理:
```text
RAW Bayer
    ↓
黑电平 / 白电平校正
    ↓
去马赛克
    ↓
白平衡
    ↓
Camera Color Matrix
    ↓
XYZ / 工作色彩空间
    ↓
曝光 / 色调映射
    ↓
显示色彩空间
    ↓
屏幕
```
其中任何一个环节处理错了,颜色都会明显不对。
尤其是 RAW 文件里面的这些信息不是可有可无的:
```text
ColorMatrix1
ColorMatrix2
CameraCalibration1
CameraCalibration2
AsShotNeutral
ForwardMatrix1
ForwardMatrix2
BlackLevel
WhiteLevel
CFA Pattern
```
Android 的 RAW 体系本身也是按照这个思路设计的。官方文档明确说明 RAW_SENSOR 只是传感器原始数据,颜色空间以及解释这些数据所需要的信息都必须从相机元数据中获得。
所以如果你的剪辑软件只是“把 DNG 当成普通图片解出来”,而没有正确使用这些 DNG 色彩元数据,就很容易出现你现在这种严重偏色。
 为什么大光比环境下会更加明显
这个现象其实非常符合 RAW 色彩处理链存在问题的特征。
正常 RAW 显影并不是简单做一个 RGB 矩阵转换,还涉及:
```text
传感器黑电平
+
曝光
+
白平衡
+
相机颜色矩阵
+
高光处理
+
色调映射
```
大光比场景中,高光和阴影跨越的动态范围更大,软件如果白平衡或者 Camera Matrix 使用不正确,颜色误差会被明显放大。
你这张图里面最值得注意的是机器外壳本来应该是比较中性的灰色,但剪辑软件中的版本已经明显发生了颜色漂移。这不像普通的曝光差异,而更接近**RAW 到工作色彩空间转换错误**。
 还有一个非常重要的判断
你需要区分:
```text
DNG里的Embedded JPEG预览
```
和
```text
软件自己重新解码RAW Bayer
```
很多 RAW 文件实际上同时包含:
```text
RAW数据
DNG元数据
Embedded Preview JPEG
```
相机或者系统图库显示的“原片”可能使用的是 Embedded JPEG,而剪辑软件导入后则重新从 Bayer RAW 开始显影。
这样就会出现一种非常典型的现象:
```text
系统图库看起来正常
        ↓
剪辑软件导入
        ↓
重新解析 RAW
        ↓
颜色突然严重变化
```
这也能解释为什么你看到的“原片”正常,但进入剪辑软件以后马上出现偏色。
 结合鸿蒙这个场景,我更倾向于定位到这里
如果这个 DNG 在其他设备上的专业 RAW 软件中能够正常显示,而在你的剪辑软件中出现明显偏色,那么问题基本可以继续往:
剪辑软件自己的 RAW/DNG 解码器或者 HarmonyOS 上的 RAW 解码实现
去查。
鸿蒙目前官方 Image Kit 确实提供了 DNG RAW 数据读取能力,但“能够读取 RAW 数据”和“能够正确完成专业 RAW 显影”是两个完全不同的事情。HarmonyOS 文档目前明确支持从 DNG 获取 RAW 数据。
真正决定颜色是否正确的,是后面的 RAW processing 和色彩管理。
所以如果你现在是在开发一个鸿蒙剪辑软件,我不会先去查“屏幕色彩”或者“鸿蒙是不是色彩空间有问题”,而应该优先检查:
```text
DNG解析
↓
CFA排列是否正确
↓
BlackLevel / WhiteLevel
↓
AsShotNeutral
↓
ColorMatrix1 / ColorMatrix2
↓
CameraCalibration
↓
ForwardMatrix
↓
RAW RGB → XYZ
↓
XYZ → 工作色彩空间
↓
工作色彩空间 → 显示空间
```
其中最值得首先排查的是 **AsShotNeutral + ColorMatrix + ForwardMatrix**。
Android 官方 RAW 文档也明确把相机的 Color Transform、Calibration Transform、Forward Matrix 用于 RAW 数据的颜色处理,并且 `SENSOR_NEUTRAL_COLOR_POINT` 用于描述拍摄时的白平衡中性色点。([Android Developers][3]
所以从你目前给出的现象来看,我会把问题初步定位为“RAW/DNG显影链的色彩元数据没有被正确应用”,而不是普通的鸿蒙显示问题。
如果你是在定位这个剪辑软件的代码问题,下一步最有价值的是直接检查这个 DNG 文件里的 EXIF/DNG 元数据和软件导入 RAW 后使用的颜色转换矩阵这比继续肉眼比较照片更容易直接找到具体错误。
展开全部
2楼回复于2026-09-25 15:24 来自陕西
看起来是的
1楼回复于2026-09-25 14:04 来自山东
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。