12 - 16位灰度LEADTOOLS所使用的格式

DirectShow的和窗口不支持12 - 16位灰度位图。领导定义LGRY视频格式允许使用这些位图使用DirectShow的架构。这是用于DICOM过滤器生成灰度视频超过8位/像素。

当描述12/16-bit压缩数据,表明媒体类型格式是使用LGRYVideoInfo结构通过设置媒体FORMAT_LGRYVideoInfo亚型。在描述未压缩12/16-bit数据,表明媒体类型格式是使用LGRYVideoInfo结构通过设置biCompression LGRY。但即使在这种情况下,最好还设置媒体FORMAT_LGRYVideoInfo亚型。

下面的定义语句和结构可以在< INSTDIR > \ \ LGRYType.H包括:

常量

静态GUID FORMAT_LGRYVideoInfo = {0 x48799704 0 x2735 0 x4be6, {0 xa0, 0 xce 0 xdd 0 . xc6, 0 x2c 0 25, 0 xa4 0 xf2}};

formattype成员的媒体类型必须设置为FORMAT_LGRYVideoInfo(或ltmmFORMAT_LGRYVideoInfo)显示使用LGRYVIDEOINFO结构来描述12或16位压缩数据。没有必要设置formattype表示未压缩12/16-bit数据,但建议这样做,即使是未压缩的数据。

请注意:在LGRYType FORMAT_LGRYVideoInfo定义。h,而ltmmFORMAT_LGRYVideoInfo ltmm.h中定义。

数据类型

LGRYVIDEOINFO

类型定义结构体{矩形rcSource;矩形rcTarget;DWORD dwBitRate;DWORD dwBitErrorRate;REFERENCE_TIME AvgTimePerFrame;LGRYINFOHEADER bmiHeader;RGBQUAD bmiColors [65536];}LGRYVIDEOINFO,远* pLGRYVIDEOINFO;

描述灰度视频格式的格式:

成员

描述

rcSource

要使用的图像部分

rcTarget

目标位置的视频

dwBitRate

近似位数据率

dwBitErrorRate

这个流比特误码率

AvgTimePerFrame

平均时间每帧(100 ns单位)

bmiHeader

包含灰度图像的结构信息。

bmiColors

词根重新映射查找表(LUT)。这是可选的。这个领域被忽略,除非bmiHeader。biClrUsed是非零的。

LGRYINFOHEADER

类型定义结构体tagLGRYINFOHEADER{/ * * / BITMAPINFOHEADER字段DWORD biSize;长biWidth;长biHeight;单词双翼飞机;单词biBitCount;DWORD biCompression;DWORD biSizeImage;长biXPelsPerMeter;长biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;/ *字段特定LGRY格式* /长biLowBit;长biHighBit;长biMinVal;长biMaxVal;长biWindowWidth;长biWindowCenter;biRescaleIntercept;biRescaleSlope;DWORD biFlags;长nReserved1;长nReserved2;长nReserved3;}LGRYINFOHEADER,远* pLGRYINFOHEADER;

描述了灰度图像。

成员

描述

biSize

这种结构的大小。应该sizeof (LGRYINFOHEADER)。

biWidth

视频宽度。

biHeight

使用积极的值指定一个自上而下的形象。这是对Windows约定的未压缩的RGB图像。

双翼飞机

应该是1

biBitCount

应该是12或16:
如果16,英特尔的数据
如果12日与3个字节数据导致包装每2像素。

biCompression

应该mmioFOURCC (‘L’、‘G’、‘R’,‘Y’)来表示未压缩的数据。

应该mmioFOURCC (“L”、“j”、“p”,“g”)来表示无损的JPEG数据。

应该mmioFOURCC (“J”、“P”、“E”,“G”)或mmioFOURCC(“米”、“J”,“P”,“G”)来表示有损JPEG数据。

当使用JPEG数据,设置formattype FORMAT_LGRYVideoInfo或ltmmFORMAT_LGRYVideoInfo。

biSizeImage

图像文件的大小(以字节为单位)。每一行的大小需要4个字节的倍数,所以可能需要填充。的公式正确计算这个领域是:biSizeImage = ((((biWidth * biBitCount) + 31) & ~ 31) / 8) * abs (biHeight)

biXPelsPerMeter

指定的水平分辨率,像素每米。

biYPelsPerMeter

指定的垂直分辨率,像素每米。

biClrUsed

如果不存在的0。在这种情况下,bmiColors字段是不习惯/需要。

如果有一个附近地区! = 0。在这种情况下,bmiColors包含的。biClrUsed应该等于1 < < (biHighBit biLowBit + 1)

biClrImportant

目前还不能使用。将这个值设置为0

biLowBit

低一点的像素数据(0 < = biLowBit < = biHighBit < = biBitCount-1)。

biHighBit

高像素数据。

biMinVal

