FILETRANSFORMS

变换可以用多种方式来操作图像。下面讨论的转换(用于FlashPix文件)可用于操作空间方向、颜色和色调、对比度和过滤。在某些情况下,例如对比度操作或过滤,可能需要单个值,而对于空间方向、颜色和色调操作,则需要一个值矩阵来完成转换。

用于完成此任务的值存储在下面列出的FILETRANSFORMS结构中。方法将此结构写入文件,以便与图像一起存储L_WriteFileTransforms.方法检查与图像一起存储的转换L_ReadFileTransforms函数,并决定是否以原始状态加载图像,还是以三种转换后的状态之一加载图像。的flags数据成员中设置了ELO_IGNOREVIEWTRANSFORMS和ELO_IGNORECOLORTRANSFORMS标志LOADFILEOPTION结构,然后再加载文件。

注意:通过设置这些标志,您可以告诉系统忽略转换。

为了只加载包含颜色变换效果的图像,你必须设置ELO_IGNOREVIEWTRANSFORMS标志,并清除ELO_IGNORECOLO118金博宝RTRANSFORMS标志。

为了只加载合并了的视图变换效果的图像,你必须设置ELO_IGNORECOLORTRANSFORMS标志并清除ELO_IGNOREVIEW118金博宝TRANSFORMS标志。

最后,要加载包含颜色变换和视图变换的图像,清除ELO_IGNOREVIEWTRANSFORMS和ELO_IGNORECOLORTRANSFORMS标志。118金博宝所有四个加载选项的示例可以在下面的“示例”中看到L_LoadFile

下面将进一步解释空间方向、颜色和色调操作、对比度操作和过滤。

类型定义结构体_FILETRANSFORMS// AffineMatrix翻译,旋转,剪切,倾斜,缩放…L_FLOATA11, a12, a13, a14, 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;/*锐度调整*/} FILETRANSFORMS, * pFILETRANSFORMS;

评论

FILETRANSFORM结构用于L_ReadFileTransforms而且L_WriteFileTransforms来读取或写入FlashPix转换。

空间方向-仿射矩阵

FlashPix支持许多方法来转换图像的空间方向。这些包括剪切、平移、旋转和缩放,并使用4x4矩阵进行描述。将显示图像中的图像点映射到原始图像。一个通用的4x4矩阵如下所示:

──对──对──光盘│x’│a11 a12 a13 a14│y'│=│a21 a22 a23 a24│X││1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

其中x'和y'是变换后的新坐标x和y是旧坐标。放在变量a11到a24中的值决定了您要执行的转换以及更改的程度。新值的计算公式如下:

X ' = a11 * X + a12 * y + a13 * 1 + a14 * 1Y ' = a21 * x + a2 2* Y + a23 * 1 + a24 * 1

首先是单位矩阵,如下所示。这不会对图像数据进行操作,因此结果是图像本身。

──对──对──光盘│x’││1 0 0 0│y’│0 10 0│X y││1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

要转换一个点,请使用以下矩阵:

──对──对──光盘│x′│10 0±X0│y’│0 10 0±Y0│X y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

在哪里X0而且Y0表示每个点的X和Y的变化量。

绕原点逆时针旋转一个点ßr,使用以下矩阵:

──对──对──光盘│x’│cos(ßr) -sin(ßr) 0 0││x│y’│sin(ßr) cos(ßr) 0 0│X│y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

的角度水平地剪切图像ßhh围绕原点逆时针方向,使用以下矩阵:

──对──对──光盘│x'│1 -tan(ßhh) 0 0││x│y’│0 10 0│X y││1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

的角度垂直地剪切图像ß高压围绕原点逆时针方向,使用以下矩阵:

──对──对──光盘│x’││1 0 0 0│y'│=│tan(ßhv) 1 0 0│X│y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

水平地倾斜(或翻转)图像,以…的角度ßsh围绕原点逆时针方向,使用以下矩阵:

──对──对──光盘│x'│1 -tan(ßsh) 0 0││x│y’│0 1/cos(ßsh) 0 0│X│y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

垂直倾斜(或翻转)图像,以…的角度ßsh围绕原点逆时针方向,使用以下矩阵:

──对──对──光盘│x’│1/cos(ßsv) 0 0 0│x│y'│=│tan(ßsv) 1 0 0│X│y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

要将关于原点的图像水平缩放为sx,垂直缩放为sy,使用以下矩阵:

──对──对──光盘│x'│1/sx 0 0 0│y'│=│0 1/sy 0 0│X│y│1│0 0 10 10││1│1│0 0 0 1│├──汉英双语例句

对于两个方向上的均匀缩放,sx = sy。

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

C =夹角的余弦。

S =角的正弦值。

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

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

X =被操纵点的X坐标。

Y =被操纵点的Y坐标。

X' =新的X坐标。

Y' =新的Y坐标。

