我正在对灰度图像进行奇异值分解(阅读:big matrix)via numpy.linalg.问题是,当我试图从分解中重建图像时,我得到了一个荒谬的值矩阵,这些值不能与源图像的像素相对应。谷歌没有给予任何答案,可能是什么问题,代码本身是太简单的任何错误,编写它。
代码和图片如下:image
import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import svd
from skimage.io import imread
img = imread(r'chain_small.JPG')
img = img.mean(axis=2)
U, S, VT = svd(a, full_matrices = False)
print(U @ np.diag(S) @ VT)
以下是三次连续运行的三个输出:
-128874.27699761 -3386.92849387]
[ 203461.80899605 75002.13673717 126260.20741683 ... 158491.47548145
157982.81363556 137954.09746291]
[ 293467.76004879 -90981.28699457 -28559.21588133 ... -72627.56336045
-57172.40331332 -25768.69870728]
...
[ 29835.15592901 20815.81893506 -5236.87874038 ... -19871.19469429
29210.33682942 15554.95475245]
[-104265.48680219 -17915.06944458 5938.52625767 ... 15497.27973241
-8433.1313703 -9386.58231012]
[ -70906.08392422 -15034.78054189 5742.7956658 ... -1110.09557333
-13252.87395276 -19236.4320781 ]]
2: [[-1.40339175e+05 1.84856533e+03 -1.70047632e+04 ... 4.07286857e+04
8.27626972e+04 8.77105170e+02]
[ 9.23440572e+05 1.61186883e+03 7.16404929e+04 ... -1.41672490e+05
3.35168593e+05 -4.94743352e+03]
[ 2.29648889e+05 9.32584084e+04 -3.03421382e+04 ... 3.09541683e+05
2.39098724e+04 -7.89459012e+03]
...
[ 5.31486822e+04 2.55513683e+04 -5.36843672e+03 ... -4.51257913e+03
1.40963817e+04 1.04165914e+04]
[-5.33436869e+04 -1.47708525e+04 1.70761244e+04 ... -1.82554352e+04
-4.00233256e+04 -5.65965532e+04]
[-3.01219658e+04 -1.66921447e+04 1.73071052e+04 ... -3.37167442e+04
-4.62436316e+04 -6.80044548e+04]]
3: [[ 170683.38688212 28358.22126302 -23356.74822456 ... 88247.14000447
-25268.54838009 -59126.11297314]
[ 548066.38756864 -65846.99861054 64624.47642912 ... 31491.42901022
-24204.73172982 19110.93935304]
[ 667140.05662532 39098.12090819 37824.13446388 ... -119091.87577846
249393.0348422 54838.74200844]
...
[ 11244.29360774 5379.79454404 -8576.07360678 ... 4032.56408047
28892.94580266 7560.6402372 ]
[ -80855.17281102 -10303.81468742 14164.90681016 ... 17284.69756787
-10799.40786149 -33744.18482325]
[ -48865.0672561 -10991.37326434 13474.09716008 ... 1738.80247443
-17218.39061216 -43756.29097246]]```
Apologies for the sheer stupidity of the question and formatting but I am genuinely lost on this one.
1条答案
按热度按时间z9zf31ra1#
什么是你的代码中的“a”变量?我不能测试代码,因为'a'没有定义。嫌疑人在这个地方你需要img。
反而