1

我正在学习卷积矩阵,我了解它们是如何工作的,但我不明白如何事先知道矩阵的输出会是什么样子。例如,假设我想为图像添加模糊效果,我可以猜测 10,000 多种不同的数字组合,然后才能得到正确的组合。

我确实知道这个公式会给我一个模糊的效果,但我不知道为什么。

float[] sharpen = new float[] {
     1/9f, 1/9f, 1/9f,
     1/9f, 1/9f, 1/9f,
     1/9f, 1/9f, 1/9f
};

任何人都可以向我解释这是如何工作的,或者给我一些文章来解释这一点吗?我想事先知道矩阵的可能输出是什么而不用猜测。

基本上我想知道为什么我们把那个号码放在文件里,为什么不把其他号码放在里面?

4

3 回答 3

4

这个链接用一个简单的例子解释了卷积矩阵是如何工作的。

您问题中的矩阵模糊图像的原因是因为每个像素都成为其所有周围像素的平均值。换句话说,位于动作区域中心的像素的新值等于以下公式:

new_value = (1/9)(top-left-neighbor)    + (1/9)(top-neighbor)    + (1/9)(top-right-neighbor) +
            (1/9)(left-neighbor)        + (1/9)(self)            + (1/9)(right-neighbor)     +
            (1/9)(bottom-left-neighbor) + (1/9)(bottom-neighbor) + (1/9)(bottom-right-neighbor)

新值是 9 个像素的 1/9(包括原始像素值),结果是矩阵运算的 3x3 正方形的“平均值”。这种“平均”效果会创建您在应用矩阵后看到的模糊。

为卷积矩阵选择值完全取决于您想要达到的效果。请记住,矩阵应用于原始图像,新像素值被复制到目标图像。这意味着新值不会影响矩阵在相邻像素上的应用……只有原始值会被输入矩阵。

于 2012-11-28T17:02:34.000 回答
1

用java代码检查卷积矩阵教程

于 2013-09-05T11:05:41.390 回答
0

卷积操作基本上是一个过滤器:把它想象成一个遍历图像并在本地执行操作的工具。

您可以从阅读本文开始,如果您想更深入地搜索 Wikipedia 中的卷积 - 欢迎了解一些真实的分析和信号处理理论知识,但如果您有兴趣,可以提出来。

于 2012-11-28T17:01:59.103 回答