import os,cv2
import numpy as np
from sklearn.decomposition import IncrementalPCA
input_folder = 'images/'
H,W = 72,72
comp_num = 5
X = []
for name in os.listdir(input_folder):
path = os.path.join(input_folder, name)
img = cv2.imread(path,0)
X.append(np.reshape(img,(1,-1)))
X = np.vstack(X)
print X.shape
transformer = IncrementalPCA(n_components=comp_num * comp_num)
transformer.partial_fit(X)
print 'pc shape:',transformer.components_.shape
vis = np.zeros( (comp_num * H, comp_num * W) )
for y in range(comp_num):
for x in range(comp_num):
x0,y0 = x * W, y * H
pos = y * comp_num + x
data = np.reshape(transformer.components_[pos,:],H*W) * transformer.var_ + transformer.mean_
vis[y0:y0+H, x0:x0+W] = np.reshape(data,(H,W))
print vis.min(), vis.max()
vis = np.uint8(vis)
cv2.imwrite("pc.bmp",vis)
数据可视化: PCA显示特征向量
最新推荐文章于 2025-03-24 16:40:40 发布