FILETRANSFORMS

变换可以用来操纵图像在很多方面。下面讨论的转换,使用FlashPix文件,可以用来操纵空间定位,颜色和色调,对比,和过滤。在某些情况下,如对比操纵或过滤,可能需要一个值,而颜色和色调与空间定位和处理,需要一个矩阵值来完成转换。

使用的值来完成这个存储在下面列出的FILETRANSFORMS结构。正是这种结构写入文件存储的图像使用L_WriteFileTransforms。下次加载的图片,你可以检查图像的转换存储使用L_ReadFileTransforms功能和决定是否加载图像在其原始状态,或在任何转换三个州。如果你选择加载图像不变,你必须确保ELO_IGNOREVIEWTRANSFORMS和ELO_IGNORECOLORTRANSFORMS旗帜旗帜数据成员的组LOADFILEOPTION结构在加载该文件。

注意:通过设置这些旗帜你告诉系统忽略变换。

加载图像只有颜色变换结合的影响,你必须设置ELO_IGNOREVIEWTRANSFORMS国旗,并清除ELO_IGNORECOLOR118金博宝TRANSFORMS国旗。

加载图像只有查看转换合并的影响,你必须设置ELO_IGNORECOLORTRANSFORMS ELO_IGNOREVIEWTRANSFO118金博宝RMS国旗国旗和清楚。

最后,加载图像的颜色变换和视图变换结合,明确ELO_IGNOREVIEWTRANSFORMS和ELO_IGNORECOLORTRANSFORMS旗帜。118金博宝的例子中可以看到所有四个加载选项下“例子”L_LoadFile

进一步的解释空间方位、颜色和语气操纵,对比下面提供操作和过滤。

类型定义结构体_FILETRANSFORMS{/ / AffineMatrix平移、旋转、剪切、扭曲、规模……L_FLOAT,a11 a12, a13,阿,a21 a22, a23, a24, a31, a32, a33, a34, a41, a42、a43, a44;/ * * /矩阵值/ / ColorTwistMatrixL_FLOATbyy, byc1、byc2 bc1y、bc1c1 bc1c2, bc2y, bc2c1, bc2c2;/ * * /矩阵值/ /对比度调整L_FLOATfContrastAdjustment;/ * * /调整因素L_FLOATfFilteringValue;* / / *锐度调整* pFILETRANSFORMS} FILETRANSFORMS;

评论

FILETRANSFORM结构使用L_ReadFileTransformsL_WriteFileTransforms读或写FlashPix变换。

空间定位——仿射矩阵

FlashPix支持许多方法来改变图像的空间定位。这些包括剪切、平移、旋转、缩放和使用4 x4矩阵描述。显示图像的像点映射到原始图像。一个通用的4 x4矩阵所示:

┌──┐┌──┐┌──┐│x '││a11 a12 a13阿│││x│y '│=│a21 a22 a23 a24 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

x和y是新的,改变x和y坐标和旧的坐标。放置在变量的值通过a24 a11确定转换您正在执行和变化的程度。得到新值如下:

x ' = a11 * x + a12 * y + a13 * 1 +阿* 1y ' = a21 * x + a2 2 * y + a23 * 1 + a24 * 1

首先,是单位矩阵,下面给出。这个图像数据执行任何操作,所以图像本身的结果。

┌──┐┌──┐┌──┐│x '││1 0 0 0│││x│y '│y = X 0 1 0 0││││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

翻译一个点使用以下矩阵:

┌──┐┌──┐┌──┐│x '││1 0 0±X0││││y '│=│0 1 0±Y0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

在哪里X0Y0显示的变化为每个点X和Y的变化。

点关于原点逆时针旋转,由角ßr使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││cos(ßr) sin(ßr) 0 0│││x│y '│=│sin(ßr)因为(ßr) 0 0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

横向剪切一个图像,一个角度ßhh逆时针的起源,使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││1 tan(ßhh) 0 0│││x│y '│y = X 0 1 0 0││││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

