一个图像处理

大多数图像处理函数作用于内存中的位图,这意味着当您将图像保存到文件中时,更改将成为永久性的。一些低级函数作用于您管理的缓冲区(例如,当您在加载数据时处理它)。

更改数据格式

您可以使用许多高级和低级函数来更改图像的颜色分辨率(每像素位)。有关这些函数的列表,请参见放大或缩小颜色

Windows总是使用RGB颜色空间模型,当加载或保存文件时,LEADTOOLS根据需要将图像数据转换为RGB或从RGB转换。然而,LEADTOOLS为其他颜色空间模型提供了功能。您可以使用高级L_ColorSeparateBitmap而且L_ColorMergeBitmap函数创建和合并分色使用许多颜色空间模型,包括RGB, CMYK, CMY, HSV和HLS。您也可以使用底层L_ConvertColorSpace函数将缓冲区中的原始数据从一个颜色空间模型转换为另一个颜色空间模型,包括RGB, YUV, CMYK, CMY, YIQ, HSV和HLS。

如果源数据是YUV颜色空间而不是BGR/RGB格式,则可以使用L_SetBitmapYUVData函数在BITMAPHANDLE中设置之前,将YUV数据转换为灰度/BGR。使用L_GetBitmapYUVData函数将位图的灰度或BGR数据转换为YUV并将其存储在输出缓冲区中。

L_AutobinarizeBitmap自动将彩色图像转换为二进制(黑色和白色)图像,具有几个预处理选项。这包括消除位图的背景,(同时保留关键特征,如文本);执行自动调色,并使用用户指定的阈值执行调色。

更改数据类型(有符号/无符号)

图像数据可以从有符号变为无符号,反之亦然。签名图像数据可能包含一些负值。将有符号数据转换为无符号数据(反之亦然)是通过将图像数据/强度值按特定值移动来完成的。在有符号和无符号之间来回移动图像数据的能力通常在医疗或分析应用中很有用。

通常在应用图像处理或分析函数之前,要将图像数据从有符号更改为无符号,有以下选项:

L_ConvertBitmapUnsignedToSigned根据位图的内部方面移动图像数据。

L_ShiftMinimumToZero为用户提供图像数据移位的值。在图像处理之后,可以稍后使用该信息将图像返回到签名数据。

L_ClearNegativePixels将所有负像素设置为0,因此创建无符号图像。

将有符号图像转换为无符号图像后,可对无符号图像进行图像处理或分析功能。(大多数图像处理函数只能处理无符号数据。)当图像处理或分析完成后,将无符号数据转换回有符号数据。

通常在应用图像处理或分析函数后,要将图像数据从无符号变为有符号,有以下选项:

L_ConvertBitmapSignedToUnsigned根据位图的内部方面移动图像数据。

L_ShiftZeroToNegative使用户能够指定移动图像数据的量,并指定函数输出的最小值和最大值。

做几何转换

几何变换包括调整位图的大小、修整、旋转、剪切、翻转或反转。设计了一些几何变换函数,主要用于文档成像。例如,L_DeskewBitmap文档和医疗成像工具包)和L_DeskewBitmapExt文档和医疗成像工具包)让您自动摆正扫描的文档。L_DeskewBitmap具有特殊标志,可以使银行支票图像变直。有关更多信息,请参见抗扭斜

LEADTOOLS还提供L_TransformFile用于执行无损翻转、旋转和反转的函数。但是,目前只支持某些文件格式。此函数提供的结果比加载图像并使用L_RotateBitmapL_FlipBitmapL_ReverseBitmap然后保存它。它使用TRANSFORMFILECALLBACK处理文件的函数。TRANSFORMFILECALLBACK函数则使用LEADMARKERCALLBACK函数用于在文件中写入任何更新的标记。有关更多信息,请参见L_TransformFileTRANSFORMFILECALLBACK而且LEADMARKERCALLBACK

L_DisplaceMapBitmap函数根据位移图图像的值水平和垂直位移位图像素。

