【LibRaw】原始图像解码库介绍(三)——数据结构

LibRaw数据结构在头文件libraw / libraw_types.h  中定义。其工作中使用的常量在文件libraw / libraw_const.h中定义

内容:

  1. 数据结构
    1. libraw_data_t:LibRaw中的主要数据结构
    2. 结构libraw_iparams_t:图像的主要参数
    3. 结构libraw_image_sizes_t:图像尺寸
    4. 结构libraw_colordata_t:颜色信息
    5. 结构libraw_imgother_t:图像的其他参数
    6. 结构libraw_rawdata_t:保存解压缩的RAW数据
    7. 结构libraw_thumbnail_t:缩略图的描述
    8. 结构libraw_lensinfo_t - 从EXIF / Makernotes中提取的镜头数据
    9. 结构libraw_output_params_t:管理dcraw样式的后处理
    10. 结构libraw_processed_image_t - dcraw_make_mem_image()/ dcraw_make_mem_thumb()函数的结果集
  2. 输入抽象层
  3. 常量
    1. 枚举LibRaw_errors:错误代码
    2. enum LibRaw_decoder_flags - RAW数据格式描述
    3. 枚举LibRaw_progress:LibRaw对象的当前状态
    4. 枚举LibRaw_thumbnail_formats:缩略图数据格式
    5. RAW数据处理期间的非标准情况(警告)
    6. enum LibRaw_image_formats - 可能的数据类型,包含在libraw_processed_image_t结构中

数据结构

libraw_data_t:LibRaw的主要数据结构

结构libraw_data_t是库的用户可访问的数据结构的“包装”。
当使用C ++ API时,它可以作为LibRaw :: imgdata(class_instance.imgdata)访问。通过open_file(和其他open_调用)打开文件后,此结构中的数据出现,但图像本身(由unpack()填充)和包含预览信息的数据(通过调用unpack_thumb()填充)除外。
数据字段:

unsigned int progress_flags;
该字段记录 图像处理的过去 阶段
unsigned int process_warnings;
此字段记录图像处理期间出现的 可疑情况(警告)
libraw_iparams_t idata;
该结构描述了从RAW文件中检索的主要图像参数。 下面详细描述该结构的字段。
libraw_image_sizes_t sizes;
该结构描述了图像的几何参数。 下面详细描述该结构的字段。
libraw_lensinfo_t镜头;
该结构描述了用于镜头的镜头。 下面详细描述该结构的字段。
libraw_makernotes_t makernotes;
该结构包含从文件中提取的相机/供应商特定元数据。没有提供说明,对不起,如果您对特定标签/相机/供应商感兴趣 - 请使用Exiftool文档作为参考
libraw_colordata_t颜色;
该结构包含从文件中检索的颜色数据。 下面详细描述该结构的字段。
libraw_imgother_t其他;
用于信息目的的数据结构:它包含从文件中提取但在进一步文件处理中不需要的图像参数。 下面详细描述该结构的字段。
libraw_thumbnail_t缩略图;
包含预览信息和预览数据本身的数据结构。调用open_file()时,将填充此结构的所有字段但缩略图本身。缩略图由unpack_thumb()调用。这些字段在 下面详细描述。
libraw_rawdata_t rawdata;
指向原始数据缓冲区的数据结构。细节描述 如下
ushort(* image)[4];
包含图像像素本身的内存区域。调用raw2image()或dcraw_process()时会填充它。
libraw_output_params_t params;
用于管理图像后处理的数据结构(使用dcraw仿真器)。 下面详细描述该结构的字段。
void(LibRaw :: * interpolate_bayer)()
指向用户指定的拜耳插值功能的指针。如果不为null,则调用此函数而不是user_qual指定的标准函数(或未指定)
void(LibRaw :: * interpolate_xtrans)()
指向用户指定的X-Trans插值功能的指针。如果不为null,则调用此函数而不是user_qual指定的标准函数(或未指定)

结构libraw_iparams_t:图像的主要参数

