这有点复杂,我会试着解释一下。
我的电脑上有一张照片,一张脸的照片。我想将该图像读取到某个矩阵X
,做一些我不会详细说明的操作,因为它相当复杂,但最后我应该得到X=AS
这是我的代码
import numpy as np
import skimage.io as io
from skimage import color
import sklearn.decomposition as dc
X=color.rgb2gray(io.imread('/home/oria/Desktop/1.ppm'))
ica=dc.FastICA()
S=ica.fit(np.matrix.transpose(X))
A=ica.mixing_
B=np.linalg.pinv(A)
S=np.dot(B,X)
Y=np.dot(A,S)
预期的最终结果是Y将近似等于X.
情况并非如此,我认为不是这种情况的原因是灰度图像中的X(这是io.imshow(X)
)
而Y不是(io.imshow(Y)
):
你可以看到它是同一个人,相同的图片,这是好的,但颜色都是扭曲的。所以我想如果我可以将Y转移到graylevel,那么我会得到X = Y。
但每当我做 io.imshow(color.rgb2gray(Y))
时,一切都没有变化。为了进一步检查自己,Y-color.rgb2gray(Y)
确实是零矩阵。好像rgb2gray没有做任何事情。
为什么不起作用?