为了账号安全,请及时绑定邮箱和手机立即绑定

图像去噪 - 对图像矩阵的每个元素执行任务

图像去噪 - 对图像矩阵的每个元素执行任务

不负相思意 2021-09-14 20:55:15
我最近一直在做图像处理,我选择了 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 矩阵。我的代码片段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] = sumExpected output: [[1, 2, 3, 4],            [5, 0, 0, 8],            [9, 0, 0, 12],            [13, 14, 15, 16]] but returning different set of values.我哪里出错了?我是编程新手,如果问题很愚蠢,请原谅我。
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

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

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

到:

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

希望能帮助到你!


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信