题
我知道这与编程不太相关,但我需要知道卷积矩阵如何用于 PHP GD 函数。我在谷歌上搜索了很多,但找不到任何可以很好解释的内容。
解决方案
我在这里详细介绍了卷积滤波器背后的理论:
其他提示
在操作替换与周围的像素,其中所述权重由矩阵给定的加权平均值的每个像素。下面是一个例子卷积矩阵:
1 1 1
1 1 1
1 1 1
这样做是与集中在该像素的3×3块的平均值替换每个像素。这里的另一个:
0 0 0
0 1 0
0 0 0
这矩阵没有做任何事情,它可以让你原来的回来了。
的权重可以是负的,太。此矩阵中减去像素的平均值的像素旁边:
0 -1 0
-1 4 -1
0 -1 0
卷积矩阵允许执行微调模糊和锐化效果。您可以调整方向性和使用卷积矩阵,它是否够大滤波器的频率响应。然而,它通常用于快速正脏和模糊锐化。
我不知道具体为PHP,但在一般的卷积矩阵被用于实现某些类型的图像处理效果。
这PHP手册上GD HTTP采取一个简单的例子:// WWW .php.net /手动/ EN / function.imageconvolution.php :
让我们假设你有一个这样的矩阵:
$M = array(array( 2, 0, 0),
array( 0, -1, 0),
array( 0, 0, -1));
当在应用卷积矩阵的图像,则对于位于图像中(X,Y)的每个像素,在输出对应的像素变为:
$I = $in_image;
$out_image[x,y] = $I[x-1,y-1]*$M[0][0] + $I[x,y-1]*$M[0][1] + $I[x+1,y-1]*$M[0][2]
+ $I[x-1,y] *$M[1][0] + $I[x,y] *$M[1][1] + $I[x+1,y] *$M[1][2]
+ $I[x-1,y+1]*$M[2][0] + $I[x,y+1]*$M[2][1] + $I[x+1,y+1]*$M[2][2];
在换句话说,卷积矩阵被用于计算每个结果像素作为源像素的线性组合和包围它的像素。
在除数参数用于除以东西整个结果(这通常是在基体中的所有值的总和),并用于将常数项添加到最终输出值的偏移量。
不隶属于 StackOverflow