【问题标题】:Image denoising - Performing a task on each element of image matrix图像去噪 - 对图像矩阵的每个元素执行一项任务
【发布时间】:2018-12-12 14:13:14
【问题描述】:

我最近一直在做图像处理,我选择 Python 作为我的实现语言。

问题

我有两组矩阵,一组是我的数据矩阵(保存图像的像素值),另一组是内核矩阵。我的要求是遍历数据矩阵的每个元素(不包括边)并计算某个值(通过使用核矩阵)并将数据矩阵中的原始值替换为计算值。

说明

我必须用所有邻居的总和乘以内核矩阵中的元素来替换每个元素。 即,d[i][j] = d[i-1][j-1] * k[0][0] + d[i][j-1] * k[0][1]....+ d[i+1][j+1] * k[1][1] 将 k 视为 3 x 3 矩阵。

我的代码 sn-p

data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
kernelMat = [[0, 1, 0], [1, -4, 1], [0, 1, 0]]

rowCount = len(data)
colCount = len(data[0])

for i in range(1, rowCount-1):
    for j in range(1, colCount-1):
        sum = 0
        for x in range(0, 3):
            for y in range(0, 3):
                sum = sum + data[i+x-1][j+y-1] * kernelMat[x][y]
        data[i][j] = sum


Expected output: [[1, 2, 3, 4],
            [5, 0, 0, 8],
            [9, 0, 0, 12],
            [13, 14, 15, 16]] but returning different set of values.

我哪里出错了?我是编程新手,如果这个问题很愚蠢,请原谅我。

【问题讨论】:

标签: python image-processing noise-reduction


【解决方案1】:

要获得预期的输出,您只需更改以下行:

sum = sum + data[i+x-1][j+y-1] * kernelMat[x][y]

到:

sum = data[i+x-1][j+y-1] * kernelMat[x][y]

希望对你有帮助!

【讨论】:

  • 非常感谢。这就是我要找的:) 但我仍然对这里的总和如何累积感到困惑,如果你能抽出一些时间来解释它,我将不胜感激。 :)
猜你喜欢
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2011-08-04
  • 2020-02-15
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多