L_PerspectiveBitmap函数赋予位图一个三维深度,就好像它存在于一个平面上,被扭曲成不同的形状。的L_ManualPerspectiveDeskew函数校正视图透视图。

L_Keystone函数将一个多边形映射到一个矩形(反向透视转换),并可用于纠正从便携设备以一定角度捕获的图像的透视。

L_UnWarp函数去除圆柱体物体图像中的失真,就像从圆柱体上去除标签并将其压平一样。

使用L_BezierPath函数在调用之前将输出曲线与形状的两个角之间的曲线匹配L_UnWarp.一定要打电话L_FreeBezierPath当完成时,以释放与该结构相关的所有内存。

L_AlignImages函数根据输入点的位置对两个图像(pRefBitmap和pTempBitmap图像)进行对齐。这些图像被组合起来,创建了ppOutBitmap图像。

有关该组中的函数列表,请参见光栅图像函数:做几何变换.有关位图变大时内存分配的信息,请参阅调整注意事项

增光、变暗和过滤图像

许多图像处理函数允许您使用各种算法和过滤器在位图(或位图中的区域)中更改像素的值。您可以这样做,以改善图像的外观,分析图像中的细节,或应用艺术效果。以下主题提供详细信息:

改变亮度和对比度

去除噪声

检测和增强边缘和线

应用艺术效果

修正颜色

向位图中添加另一个图像

L_CombineBitmap函数允许您将另一个位图的全部或部分添加到目标位图。您可以传递标志来控制新像素是简单地替换旧像素,还是以指定的方式与旧像素结合。还可以在其中一个位图或两个位图中定义区域,如果这样做,函数只影响区域的交点。L_CombineBitmap还允许用户组合每像素不同位的位图,并指定在组合位图时使用哪个颜色平面。有关地区的信息,请参见定义和使用位图区域

源位图和目标位图可以通过将源位图的全部或部分扭曲为目标位图的一部分来组合。若要以这种方式组合图像,请使用L_CombineBitmapWarp

L_UnderlayBitmapFunction也可以组合图像,但它有一个更具体的目的。它结合了两个位图,使其中一个看起来是另一个的底层纹理。

LEADTOOLS为绘制图像提供了几个功能。的L_PicturizeBitmap函数将图像替换为通过组合存在于特定目录中的图像而创建的新图像。L_PicturizeBitmapList用组合位图列表中的图像创建的新图像替换图像。的L_PicturizeBitmapSingle函数使用单一图像的不同版本绘制图像。

两个位图也可以通过将图像与不透明度值结合来混合。的L_AlphaBlendBitmap函数将两个具有固定不透明度值的位图组合在一起以创建一个新的混合图像。的L_FeatherAlphaBlendBitmap函数通过使用一个依赖于渐隐掩模的可变不透明度并指定渐隐掩模的区域,将两个位图与羽化组合在一起。控件可以创建渐变掩码位图L_CreateFadedMask函数。

控件可以将边框和帧添加到位图中L_AddBorder而且L_AddFrame功能。

L_BumpMapBitmap函数允许您将位图与凹凸图像结合起来创建三维纹理模式。

L_CanvasBitmap函数将一个图像作为另一个图像的覆盖层应用。

还有许多其他函数可以让您获取和放置像素数据。例如,您可以用一种颜色填充位图,您可以获取和放置单独的像素值。有关函数列表,请参见获取和设置像素值

将位图作为设备上下文会带来许多可能性。的L_CreateLeadDC函数允许您获取设备上下文。然后,您可以使用Windows GDI函数在位图上绘制线、文本或图像。您还可以使用LEADTOOLS特效函数添加三维形状或文本,或以有趣的方式组合图像。详细信息请参见实现特殊效果

L_TextureAlphaBlendBitmap结合图像数据从pBitmapMask和pBitmapUnderlay与底层效果。结果被用作渐变掩码,将用于组合pBitmapSrc和pBitmapDst与可变不透明度。结果再次与pBitmapDst结合使用恒定的不透明度(使用nOpacity)。的L_BricksTextureBitmap函数创建了一个砖块纹理,使图像看起来像是画在砖墙上的。

