我知道这与编程不太相关,但我需要知道卷积矩阵如何用于 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];

在换句话说,卷积矩阵被用于计算每个结果像素作为源像素的线性组合和包围它的像素。

在除数参数用于除以东西整个结果(这通常是在基体中的所有值的总和),并用于将常数项添加到最终输出值的偏移量。

卷积矩阵独立工作的图像的像素的每个通道上。结果, 所以,你必须了解渠道第一。结果 然后,你可以“玩”这个矩阵互动,如果你有一个Photoshop:进入菜单过滤器 - >其他 - >自定义。基质的中央项目表示当前像素,所有其它代表周围像素。而且不要忘了在底部的“缩放”值。结果 我想,你可以很容易地了解矩阵的工作方式。结果 你可以看看这个东西这里。它描述了卷积矩阵以及

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top