大家好,又见面了,我是你们的朋友全栈君。
我有一个关于按元素划分矩阵的问题,我的意思是我想要第一个矩阵的元素[I,j]除以第二个矩阵(Q)的元素[I,j]。在
一些背景信息:我从我的存储器加载了一个图像。我把每个像素的单色值存储在一个叫做“pixelMatrix”的矩阵中
此命令将大矩阵(128×128)转换为较小的矩阵(8×8)foto_dct = skimage.util.view_as_blocks(pixelMatrix, block_shape=(8, 8))
现在,在完成这项工作之后,我需要将foto_dct中的每个矩阵除以一个不同的矩阵(在这段代码中称为“Q”)。在
^{pr2}$
问题是我得到了错误的结果。这是矩阵“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]]
如您所见,以element[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)
但这会返回原始矩阵,不做任何事情,甚至不返回错误代码,即使它应该按元素划分。
有人能帮我吗?在
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147545.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...