char make [64];
相机制造商。
char model[64];
相机型号。
char software[64];
Softwary名称/版本(主要用于DNG文件,用于区分相机内DNG与Adobe DNG Converter生产的DNG)。
unsigned raw_count;
文件中的RAW图像数(0表示文件未被识别)。
unsigned is_foveon;
Sigma Foveon图像的非零值
unsigned dng_version;
DNG版本(适用于DNG格式)。
Foveon矩阵为1,其他为0。LibRaw-demosaic-pack-GPL2支持Foveon。
int colors;
文件中的颜色数。
unsigned filters;
位掩码描述矩阵中颜色像素的顺序(0表示全彩色图像)。该字段的32位描述16个像素(8行,每个具有两个像素,从左到右,从上到下)。每两位具有值0到3,其对应于四种可能的颜色。通过COLOR(行,列)功能确保方便地使用该字段,该函数返回给定像素的活动颜色的数量。

小于1000的值保留为特殊情况:

  • 1 - 叶片捕捉灯,16x16拜耳矩阵;
  • 9 - 富士X-Trans(6x6矩阵)
  • 3..8和10..999 - 未使用。
char xtrans [6] [6];
char xtrans_abs [6] [6];
这些矩阵包含Fuji X-Trans row / col到颜色映射。第一个相对于可见区域,而第二个相对于传感器边缘定位。
char cdesc [5];
编号从0到3的颜色描述(RGBG,RGBE,GMCY或GBTG)。
unsigned xmplen; char * xmpdata;
XMP打包数据长度和指向提取的XMP数据包的指针。

结构libraw_image_sizes_t:图像尺寸

结构libraw_image_sizes_t是描述图像大小的所有文件数据的集合。
数据字段:

ushort raw_height,raw_width;
RAW图像的全尺寸(包括帧),以像素为单位。
ushort heightwidth;
图像的可见(“有意义”)部分的大小(没有帧)。
ushort top_margin,left_margin;
框架左上角的坐标(第二个角是根据图像的完整大小和可见部分的大小计算得出的)。
ushort iheight,iwidth;
输出图像的大小(可能与需要图像旋转或具有非方形像素的相机的高度/宽度不同)。
unsigned raw_pitch;
原始数据的完整大小 以字节为单位
double pixel_aspect;
像素宽高比。如果不是单位,则在输出期间需要沿着一个轴缩放图像。
int flip;
图像方向(如果不需要旋转,则为0;如果需要180度旋转,则为3;如果逆时针旋转90度,则为5,如果顺时针旋转90度,则为6)。

结构libraw_colordata_t:颜色信息

结构libraw_colordata_t将所有颜色数据合并在一起,这些颜色数据都是从RAW文件中检索出来的,并根据图像本身进行计算。对于不同的相机,有不同的颜色处理方式。
数据字段:

