直方图Header 结构 (mfapi.h)

直方图Header 结构描述了MF_CAPTURE_METADATA_HISTOGRAM的 Blob 格式。

语法

typedef struct tagHistogramHeader {
  ULONG         Size;
  ULONG         Bins;
  ULONG         FourCC;
  ULONG         ChannelMasks;
  HistogramGrid Grid;
} HistogramHeader;

成员

Size

此标头的大小 + (HistogramDataHeader + 直方图数据后) * 可用通道数。

Bins

直方图中的箱数。

FourCC

从中收集直方图的颜色空间

ChannelMasks

收集直方图的颜色通道的掩码。

Grid

从中收集直方图的网格。

注解

捕获预览帧时 ,MF_CAPTURE_METADATA_HISTOGRAM 属性包含直方图。

对于 ChannelMasks 字段,以下位掩码指示直方图中的可用通道:

#define MF_HISTOGRAM_CHANNEL_Y  0x00000001
#define MF_HISTOGRAM_CHANNEL_R  0x00000002
#define MF_HISTOGRAM_CHANNEL_G  0x00000004
#define MF_HISTOGRAM_CHANNEL_B  0x00000008
#define MF_HISTOGRAM_CHANNEL_Cb 0x00000010
#define MF_HISTOGRAM_CHANNEL_Cr 0x00000020

每个 blob 可以包含从同一帧的不同区域或不同颜色空间收集的多个直方图。 blob 中的每个直方图都由其自己的 直方图Header 标识。 每个直方图都有自己的区域和关联的传感器输出大小。 对于全帧直方图,该区域将与 HistogramGrid 中指定的传感器输出大小匹配。

所有可用通道的直方图数据都分组在一个直方图下。 每个通道的直方图数据由数据上方的 HistogramDataHeader 标识。 ChannelMask 指示有多少通道以及哪些通道具有直方图数据,即上面定义的受支持 MF_HISTOGRAM_CHANNEL_ 位掩码的按位 OR。 ChannelMask 指示数据用于哪个通道,该通道由任何一个 MF_HISTOGRAM_CHANNEL_ 位掩码标识。

直方图数据是 ULONG 数组,每个条目表示一组音调值下按箱分类的像素数。 数组中的数据应从 bin 0 开始到 bin N-1,其中 N 是直方图中的箱数,例如 ,HistogramBlobHeader.Bins

对于Windows 10,如果支持KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM,则必须至少提供具有 Y 通道的全帧直方图,该直方图应是直方图 blob 中的第一个直方图。 请注意, HistogramBlobHeaderHistogramHeaderHistogramDataHeader 和直方图数据仅描述 MF_CAPTURE_METADATA_HISTOGRAM 属性的 Blob 格式。 直方图的元数据项结构 (KSCAMERA_METADATA_ITEMHEADER + 所有直方图元数据有效负载) 由驱动程序决定,并且必须对齐 8 字节。

要求

   
标头 mfapi.h

另请参阅

HistogramBlobHeader

HistogramDataHeader

HistogramGrid