我知道这与编程无关,但我需要知道卷积矩阵如何用于PHP GD函数。我在谷歌上搜索了很多,但找不到任何可以解释它的东西。
答案 0 :(得分:4)
该操作用每个像素周围像素的加权平均值替换每个像素,其中权重由矩阵给出。这是一个卷积矩阵示例:
1 1 1
1 1 1
1 1 1
这样做是将每个像素替换为以该像素为中心的3x3块的平均值。这是另一个:
0 0 0
0 1 0
0 0 0
这个矩阵没有做任何事情,它给你原始的背部。
权重也可以是负数。该矩阵减去像素旁边的像素的平均值:
0 -1 0
-1 4 -1
0 -1 0
卷积矩阵允许您进行微调模糊和锐化效果。如果滤波器矩阵足够大,您可以使用卷积矩阵调整滤波器的方向性和频率响应。但是,它通常用于快速模糊和锐化。
答案 1 :(得分:3)
答案 2 :(得分:1)
我不是专门针对PHP的,但通常使用卷积矩阵来实现某些类型的图像处理效果。
从GD http://www.php.net/manual/en/function.imageconvolution.php上的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];
换句话说,卷积矩阵用于计算每个结果像素,作为源像素及其周围像素的线性组合。
divisor参数用于将整个结果除以某物(这通常是矩阵中所有值的总和),并且偏移量用于向最终输出值添加常数项。
答案 3 :(得分:0)