ushort curve[0x10000];
相机色调曲线。可以按原样读取或计算,具体取决于文件格式;
unsigned black;
黑色等级。取决于相机,它可能为零(这意味着在拆包阶段或相机本身已减去黑色),在解包阶段计算,从RAW文件读取或硬编码。
unsigned cblack [4102];
每通道黑电平校正。前4个值是每通道校正,接下来两个是黑色电平模式块大小,比cblack [4] * cblack [5]校正值。
unsigned data_maximum;
当前文件中的最大像素值。在raw2image或dcraw_process()调用时计算。
unsigned maximum;
最大像素值。根据大多数相机的数据计算,硬编码为其他相机。此值可以在后处理阶段(执行黑色减法时)和自动最大调整时更改(如果 params.adjust_maximum_thr设置为非零,则执行此调整)。
float fmaximum;
浮动数据文件的实际图像中的最大像素值。
float fnorm;
将浮点原始数据转换为整数时使用的归一化系数。
ushort white [8] [8];
从文件CIFF / CRW中提取的白色像素块。未提取其他格式。用于计算白平衡系数。
float cam_xyz [4] [3];
相机RGB - XYZ转换矩阵。该矩阵是常数(对于不同的模型是不同的)。对于RGB相机,最后一行为零,对于不同颜色模型(CMYG等),最后一行为非零。
float cam_mul [4];
白平衡系数(作为镜头)。从文件读取或计算。
float pre_mul [4];
日光白平衡系数(日光平衡)。从文件读取,或根据文件数据计算,或从硬编码常量中获取。
float cmatrix [3] [4];
从RAW文件读取的相机颜色数据(如果有)
float rgb_cam [3] [4];
相机到sRGB转换矩阵
float ccm [3] [4];
从文件元数据中取出相机颜色校正矩阵(如果文件中没有这样的数据,则为统一矩阵)
ph1_t phase_one_data;
为Phase One相机读取的颜色数据块。
float flash_used;
float canon_ev;
用于白平衡计算的字段(适用于某些P&S佳能相机)。
char model2 [64];
固件版本(适用于某些相机)。
char UniqueCameraModel [64],LocalizedCameraModel [64];
来自同名DNG标记的值。
void * profile;
指向检索到的ICC配置文件的指针(如果它存在于RAW文件中)。
unsigned profile_length;
ICC配置文件的长度,以字节为单位
unsigned black_stat [8];
如果从掩蔽区域计算出黑色级别统计数据:4个像素值之和,而不是4个像素计数(每个通道)。
libraw_dng_color_t dng_color [2];
从DNG读取的颜色数据:两个光源的光源,校准矩阵和颜色矩阵。(详见DNG规格)。
float baseline_exposure;
DNG文件:BaselineExposure标记的值。

结构libraw_imgother_t:图像的其他参数

数据字段:

float iso_speed;
ISO感光度。
float shutter;
快门速度。
float aperture;
光圈。
float focal_len;
焦距。
time_t timestamp;
拍摄日期。
unsigned shot_order;
图像序列号。
unsigned gpsdata [32];
GPS数据(未解析的块,按原样写入输出)。
libraw_gps_info_t parsed_gps;
解析的GPS数据:经度/纬度/高度和时间戳。
char desc [512];
图片描述。
char artist[64];
图像的作者。
float FlashEC;
闪光曝光补偿。

结构libraw_rawdata_t:保存解压缩的RAW数据

结构libraw_rawdata_t:

  • 来自传感器的RAW数据,通过unpack()调用进行readed和unpacked 。
  • 在后处理期间修改的“备份”颜色副本和数据。当后处理调用重复时,将从此备份恢复所需的数据。

数据字段:

void * raw_alloc;
分配用于保存RAW数据的缓冲区
unsigned short * raw_image;
指向具有单分量(bayer)数据的缓冲区的指针。
unsigned short(* color3_image)[3];
指向3分量像素阵列的指针。
unsigned short(* color4_image)[4];
指向具有4分量像素数据数据的缓冲区的指针
float * float_image;
指向FP格式的单组件(bayer)数据缓冲区的指针。
float(* float3_image)[3];
指向3分量FP像素阵列的指针。
float(* float4_image)[4];
指向具有4分量像素数据数据的缓冲区的指针

在调用unpack()之后,只有其中一个字段为非NULL。

此结构的所有其他字段均供内部使用,不应由用户代码触及。


结构libraw_thumbnail_t:缩略图的描述

结构libraw_thumbnail_t描述了与RAW文件中保存的预览相关的所有参数。
数据字段:

扫描二维码关注公众号,回复: 1867250 查看本文章
LibRaw_thumbnail_formats tformat;
缩略图数据格式。枚举 LibRaw_thumbnail_formats中的一个值。
ushort twidth,theight;
预览图像的尺寸(以像素为单位)。
float tlength;
缩略图长度,以字节为单位
int tcolors;
预览中的颜色数。
char * thumb;
指向从数据文件中提取的thumbmail的指针。


结构libraw_lensinfo_t:解析镜头数据

