Flex中Convolution Matrix(卷积矩阵)的应用

SWF: 

You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialize correctly.




Convolution Matrix(卷积矩阵)是得到图像处理的一个初级效果非常有效并快捷的工具。它是一个5X53X3的矩阵,一般使用3X3矩阵就可以得到你的想要的效果,如果一个5X5矩阵的周围一圈值都是0,那么一些程序会自动默认它成3X3矩阵。



 

Convolution Matrix(卷积矩阵)工作原理:

点阵图中的每一个像素被称为“初步像素”,用与卷积矩阵同样面积的“初步像素”从左到右从上到下与卷积矩阵中相应位置的值相乘,再将得到的9个或25个中间值相加,就得到了“初步像素”矩阵中央的一个值的结果值再与Divisor(因子)相除,与Offset(偏移量)相加,最后得到终值。如下图所示:


最初的像素50已经成为42(上图使用因子和偏移量的默认值1, 0):(40 * 0+42 * 1+46 * 0+46 * 0+50 * 0+55 * 0+52 * 0+ 56 * 0+58 * 0=42(过滤器不会作用于原图像,而是建立一个副本)。效果就是原来值为42的像素下移了一位。

Divisor(因子):得到的结果值将被其除;此参数如果与矩阵值的总和相等,那么图象的亮度无变化。如上图矩阵中值的总和为1,那么此值若为1图像则无明暗变化,若为5图像则变暗为原来的1/5,若为0.5图像则变亮为原来的2倍。

Offset(偏移量):得到的结果值将与其相加。

 

Convolution Matrix(卷积矩阵)的应用:

AS中:

import flash.filters.ConvolutionFilter;

var mat:Array = [ 1,0,1,0,1,0,1,0,1 ];

var div:int = 1;

var off:int = 0;

var convMat:ConvolutionFilter = new ConvolutionFilter(3,3,mat,div,off);

img.filters = [convMat];

MXML中:

<fx:Script>

<![CDATA[

private const mat:Array = [ 1,0,1,0,1,0,1,0,1 ];

]]>

</fx:Script>

<s:BitmapImage source="..."/>

<s:filters>

<s:ConvolutionFilter matrixX="3" matrixY="3" matrix="{mat}" divisor="1" bias="0" alpha="0"/>

</s:filters>

 

 

以下是一个Convolution Matrix(卷积矩阵)的效果实例:

ConvolutionMatrixDemo.swf

 

相关链接:

Flex中Transform Matrix(变换矩阵)的应用(1)

Flex中Transform Matrix(变换矩阵)的应用(2)

Flex中Color Matrix(颜色响应矩阵)的应用

 

喜欢我就分享我