垂直剪一个图像,一个角度ßhv逆时针的起源,使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││1 0 0 0│││x│y '│=│tan(ßhv) 1 0 0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

图像水平方向倾斜(或翻转),由一个角ßsh逆时针的起源,使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││1 tan(ßsh) 0 0│││x│y '│=│0 1 / cos(ßsh) 0 0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

垂直倾斜(或翻转)一个图像,一个角度ßsh逆时针的起源,使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││1 / cos(ßsv) 0 0 0│││x│y '│=│tan(ßsv) 1 0 0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

图像的起源sx规模水平和垂直sy,使用下面的矩阵:

┌──┐┌──┐┌──┐│x '││1 / sx 0 0 0│││x│y '│=│0 1 / sy 0 0 X y│││0 0 0 1 1││││││0 0 0 1 1││││││└──┘└──┘└──┘

在两个方向上均匀缩放,sx = sy。

多个转换可以组合成一个单一的仿射变换。这不是通常交换;应用程序的顺序是很重要的。下面的例子显示了线性转换矩阵相乘的过程,一个旋转矩阵,和另一个线性转换矩阵。基本上,翻译从原来的图像中心点为原点(0,0)在左上角,旋转原点然后翻译回到最初的中心。这个例子的目的,以下是正确的:

C =角的余弦值。

S =角的正弦。

X ^ =图像宽/ 2。图像宽度可以获得使用L_FileInfo(见“示例”)。

Y ^ =图像高度/ 2。图像高度可能获得使用L_FileInfo(见“示例”)。

X = X坐标的点被操纵。

Y = Y坐标的点被操纵。

X ' =新X坐标。

Y ' = Y坐标。

负的符号在X和Y ^ ^最右边的4 x4矩阵表示翻译到原点。因为这是第一步在这个过程中,这个矩阵是最接近4 x1矩阵代表被操纵。相反,翻译回到最初的中心是去年执行的,最左边的4 x4矩阵,X ^ Y ^是积极的。

一旦订单的三个变换矩阵,建立了这三个矩阵的乘法交换律。这里的乘法将从左到右,最左边的和中间矩阵相乘。

┌──┐┌──┐┌──┐┌──┐┌──┐│X '││1 0 0 X ^││C - s 0 0││1 0 0 - X ^│││X│Y '││0 1 0 = Y ^ X││S C 0 0 X││0 1 0 - Y ^│= Y││0 0 0 1 1││││││0 0 1 0 0 0 0 1││││0 0 0 1 1│││││0 0 0 1││0 0 0 1│││└──┘└──┘└──┘└──┘└──┘

乘最左边的4 x4矩阵的第一行以上中间矩阵的第一列提供了左上角的入口在左边矩阵下面。上面的第一行最左边的矩阵乘以第二列的矩阵之上提供第二项下面左边矩阵的第一行。这个贯穿整个矩阵。下面的结果是左矩阵,然后乘以矩阵获得最后的4 x4矩阵。

┌──┐┌──┐┌──┐┌──┐│C - s 0 X ^││1 0 0 - X ^││1 0 0 0│││X│S C 0 Y ^││0 1 0 X - Y ^ 0 1 0 0│││X = Y││0 0 0 1││││0 0 1 0 0 0 0 1││││0 0 0 1│││0 0 0 1││0 0 0 1│││└──┘└──┘└──┘└──┘

乘法运算过程进行,左边的矩阵的行乘以适当的矩阵的列。一旦完成,4 x4矩阵如下所示的结果。这个矩阵将翻译,并将原始图像旋转。

┌──┐┌──┐│C - S 0 (C * (- X ^)) + (S * Y ^) + X ^│││X│年代0 - (S * X ^) - C (C * Y ^) + Y ^ X Y│││1│0 0 0 0│││1 0 0 0 1││││└──┘└──┘

新坐标确定如下:

