You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Numpy的10/12/14位无符号RAW图像导入解决方案求助

处理10/12/14位无符号RAW图像的问题

在Python中导入16位无符号RAW图像数据十分简单:

data = numpy.fromfile( source_file, dtype=numpy.uint16 )
data = numpy.asarray( data )

但我还需要导入10、12、14位无符号整数数据,最终编码至某专有图像格式(该格式仅接受带独有头信息的16或32位整数数组),而Numpy并未实现这三种位深的数据类型。

将10/12/14位RAW图像以16位无符号格式在ImageJ中打开时,像素位置正确但显示异常,这符合位深不匹配的预期;但以小端字节序打开时,10位图像可完美显示。

我尝试在Python中切换为小端字节序:

image_bitness = numpy.uint16
image_bitness = numpy.dtype( image_bitness ).newbyteorder( '<' )
data = numpy.fromfile( source_file, dtype=image_bitness )
data = numpy.asarray( data )

但该操作没有效果,转换后的图像在ImageJ中仍显示异常。我已实现16/32位无符号RAW图像的同类转换且运行正常。

目前存在以下疑问:

  • 如何实现10/12/14位无符号数据的有效处理方案
  • 如何将10位数据转换为16位(初始需以uint16读取数据)
  • 为何ImageJ用小端能正确显示,而Python切换字节序无相同效果
  • 为何位填充、字节反转等尝试均无法解决显示问题

附录:尝试过的其他方法

我尝试通过二进制补零将数据转为16位:

data = numpy.fromfile( source_file, dtype=numpy.uint16 ) # 对10位图像也能运行?    
for i in data:
      data[i] = int( bin( data[i] )[2:].zfill(16), 2 )
data = numpy.asarray( data ) 

该操作将0000001011转为0000000000001011再转回十进制,但转换后图像仍显示异常,推测是数值未变导致;尝试字节反转:

for i in data:
      data[i] = int( bin( data[i] )[2:].zfill(16)[::-1], 2 )

结果依旧显示异常。

内容的提问来源于stack exchange,提问作者phillip_at_work

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:24:40