L_DigitalSubtractBitmap函数不合并图像,而是从掩码(源)位图中减去实时(目标)位图,以显示两个位图之间的差异。

对比图片

方法可以比较两个位图或两个位图的部分L_CorrelationBItmap函数。该函数将一个位图的全部或部分与另一个位图中相同维度的所有区域进行比较,并根据相关性度量找到匹配的那些区域。的L_CorrelationListBitmap函数将hCorList中的图像与pBitmap中所有相同维度的区域进行比较,并根据相关性的度量找到匹配的部分。

从序列中提取位图

L_SliceBitmap函数被设计用于从射线扫描胶片中提取单个切片。

检测图像特征

L_BlankPageDetectorBitmap函数确定扫描到的图像是否是空白页(空的),也给出结果的准确率百分比。此功能有助于减少扫描图像的磁盘存储。

L_InvertedPageBitmap函数检测图像(页面)是否倒置(白色文本和黑色背景)。如果它是反向的,它会再次反向,所以文本是黑色的,背景是白色的。使用此函数可以增强OCR和cleanup函数的性能。

L_LambdaConnectedness函数使用一种叫做Lambda Connectedness的特殊区域增长算法进行图像分割。

L_LevelsetBitmapRgn函数执行半自动分割(使用Levelset算法),以找到封装对象的最佳拟合轮廓。

L_OtsuThreshold函数对灰度图像使用大津聚类进行图像分割和颜色还原。大津阈值法通常用于图像二值化。

使用L_MICRDetection功能自动检测文档图像中的磁墨字符识别(MICR)区域。

使用L_MRZDetection功能,在文件图像中自动检测机器可读护照区域。

L_BlurDetection函数确定图像是否模糊。的L_GlareDetection函数自动检测图像中的眩光区域。

L_SignalToNoiseRatio函数计算信噪比(SNR)为真实值的10*log10。该值指示图像中相邻像素的同质性。

L_KMeansBitmapSegmentation函数是一种分析数据的算法。每个观测结果都被放置在具有最接近它的平均值的聚类中。

L_GWireGetMinPath函数使用G-Wire算法检测图像中的对象。

自动分区(检测图像特征)

L_AutoZoneBitmap函数自动检测图像中的不同区域(文本、图形和表格),并返回分配内存中的位置(矩形)和每个区域的数据(文本行和表格的单元格)。它可以用于OCR,或任何需要自动分离图像、表格和混合光栅内容(MRC)图像中的文本的应用程序。

如果用户定义了AUTOZONECALLBACK函数,并将指向此函数的指针传递给L_AutoZoneBitmap,回调函数将接收检测到的每个区域。这允许用户按需要处理每张图像。

当不再需要包含检测到的区域的已分配内存时,应该调用L_FreeZoneData函数。

魔棒和快速魔棒操作

魔杖

通常,Magic Wand操作创建Windows区域或LEAD区域(L_RGN)。虽然快速魔棒操作在相同的方式和条件下工作,但它创建了一个OBJECTINFO包含两个元素的结构:矩形和二维数组。

矩形对应于区域的边界框。二维数组对应于属于该区域的像素,方法是将包含的元素引用为1,而不是将它们引用为0。

二维数组元素的数量、方向和顺序对应于边界矩形内的像素。因此,可以知道该区域的确切形状和位置。

要开始使用“快速魔棒”操作,必须首先初始化“快速魔棒”句柄。方法来完成这一任务L_StartFastMagicWandEngine函数。句柄初始化之后,通过调用L_FastMagicWand函数。当需要在一个图像上选择多个区域,特别是大图像时,使用此函数,因为它执行得更快。当OBJECTINFO的结构。L_FastMagicWand不再需要,请通过调用L_DeleteObjectInfo函数。

L_ObjectCounter对二值图像中的对象进行计数。它在白色背景下计数黑色物体。如果背景是黑色的,物体是白色的,使用L_InvertBitmap然后使用L_ObjectCounter

当快速魔杖手柄不再需要时,通过调用释放手柄L_EndFastMagicWandEngine.此时,此句柄无效。

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