Python Matrix Division - PullRequest
       18

Python Matrix Division

0 голосов
/ 03 декабря 2018

У меня проблема с разделением матриц по элементам, поэтому я имею в виду, что я хочу, чтобы элемент [i, j] первой матрицы (foto_dcp, см. Код) был разделен на элемент [i, j] второй матрицы (Q).

Некоторая справочная информация: я загрузил изображение из своего хранилища.Я сохранил монохромные значения каждого пикселя в матрице под названием «pixelMatrix». Эта команда превращает большую матрицу (размером 128x128) в меньшую (размером 8x8)

foto_dct = skimage.util.view_as_blocks(pixelMatrix, block_shape=(8, 8))

Теперь, после этого мне нужноразделите каждую матрицу в foto_dct на другую матрицу (в этом коде называемую 'Q') поэлементно.

for x in foto_dct:
   for i in range(8):
      for j in range(8):
          x[i,j] = x[i,j] / Q[i,j]

проблема в том, что я получаю неправильные результаты.Это матрица 'Q':

[[ 16  11  10  16  24  40  51  61]
 [ 12  12  14  19  26  58  60  55]
 [ 14  13  16  24  40  57  69  56]
 [ 14  17  22  29  51  87  80  62]
 [ 18  22  37  56  68 109 103  77]
 [ 24  35  55  64  81 104 113  92]
 [ 49  64  78  87 103 121 120 101]
 [ 72  92  95  98 112 100 103  99]]

Это примерная матрица (foto_dct [3,3], хотя я сделал некоторые операции над ней, 3-й столбец матриц, 3-й ряд матриц), если вы помните из шага 1.)

[[613 250 -86  64 -63  59 -44  24]
 [ 38 -84  50 -57  54 -47  35 -19]
 [-16   4  -4   7  -5   4  -3   1]
 [ 10 -18  19 -20  21 -20  16  -9]
 [-17  19 -18  16 -14  11  -7   4]
 [ -7   9 -10  12 -13  11  -9   5]
 [-11  15 -14  15 -14  11  -9   5]
 [ -1   2  -4   5  -5   4  -3   2]]

И вот что я получаю после деления:

[[43 17 -6  4 -4  4 -3  1]
 [ 2 -4  2 -3  3 -2  2 -1]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]]

Как вы можете видеть, например, возьмите элемент [0,0]= 613, поэтому после деления мы должны получить [0,0] = 613/16 = 38,3125 (как вы можете видеть, что это также автоматически округляется?) Кстати, я попытался изменить

x[i,j] = x[i,j] / Q[i,j]

на

x[i,j] = x[i,j] / 2

и получил правильные (хотя и округленные) результаты.Так что это что-то с Q [i, j]


Я также пытался сделать это так:

for x in foto_dct:
    x = np.divide(x,Q)

Но это возвращает мне исходную матрицу, ничего не делая, даже не возвращая код ошибки, даже если он должен делиться поэлементно.Кто-нибудь может мне помочь?

...