我最近一直在做圖像處理,我選擇了 Python 作為我的實(shí)現(xiàn)語言。問題我有兩組矩陣,一組是我的數(shù)據(jù)矩陣(保存圖像的像素值),另一組是內(nèi)核矩陣。我的要求是遍歷數(shù)據(jù)矩陣的每個(gè)元素(不包括邊緣)并計(jì)算特定值(通過使用內(nèi)核矩陣)并將數(shù)據(jù)矩陣中的原始值替換為計(jì)算值。解釋我必須用所有鄰居的總和乘以內(nèi)核矩陣中的元素來替換每個(gè)元素。即,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.我哪里出錯(cuò)了?我是編程新手,如果問題很愚蠢,請?jiān)徫摇?
1 回答

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
要獲得預(yù)期的輸出,您只需更改以下行:
sum = sum + data[i+x-1][j+y-1] * kernelMat[x][y]
到:
sum = data[i+x-1][j+y-1] * kernelMat[x][y]
希望能幫助到你!
添加回答
舉報(bào)
0/150
提交
取消