Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卷积矩阵是如何工作的?_Php_Graphics_Matrix_Convolution - Fatal编程技术网

Php 卷积矩阵是如何工作的?

Php 卷积矩阵是如何工作的?,php,graphics,matrix,convolution,Php,Graphics,Matrix,Convolution,我知道这与编程不太相关,但我需要知道卷积矩阵如何用于PHP GD函数。我在谷歌上搜索了很多,但找不到任何能很好解释它的东西。该操作将每个像素替换为周围像素的加权平均值,其中权重由矩阵给出。下面是一个卷积矩阵示例: 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

我知道这与编程不太相关,但我需要知道卷积矩阵如何用于PHP GD函数。我在谷歌上搜索了很多,但找不到任何能很好解释它的东西。

该操作将每个像素替换为周围像素的加权平均值,其中权重由矩阵给出。下面是一个卷积矩阵示例:

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

卷积矩阵允许您进行微调模糊和锐化效果。如果卷积矩阵足够大,可以使用卷积矩阵调整滤波器的方向性和频率响应。但是,它通常用于快速n脏模糊和锐化。

该操作将每个像素替换为周围像素的加权平均值,其中权重由矩阵给出。下面是一个卷积矩阵示例:

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

卷积矩阵允许您进行微调模糊和锐化效果。如果卷积矩阵足够大,可以使用卷积矩阵调整滤波器的方向性和频率响应。但是,它通常用于快速n脏模糊和锐化。

我不知道PHP的具体用途,但通常使用卷积矩阵来实现某些类型的图像处理效果

一个简单的例子摘自关于GD的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];
换句话说,卷积矩阵用于将每个结果像素计算为源像素及其周围像素的线性组合


除数参数用于将整个结果除以某个值(这通常是矩阵中所有值的总和),偏移量用于向最终输出值添加一个常数项。

我不知道PHP的具体情况,但通常使用卷积矩阵来实现某些类型的图像处理效果

一个简单的例子摘自关于GD的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,你可以交互地“玩”这个矩阵:进入菜单Filters->Other->Custom。矩阵的中心项表示当前像素,所有其他项表示周围像素。不要忘记底部的“刻度”值。
我认为,您可以很容易地理解此矩阵的工作方式。

你可以看看这个东西。它还描述了卷积矩阵。

卷积矩阵独立地作用于图像像素的每个通道。
因此,您必须先了解相关信息。
然后,如果你有Photoshop,你可以交互地“玩”这个矩阵:进入菜单Filters->Other->Custom。矩阵的中心项表示当前像素,所有其他项表示周围像素。不要忘记底部的“刻度”值。
我认为,您可以很容易地理解此矩阵的工作方式。

你可以看看这个东西。它还描述了卷积矩阵。

我在这里介绍了卷积滤波器背后的大量理论:


我在这里探讨了卷积滤波器背后的大量理论:


像素的“值”是多少?x/y坐标或颜色值?Hussain,该值始终是某些颜色空间中的颜色表示,如灰度、RGB等。在后者中,每个像素有三个“值”,每个通道一个。像素的“值”表示什么?x/y坐标,或颜色值?Hussain,该值始终是某些颜色空间中的颜色表示,如灰度、RGB等。在后者中,每个像素有三个“值”,每个通道一个。参见此:参见此:我曾经看到它们被用于交通规划。。。我吓坏了。我曾经看到他们被用于交通规划。。。这把我吓坏了。