在最右边的4x4矩阵中,X^和Y^前面的负号表示到原点的平移。由于这是过程中的第一步,所以这个矩阵最接近表示被操纵点的4x1矩阵。相反,回到原始中心的平移是最后执行的,由最左边的4x4矩阵执行,X^和Y^是正的。

一旦建立了三个变换矩阵的阶,这三个矩阵的乘法就是可交换的。这里的乘法将从左到右进行,首先乘以最左边和中间的矩阵。

┌──┐┌──┐┌──┐┌──┐┌──┐│x '││c -s 0 0││c -s 0 0│y '│x│s c 0 0│x│0 10 -y ^│=│y│1│0 0 1 0││0 0 1 0│1│0 0 1││0 0 1││0 0 1├──汉英双语:├──汉英双语

用上面最左边4x4矩阵的第一行乘以上面中间矩阵的第一列,就得到了下面给出的左边矩阵的左上角项。上面最左边矩阵的第一行乘以上面中间矩阵的第二列,就得到了下面左边矩阵的第一行的第二个条目。这贯穿整个矩阵。结果是下面左边的矩阵,然后乘以右边的矩阵得到最终的4x4矩阵。

───────────────────────────────────────│c -s 0 x ^││1 0 0 -x ^│1 0 0 0│s c 0 y ^│x│0 10 -y ^│x│0 1 0 0│=│y│0 0 1 0││0 0 1 0│0 0 0 1││0 0 1││0 0 1├──汉英双语(英文版

乘法过程和前面一样,用左边矩阵的行乘以右边矩阵的列。一旦完成,就会得到如下所示的4x4矩阵。这个矩阵将对原始图像进行平移,旋转和平移。

──碱──碱│c -s 0 (c *(-x ^)) + (s * y ^) + x ^│x│s c 0 -(s * x ^) -(c * y ^) + y ^│x│y│0 0 0 0│1│0 0 1││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││L│C1'│=│bc1y bc1c1 bc1c2 0│X│C1│C2'││bc2y bc2c1 bc2c2 0││C2│1│0 0 0 1│├──汉英双语例句

其中是一个归一化YCC值的向量,用于修改亮度、饱和度和颜色。最后一行最左边的三个元素必须保持为0。所有到适当颜色空间的转换都在内部处理。

首先是单位矩阵,如下所示。这不会对图像数据进行操作,因此结果是图像本身。

──对──对──光盘│l│1 0 0 0│c1 '│0 1 0 0│x│c1│c2’││0 0 10 10│1│0 0 0 1│├──汉英双语例句

使图像变亮:使图像变亮一倍L1的,设置L1等于根号下L1的并使用下面的矩阵:

──对──对──光盘│l│l1 0 0 0││l│c1′│=│0 l1 0 0│x│c1│c2′││0 0 l1 0│1│0 0 0 1│├──汉英双语例句

的值L1的0到1使图像变暗,而> 1使图像变亮。因此,如果您希望图像减亮10%,请设置L1' = 1.1

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

──对──对──光盘│l│1 0 0 0│C1′│=│0 Sa 0 0│X│C1│C2′││0 0 Sa 0││C2│1│0 0 0 1│├──汉英双语例句

在哪里Sa是饱和因子。饱和度因子在0到1之间会降低饱和度,从而创建灰度更高的图像,而大于1的值则会增加饱和度。因此,如果您希望将饱和度增加10%,请设置Sa = 1.1

修改红色、绿色或蓝色的颜色平衡:

C =√(C') - 1在哪里C '是曝光水平的期望因子。增加颜色20%,请设置C' = 1.2

要修改图像的红色平衡,

──对──对──光盘│l '│1 0 0.299* c 0││l│C1││= -0.299 * C 1 - 0.299 * 0.299 * C 0 X C1││││c2 '│0.701* c 01 +0.402* c 0│1│0 0 0 1│├──汉英双语例句

要修改图像的绿色平衡,

──对──对──光盘│1 -0.114* c -0.299* c 0││l│C1││= -0.587 * C 1 - 0.473 * 0.299 * C 0 X C1││││c2 '│-0.587* c 0.114* c 1-0.288* c 0│1│0 0 0 1│├──汉英双语例句

要修改图像的蓝色平衡,

──对──对──光盘│l│1 -0.114* c 0 0││l│C1││= 0.866 * C 1 + 0.772 * 0.299 * C 0 X C1││││c2 '│-0.114* c -0.114* c 1-0.114* c 0│1│0 0 0 1│├──汉英双语例句

对比修改

图像中的对比度可以使用对比度因子(结构中的fContrastAdjustment)进行修改。小于1的因子会降低对比度,使图像变暗,而大于1.0的因子会增加对比度,使图像变亮。要增加20%的对比度,设置f对比度调整= 1.2。

锐度修改

锐度因子(fFilteringValue)锐化或软化图像。正值导致图像锐化,而负值导致图像软化或模糊。

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。