从Makernotes和EXIF中提取以下参数,以帮助识别相机上安装的镜头。如果Makernotes或EXIF中缺少该值,则参数设置为零,但下面列出了一些例外情况。在某些情况下,CameraFormat和CameraMount等字段的值是根据相机型号和/或相机ID设置的。



libraw_makernotes_lens_t结构:

  • LensID(如果不是-1)和CamID(摄像机ID,如果非零)值与exiftool中使用的值兼容,如| 0x0010 CanonModelID | 和| 22镜头类型| 见http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html或0x0207 / CameraType和0x0201 / LensType(见http://www.sno.phy.queensu.ca/~ phil / exiftool / TagNames / Olympus.html)
  • 镜头字符串(如果不为空)包含Makernotes中显示的镜头名称。
  • LensFormat和CameraFormat'目前提供enum LibRaw_camera_formats中的一个值;
  • 以类似的方式,'LensMount'和'CameraMount'的值遵循枚举LibRaw_camera_mounts;
  • 在某些情况下,MF相机的Makernotes包含身体的id或包含身体名称的字符串。该名称将复制到“body”字段,而id将转换为相应的正文名称,并复制到“body”字段。在其他情况下,“body”字段为空。
  • FocalType基于Makernotes标记设置(如果存在)。值为:-1未定义; 0未知; 1个固定焦距镜头; 2变焦镜头
  • LensFeatures_pre - 镜头名称前缀和LensFeatures_suf - 镜头名称后缀:(如果不是空的话)一些摄像机记录字母汤,在单独的Makernote标签中表征镜头(例如,参见  http://www.sno.phy.queensu的0xb02a LensSpec) .ca / ~phil / exiftool / TagNames / Sony.html),对于某些镜头,这些首字母缩略词可以从'镜头'字段本身派生(参见processCanonCameraInfo)。这些还可以帮助更好地识别镜头。
  • 'MinFocal'和'MaxFocal',如果非零,则包含安装在相机上的镜头的最小和最大焦距。
  • 'MaxAp4MinFocal','MaxAp4MaxFocal','MinAp4MinFocal','MinAp4MaxFocal' - 如果非零,包含最小焦距的最大光圈,最大焦距可用的最大光圈,最小焦距可用的最小光圈,最小光圈可用最大焦距分别为。
  • 'MaxAp'和'MinAp',如果非零,则包含镜头的最大光圈(通常是最小焦距的最大光圈)和焦距范围内的最小光圈。对于具有可变最大光圈的变焦镜头,这通常是最大焦距的最小光圈。
  • 'CurFocal',如果非零,则是当前焦距 - 即用于拍摄的焦距。
  • 'CurAp',如果非零,则是当前孔径。
  • 'MaxAp4CurFocal'和'MinAp4CurFocal',如果非零,则包含当前焦距的最小和最大光圈。
  • 'LensFStops' - 如果非零,则包含光圈“咔嗒声”的数量或f-stop的数量,具体取决于相机的型号。
  • 'TeleconverterID','AdapterID','AttachmentID',如果非零,则是从Makernotes中提取的数字,用于识别用于拍摄的镜头配件。
  • 'Teleconverter','Adapter','Attachment',如果非空,则是包含Makernotes中出现的附件名称的字符串,或者是某些相机的字符串,从Makernotes中的数字字段解码。
  • 大多数情况下不应该需要'CanonFocalUnits' - 辅助字段。有关此值的更多信息,请参阅exiftool中的Canon.pm模块。
  • 'FocalLengthIn35mmFormat',如果非零:由于某种原因,某些三星相机会在Makernotes中记录此值而不是EXIF。也用于Sigma相机。

libraw_nikonlens_t结构:

包含使用桌子识别尼康相机镜头所需的其他参数 - 请参阅http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html上的 Nikon LensID值

libraw_dnglens_t结构:

包含最小焦距,最大焦距,最小焦距下可用的最大光圈,以及最大焦距下可用的最大光圈,从DNG原始文件的EXIF字段中提取。

libraw_lensinfo_t结构:

包含上述所有结构,以及直接从EXIF字段提取的参数:

  • 'MinFocal'和'MaxFocal',如果非零,则包含安装在相机上的镜头的最小和最大焦距。
  • 'MaxAp4MinFocal','MaxAp4MaxFocal' - 如果不为零,则包含最小焦距的最大光圈和最大焦距下可用的最大光圈
  • 'LensMake',如果不是空的,则包含带有镜头制造商名称的字符串。
  • “镜头”(如果不为空)包含EXIF中记录的镜头名称
  • 'FocalLengthIn35mmFormat' - 如果非零,与EXIF标准中的FocalLengthIn35mmFilm相同,标记为0xa405。
  • 'EXIF_MaxAp' - 如果非零,则包含从EXIF标记0x9205派生的值。


结构libraw_output_params_t:管理dcraw样式的后处理

结构libraw_output_params_t用于管理dcraw兼容调用dcraw_process(),dcraw_ppm_tiff_writer()和dcraw_thumb_writer()。此结构的字段对应于dcraw的命令行键。
数据字段:

unsigned greybox [4];
dcraw keys -A xywh 
4个数字,对应于用于计算白平衡的矩形的坐标(以像素为单位)。X和Y是左上角矩形的坐标; w和h分别是矩形的宽度和高度。
unsigned cropbox [4];
dcraw keys: none 
此字段设置图像裁剪矩形。Cropbox [0]和cropbox [1]是矩形的左上角坐标,其余两个值分别是width和height。在任何图像旋转之前应用所有坐标。
double abe[4];
dcraw keys -C 
校正色差; 唯一指定的值是像素
[0],红色乘数像素
[2],蓝色乘数。对于某些格式,它会影响 RAW数据读取,因为像差校正会改变输出大小。
double gamm [6];
dcraw keys -g power toe_slope 
设置用户伽玛曲线。库用户应该设置gamm数组的前两个字段:
gamm [0] -  反向伽马值)
gamm [1] - 线性部分的斜率(所谓的脚趾斜率)。对于简单的功率曲线,设置为零。
剩余的4个值将自动填充。

默认设置为rec。使用BT.709:功率2.222(即gamm [0] = 1 / 2.222)和斜率4.5。对于sRGB曲线,使用gamm [0] = 1 / 2.4和gamm [1] = 12.92,对于线性曲线设置gamm [0] / gamm [1]为1.0。

float user_mul [4];dcraw keys -r mul0 mul1 mul2 mul3用户白平衡的
4个乘数(r,g,b,g)。 unsigned shot_select;dcraw keys -s 
选择要处理的图像编号(对于在一个文件中包含多个RAW图像的格式)。 float bright;dcraw keys -b 
亮度(默认1.0)。 float threshold;dcraw keys -n 
通过小波去噪降噪的参数。 int half_size;dcraw键: -h 
以50%的大小输出图像。对于某些格式,它会影响 RAW数据读取int four_color_rgb;dcraw keys -f 
为两个绿色组件切换单独的插值。 int highlight;dcraw keys -H 
0-9:高亮模式(0 =剪辑,1 =取消剪辑,2 =混合,3 + =重建)。 int use_auto_wb;dcraw keys -a 
使用对整个图像求平均后获得的自动白平衡。 int use_camera_wb;dcraw keys -w 
如果可能,请使用相机的白平衡。 int use_camera_matrix;dcraw keys + M / -M
  • 0:不使用嵌入的颜色配置文件
  • 1(默认):对DNG文件使用嵌入的颜色配置文件(如果存在)(总是); 仅当设置了use_camera_wb时才能用于其他文件;
  • 3:无论白平衡设置如何,都使用嵌入的颜色数据(如果存在)。
int output_color;dcraw keys -o 
[0-5]输出颜色空间(原始,sRGB,Adobe,Wide,ProPhoto,XYZ)。 char * output_profile;dcraw keys -o filename 
输出配置文件ICC文件的路径(仅在使用LCMS支持编译LibRaw时使用) char * camera_profile; dcraw keys:-p file 
输入(相机)配置文件ICC 文件的路径(或嵌入配置文件的“嵌入”)。仅在编译LCMS支持时使用。 char * bad_pixels; dcraw keys:-P文件
带有坏像素映射的文件的路径(以dcraw格式:“列行以像素为单位的死像在UNIX格式中”,每行一个像素)。 char * dark_frame;dcraw keys -K文件
暗帧文件的路径(16位PGM格式) int output_bps;dcraw keys -4 
8位(默认)/ 16位(键-4)。 int output_tiff;dcraw keys -T 
0/1:输出PPM / TIFF。 int user_flip;dcraw keys -t 
[0-7]翻转图像(0 =无,3 = 180,5 = 90CCW,6 = 90CW)。默认值为-1,表示从RAW获取相应的值。
对于某些格式, 会影响RAW数据读取,例如,从柯达相机中解压缩缩略图。 int user_qual;dcraw keys -q 
0-10:插值质量:
  • 0 - 线性插值
  • 1 - VNG插值
  • 2 - PPG插值
  • 3 - AHD插值
  • 4 - DCB插值
  • 5 - Paul Lee修改的AHD插值
  • 6 - AFD插值(5遍)
  • 7 - VCD插值
  • 8 - 混合VCD /修改AHD插值
  • 9 - LMMSE插值
  • 10 - AMaZE插值
  • 11 - DHT插值
  • 12 - 改进的AHD插值(作者Anton Petrusevich)
仅当编译了“LibRaw demosaic pack GPL2”时,值5-9才有用(有关详细信息,请参阅发行版中的README.demosaic-packs)。仅当LibRaw使用“LibRaw demosaic pack GPL3”编译时,值10才有用。如果某些插值方法不受支持,因为LibRaw编译时没有相应的demosaic pack,将使用AHD插值并在process_warniong字段中设置LIBRAW_WARN_FALLBACK_TO_AHD。 int user_black;dcraw keys -k 
用户黑电平。 int user_cblack [4];dcraw keys: none 
对user_black的每通道更正。 int user_sat;dcraw keys -S 
饱和度调整。 int med_passes;dcraw keys -m 
中值滤波器通过次数。 int no_auto_bright;dcraw keys -W 
不要使用直方图自动增加亮度。 float auto_bright_thr;dcraw keys: none 
使用自动亮度增加时被剪裁像素的一部分。对于dcraw兼容性,默认值为0.01(1%)。现代低噪声多像素摄像机的推荐值取决于拍摄风格。0.001-0.00003范围内的值看起来合理。 float adjust_maximum_thr;dcraw keys: none 
此参数根据从实际帧数据计算的channel_maximum []数据控制最大值的自动调整。如果计算的最大值大于adjust_maximum_thr * maximum,则将maximum设置为calculated_maximum。
默认值:0.75。如果将此值设置为高于0.99999,则将使用默认值。如果将此值设置为低于0.00001,则不会执行最大调整。
调整最大值不应该损坏任何图片(特别是如果你使用默认值),并且非常有用于纠正通道溢出问题(风景照片上的洋红色云,室内拍摄的绿 - 蓝亮点)。 int use_fuji_rotate;dcraw keys -j 
默认-1(使用),0 - 不要对富士传感器上的摄像机使用旋转。 int green_matching;打开固定绿色通道的不平衡。 dcraw keys: none 
默认值:0(不使用),1 - 打开此后处理阶段。green_matching需要额外的内存来存储图像数据。 int dcb_iterationsdcraw keys:
DCB校正通过次数。默认值为-1(无校正)。仅适用于DCB插值。 int dcb_enhance_fldcraw keys无非
零:具有增强插值颜色的DCB插值。 int fbdd_noiserddcraw keys: none 
在去马赛克之前控制FBDD降噪。
  • 0 - 不使用FBDD降噪
  • 1 - 减少FBDD
  • 2(及更多) - 完全减少FBDD
int eeci_refinedcraw keys
nonzero-使用EECI细化VCD插值。 int es_med_passesdcraw keys:
VCD + AHD去马赛克后边缘敏感中值滤波器的数量。高度不推荐高于1的值。 int ca_correcdcraw keys
正值打开色差抑制(默认值:0即关闭)。 float cared,cablue
dcraw keys: none 
如果其中一个字段为非零,则将使用这些值而不是自动值。可用范围是+ -0.1 .. + - 4.0。 int cfaline; float linenoise;线路噪音(绑扎)减少。
正值会启用此功能(默认值:关闭)。
linenoise - 减少量。有用的范围是0.001到0.02。默认值为0.0即不清洁任何东西。 int cfa_clean; float  lclean,cclean;降低脉冲噪声和高斯高频。
cfa_clean:正值打开该功能(默认值:关闭)。
lclean,cclean - (L)uminance和(C)olor的降噪量。可用范围从0.005到0.05,通用值0.01 int cfa_green; float  green_thresh;减少绿色通道不良平衡产生的迷宫伪影。
cfa_green:正值会打开该功能(默认值:关闭)。
green_thresh - 允许均衡的通道之间的最大差异。有用范围在0.01和0.1之间。 int exp_correc; float exp_shift,exp_preser;在去马赛克之前进行曝光校正。 
  • exp_correc:正值打开该功能(默认值:关闭)。
  • exp_shift:线性刻度的曝光偏移。可用范围从0.25(2档变暗)到8.0(3档减速机)。默认值:1.0(无曝光转换)。
  • exp_preser:在使图像变亮时保留高光。可用范围从0.0(无保存)到1.0(完全保存)。0.0是默认值。
int wf_debanding; float wf_deband_treshold [4];wf_debanding:1开启条带抑制(慢!),0关闭它。
wf_deband_treshold [] - 每个通道的debanding阈值。 int use_rawspeed;打开使用RawSpeed库进行数据解包(仅当编译了RawSpeed支持时)。 int no_auto_scale;在LibRaw :: dcraw_process()中禁用像素值缩放(调用LibRaw :: scale_colors()) int no_interpolation;在LibRaw :: dcraw_process()中禁用对去马赛克代码的调用 int raw_processing_optionsunpack()阶段用于特定图像格式的处理选项

Sigma Quattro解码标志:

  • LIBRAW_DP2Q_INTERPOLATERG - 打开R / G通道插值
  • LIBRAW_DP2Q_INTERPOLATEAF - 打开Quattro传感器上低灵敏度(AF或过度曝光控制)点的数据插值。

Pentax 4-shot选项:

  • LIBRAW_PROCESSING_PENTAX_PS_ALLFRAMES - 合并Pentax 4镜头文件的所有帧

浮点DNG文件:

  • LIBRAW_PROCESSING_CONVERTFLOAT_TO_INT - 将FP数据转换为16位整数

索尼ARW2.3处理选项:(有关详细信息,请参阅http://www.rawdigger.com/howtouse/sony-craw-arw2-posterization-detection)

  • LIBRAW_PROCESSING_SONYARW2_BASEONLY - 仅解码基本像素,将delta像素保留为零;
  • LIBRAW_PROCESSING_SONYARW2_DELTAONLY - 仅解码基本像素为零的delta像素;
  • LIBRAW_PROCESSING_SONYARW2_DELTAZEROBASE - 解码delta像素,不添加基值;
  • LIBRAW_PROCESSING_SONYARW2_DELTATOVALUE - 显示可能的分色区域;

佳能/尼康小RAW(YCC)解码标志(不要同时使用两者):

  • LIBRAW_PROCESSING_SRAW_NO_RGB - 禁用YCC到RGB转换
  • LIBRAW_PROCESSING_SRAW_NO_INTERPOLATE - 禁用缺失的颜色值插值

Foveon处理标志:

  • LIBRAW_PROCESSING_FORCE_FOVEON_X3F - 即使使用Demosaic Packs GPL2编译,也可以使用X3F工具进行foveon处理
int sony_arw2_posterization_thr如果LIBRAW_PROCESSING_SONYARW2_DELTATOVALUE用于arw2_options,则设置级别以禁止阴影中的分色显示。 float coolscan_nef_gamma;Coolscan NEF解码的Gamma值(无法从文件获取,应通过调用应用程序设置)。 char p4shot_order [5];Pentax 4shot文件的拍摄顺序。默认值为“3102”。

结构libraw_decoder_info_t:RAW解码器名称和数据格式

该结构描述了RAW格式的解码器名称和数据格式:

const char * decoder_name
解码器功能名称
unsigned decoder_flags
解码器数据格式。有关详细信息,请参阅 LibRaw_decoder_flags列表

结构libraw_processed_image_t - dcraw_make_mem_image()/ dcraw_make_mem_thumb()函数的结果集

结构libraw_processed_image_t是通过调用dcraw_make_mem_image()/ dcraw_make_mem_thumb()生成的,包含内插数据或缩略图的内存图像。
数据字段:

LibRaw_image_formats类型
该字段记录数据类型,包含剩余的结构字段。
  • LIBRAW_IMAGE_BITMAP - 结构包含RGB位图。所有元数据字段(见下文)都有效并描述了图像数据。
  • LIBRAW_IMAGE_JPEG - 结构包含JPEG文件的内存映像。只有type,data_size和data字段有效(且非零);
ushort  height,width
图像大小(以像素为单位)。仅在type == LIBRAW_IMAGE_BITMAP时有效。
ushort colors,bits
颜色分量(1或3)和颜色深度(以位为单位)(8或16)。仅当type == LIBRAW_IMAGE_BITMAP时,这些字段才有效。
ushort gamma_corrected
位图数据是否经过伽马校正(对于8位数据始终为1,对于16位可能为0或1)。仅在type == LIBRAW_IMAGE_BITMAP时有效。
unsigned int data_size
数据字段的大小(以字节为单位)。对于等于(height * width * colors *(bits / 8))的位图图像。对于JPEG图像 - 精确的JPEG大小(即提取的thnumbnail大小+ JPEG标题+ EXIF标题)。
unsigned char data []
数据数组本身。应解释为位图类型的RGB三元组和JPEG类型的JPEG文件。

输入抽象层

LibRaw中的RAW数据输入(读取)通过调用从LibRaw_abstract_datastream抽象类派生的对象的方法实现。完整的方法列表在href =“API-CXX.html#datastream”> C ++ API参考中描述。

有两个现成的数据流对象实现:

LibRaw用户可以创建从LibRaw_abstract_datastream派生的自己的datastream对象。例如,这样的对象可以实现直接从相机读取RAW数据(通过远程接口)。LibRaw可以通过LibRaw :: open_datastream()接口使用这些对象。

数据流可以通过LibRaw :: open_datastream()调用(在这种情况下应该创建由用户维护的数据流对象)或通过LibRaw :: open_file()LibRaw :: open_buffer()快捷方式使用。

只有C ++ API用户可以使用面向对象的接口并实现自己的输入接口。对于C API用户,只有内置的libraw_open_file()/ libraw_open_buffer()快捷方式可用。

数据字段

定义:

	class LibRaw_abstract_datastream {... protected:LibRaw_abstract_datastream * substream;}

描述:从LibRaw_abstract_datastream派生的Oject总是包含指向辅助数据流(子流)的指针。此子流在需要时在内部初始化(实际上仅用于Sony RAW数据)并用于临时切换输入流到LibRaw内部分配的临时内存缓冲区。

自己的数据流对象创建指南中更精确地描述了子使用细节。

猜你喜欢

转载自blog.csdn.net/mr_sandman1994/article/details/80896404
今日推荐