X ' = (C \ * X) - (S \ * Y) + (C \ * (- X ^)) + (S \ * Y ^) + X ^Y ' = (S \ * X) + (C \ * Y) (\ S * X ^) - (C \ * Y \ *) + Y ^

颜色和色调处理,颜色旋转矩阵

FlashPix格式使用颜色旋转矩阵来允许用户修改了基调和/或一个图像的颜色。这也是通过使用矩阵。给出了矩阵的一般形式如下:

┌──┐┌──┐┌──┐L“│││byy byc1 byc2 0││││C1 '│=│bc1y bc1c1 bc1c2 0 X C1││││C2的││bc2y bc2c1 bc2c2 0││C2│0 0 0 1 1││││││└──┘└──┘└──┘

其中< L, C1, C2, 1 >是一个向量的归一化YCC值用于修改明度,饱和度和颜色。最后一行的三个左边的条目必须保持0。所有内部转换为适当的色彩处理。

首先,是单位矩阵,下面给出。这个图像数据执行任何操作,所以图像本身的结果。

┌──┐┌──┐┌──┐L“│││1 0 0 0││││C1的│X = 0 1 0 0│││C1││C2的││0 0 1 0││C2│0 0 0 1 1││││││└──┘└──┘└──┘

减轻图像的一个因素L1的,设置L1等于根号L1的并使用如下矩阵:

┌──┐┌──┐┌──┐L“│││L1 0 0 0││││C1 ' L1│=│0 0 0 X C1││││C2的││L1 0 0 0││C2│1│││0 0 0 L1│││└──┘└──┘└──┘

的值L1的在0和1之间变暗的图像,而值> 1减轻图像。因此,如果你希望减轻10%的形象,集L1 ' = 1.1

改变图像的饱和度,使用下面的矩阵:

┌──┐┌──┐┌──┐L“│││1 0 0 0││││C1 '│=│Sa 0 0 X C1││││C2的││0 0 Sa 0││C2│0 0 0 1 1││││││└──┘└──┘└──┘

在哪里Sa是饱和的因素。在0和1之间减少饱和饱和因素,形成更多的灰度图像,而值大于1增加饱和度。因此,如果你想增加饱和度10%,集Sa) = 1.1

修改颜色平衡红色,绿色或蓝色:

C = sqrt (C) - 1在哪里C '是理想的因素的暴露水平。增加一个颜色20%,集C ' = 1.2

修改图片的红色平衡,

┌──┐┌──┐┌──┐L“│││1 0 C 0.299 * 0││││C1││= -0.299 * C 1 - 0.299 * 0.299 * C 0 X C1││││C2的││0.701 * 0 0 1 + 0.402 * C││C2│0 0 0 1 1││││││└──┘└──┘└──┘

修改图片的绿色色彩平衡,

┌──┐┌──┐┌──┐L“│││1 -0.114 * -0.299 * C 0││││C1││= -0.587 * C 1 - 0.473 * 0.299 * C 0 X C1││││C2的││1 - 0.288 * -0.587 * 0.114 * C C 0││C2│0 0 0 1 1││││││└──┘└──┘└──┘

修改图片的蓝色色彩平衡,

┌──┐┌──┐┌──┐L“│││1 C -0.114 * 0 0││││C1││= 0.866 * C 1 + 0.772 * 0.299 * C 0 X C1││││C2的││1 - 0.114 * -0.114 * -0.114 * C C 0││C2│0 0 0 1 1││││││└──┘└──┘└──┘

对比修改

图像的对比可能修改使用对比因素(fContrastAdjustment结构)。一个小于1的系数会降低相反,变暗的图像,而因子大于1.0增加了对比,闪电图像。增加20%的对比,设定fContrastAdjustment = 1.2。

锐度修改

清晰度的因素(fFilteringValue)提高或软化一个图像。正值导致图像锐化,而一个负值导致软化或模糊的图像。

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