L_RemapBitmapIntensity

# include“l_bitmap.h”

L_LTIMGCLR_APIL_INT确切地,L_RemapBitmapIntensity (pBitmap uLUTLen uFlags)

使用查找表来改变位图的强度值。

参数

pBITMAPHANDLEpBitmap

位图句柄指针引用的位图被改变。

L_INT*确切地

uLUTLen包含查找整数的值。

L_UINTuLUTLen

查找表的长度。可能的值是:

如果用于REMAP_NORMAL的旗帜uFlags参数:

(2 ^ (HighBit - LowBit + 1))

如果不用于uFlags REMAP_NORMAL标志参数:

(1 < < pBitmap - > BitsPerPixel)

L_UINTuFlags

旗帜,表明:

你可以在适当的时候把每组的值通过使用位或(|)。以下是有效值:

国旗显示平面的颜色更新:

价值 意义
CHANNEL_MASTER* [0]所有频道。
CHANNEL_RED [1]红色通道。
CHANNEL_GREEN [2]绿色通道。
CHANNEL_BLUE [3]蓝色通道。

标志指示是否改变高一些:

价值 意义
REMAP_CHANGEHIGHBIT [0 x0010]改变高的位图(pBitmap- > HighBit)确切地根据所使用的数据。

标志指示是否确切地包含正常的数据:

价值 意义
REMAP_NORMAL [0 x0100]中的数据确切地是正常的数据,在这种情况下uLUTLen应该等于2 ^ (HighBit - LowBit + 1)。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

可以将更改应用到红色,绿色,蓝色,或所有颜色通道。

电流强度值对应表索引。条目的值被应用的新值。

位图强度级别范围取决于图像的分辨率:

确保确切地包含位图强度水平的数量。例如,如果位图是16位的最大位图强度级别(2 ^ 16)1。

这个函数可以用来实现终端用户Photoshop等特性曲线。

更新状态栏或检测用户中断在执行这个函数,引用L_SetStatusCallback

这个函数支持12 - 16位灰度和48和64位彩色图像。支持12 - 16位灰度和48和64位彩色图像是可用的文档和医疗成像工具包。

这个函数不支持32位灰度图像。它返回错误代码ERROR_GRAY32_UNSUPPORTED如果一个32位的灰度图像是传递给这个函数。

计算主频道价值观

为了加快LEADTOOLS广泛使用的图像处理过滤器,灰度值(主频道)的彩色图像使用以下公式计算:

#定义CalcGrayValue (r, g, b) ((L_UCHAR) (((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8))))#定义CalcGrayValue16 (r, g, b) ((L_UINT16) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))#定义CalcGrayValue32 (r, g, b) ((L_UINT32) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))

必需的dll和库

平台

Win32 x64, Linux。

另请参阅

功能

主题

例子

这个例子将反转加载位图利用查找表受到线性函数的影响

L_INT RemapBitmapIntensityExample (L_VOID){L_INT nRet;L_UINT LookupTable [256];/ * * /数组来保存查找表BITMAPHANDLE LeadBitmap;/ * * /加载位图句柄保存图像/ *加载位图,被迫每像素24 * /nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“sample5.cmp”&LeadBitmap)),运算符ORDER_BGR (BITMAPHANDLE), 24日,空,空);如果(nRet ! =成功)返回nRet;/ *得到查找表的数组计算的线性函数的所有条目数组从0 - 255 * /LookupTable [0] = 255;LookupTable [255] = 0;nRet = L_GetFunctionalLookupTable (0 (L_INT *) LookupTable, 256年,255年,0,FLT_LINEAR);如果(nRet ! =成功)返回nRet;nRet = L_RemapBitmapIntensity (&LeadBitmap LookupTable (L_INT *), 256年,CHANNEL_MASTER);如果(nRet ! =成功)返回nRet;nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“Result.BMP”))、&LeadBitmap FILE_BMP, 24岁,0,NULL);如果(nRet ! =成功)返回nRet;/ /免费的位图如果(LeadBitmap.Flags.Allocated)L_FreeBitmap (&LeadBitmap);返回成功;}/ /这个例子将所有图片转换为图像并将反其数据签名。L_INT RemapBitmapIntensity_Signed_Example (pBITMAPHANDLE pBitmap){L_INT nRet;L_INT * pLookupTable =零;/ * * /数组来保存查找表L_INT nMaxValue nMinValue;L_INT nLutLen;nLutLen = 1 < < (pBitmap - > HighBit - pBitmap - > LowBit + 1);/ /得到真正的附近地区的长度如果(! pBitmap - > Flags.Signed)返回失败;/ /图像应该签署nMinValue = 1 * nLutLen / 2;/ /这是最低期望值。nMaxValue = nLutLen / 2 - 1;/ /这是最高的期望值。pLookupTable = (L_INT *) malloc (nLutLen *运算符(L_INT));如果(pLookupTable = = NULL)返回ERROR_NO_MEMORY;memset (pLookupTable 0 nLutLen *运算符(L_INT));/ *得到查找表的数组计算线性函数的数组的所有项目从0 - nLutLen * /如果(nMinValue < 0)pLookupTable [nMinValue + nLutLen] = nLutLen / 2 - 1;其他的pLookupTable [nMinValue] = nLutLen / 2 - 1;如果(nMaxValue < 0)pLookupTable [nMaxValue + nLutLen] = 1 * nLutLen / 2;其他的pLookupTable [nMaxValue] = 1 * nLutLen / 2;/ /生成一个消极的附近地区。nRet = L_GetFunctionalLookupTable (pLookupTable nLutLen 1 * nLutLen / 2, nLutLen / 2 - 1, 1, FLT_LINEAR | FLT_SIGNED);如果(nRet ! =成功){免费(pLookupTable);返回nRet;}/ /反转的图像。nRet = L_RemapBitmapIntensity (pBitmap pLookupTable、nLutLen CHANNEL_MASTER | REMAP_NORMAL);如果(nRet ! =成功){免费(pLookupTable);返回nRet;}免费(pLookupTable);返回成功;}

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