最小值的像素数据(忽略了non-pixel比特)。

biMaxVal

最大值的像素数据(忽略了non-pixel比特)。

biWindowWidth

DICOM窗口宽度。这可以用于再生的。

biWindowCenter

DICOM窗口中心。这可以用于再生的。

biRescaleIntercept

DICOM重新调节拦截。这可以用于再生的。

biRescaleSlope

DICOM重新调节斜率。这可以用于再生的。

biFlags

显示哪些字段是有效的。可能的值是:

LGRY_RESCALE_VALID [0 x0001]如果设置,biRescaleIntercept biRescaleSlope是有效的

LGRY_WINDOW_VALID [0 x0002]如果设置,biWindowSize biWindowCenter是有效的

LGRY_BITRANGE_VALID [0 x0004]如果设置,biLowBit biHighBit是有效的

LGRY_MINMAX_VALID [0 x0010]如果设置,biMinVal biMaxVal是有效的

LGRY_LUT_ISGENERATED [0 x0020]如果有附近地区:如果设置,从有效LGRY-specific字段生成的。如果没有设置,不能从其他LGRY再生的字段。在这种情况下,需要保存的文件中。

LGRY_LUT_ISGRAYSCALE [0 x0040]如果有附近地区和设置这个标志,然后只包含的灰度值。这个标志被设置为避免经历的每次检测是否只包含灰度的颜色。

LGRY_LUT_ISCOLOR [0 x0080]如果有附近地区和设置这个标志,然后包含non-grayscale值的。这个标志被设置为避免经历的每次检测是否只包含灰度的颜色。

LGRY_LUT_COLORMASK [0 x00c0]这不是国旗。它是一个面具,可以用来探测附近地区是否颜色,灰度或未知。

nReserved1

保留以供将来使用。

nReserved2

保留以供将来使用。

nReserved3

保留以供将来使用。

评论

12位数据包装:每2像素占3个字节。

例如,如果您有(2)12位值和十六进制值0 xabc和0 xdef,他们将被存储在内存中是这样的:0 xbc 0 xfa 0 xde

这个包装的优点是你可以得到每个值在英特尔处理器一个阅读和逻辑操作(与0 xfff”和“第一个值,右移4位第二值)。

下面的宏可以用来处理包装12位数据(请记住,这些是C多行宏和重要的是,他们有“\”结束时线):

/ /辅助宏观递增一个指针#定义PTR_INC (p)(((字节*)p) + 1)/ /读取第一个12位值#定义GET12_0 (p)((*(字*)p) & 0 xfff)/ /读第二个12位值#定义GET12_1 (p)((*(字*)PTR_INC (p)) > > 4)/ /写两个12位值#定义PUT12 (p val0 val1) *(字*)p = (((val0) & 0 xfff) |(词)(val1) < < 12));\((字节*)p)[2] =((字)(val1) > > 4)/ /写第一个12位值#定义PUT12_0 (p, val0) *(字*)p =((*(字*)(p) & 0 xf000) | \((val0) & 0 xfff))/ /写第二个12位值#定义PUT12_1 (p, val1) *(字*)PTR_INC (p) = \((*(字*)PTR_INC (p) & 0 xf) | \((词)(val1) < < 4))

例子

下面的例子描述了如何设置各种字段描述灰度16位数据只使用低10位:

LGRYVIDEOINFO信息;/ *警告:不把在堆栈,因为它非常大* /info.bmiHeader。biSize =运算符(LGRYINFOHEADER);info.bmiHeader。biWidth= VideoWidth;info.bmiHeader。biHeight= VideoHeight; /* should be positive正常(unflipped视频)* /info.bmiHeader。双翼飞机= 1;info.bmiHeader。biBitCount= 16; /* I have 16 bits per pixel, although only the lower 10 bits contain useful data */info.bmiHeader。biCompression= mmioFOURCC('L', 'G', 'R', 'Y');info.bmiHeader。biSizeImage= (((VideoWidth * 2) + 3) & ~3) * VideoHeight;info.bmiHeader。biClrUsed = 0;/ *没有附近地区* /info.bmiHeader。biClrImportant= 0; /* not used right now. Set价值0 * // *字段特定LGRY格式* /info.bmiHeader。biLowBit = 0;/ *低一点像素数据(0 < = biLowBit < = biHighBit < = biBitCount-1) * /info.bmiHeader。biHighBit = 9;/ * 10 - 1 = 9。高一些像素数据。* /info.bmiHeader。biFlags= LGRY_BITRANGE_VALID; /* only biLowBit and biHighBit are valid *// *自情况下不使用的,只有足够的设置的字段LGRYVIDEOINFO包括bmiHeader。的有用的大小LGRYVIDEOINFO结构offsetof (LGRYVIDEOINFO bmiColors)。* /

LEADTOOLS过滤器C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。