예제 #1
0
def pic_handle(img_data, sd, ori_size):
    """
    做PCA处理之后,在还原到原来的维度,然后显示,之后输出信噪比
    """
    Pca = PCA(sd, img_data)
    c_data, w_star = Pca.pca()  # 进行pca降维,获取投影矩阵
    w_star = np.real(w_star)
    print(w_star)
    new_data = w_star * w_star.T * c_data + Pca.mean  # 还原到原来的维度
    total_img = []
    # 图片混合
    for i in range(Pca.data_size):
        if len(total_img) == 0:
            total_img = new_data[:, i].T.reshape(ori_size)
        else:
            total_img = np.hstack(
                [total_img, new_data[:, i].T.reshape(ori_size)])
    # 计算信噪比
    print('信噪比:')
    for i in range(Pca.data_size):
        a = psnr(np.array(data[:, i].T), np.array(new_data[:, i].T))
        print('图', i, '的信噪比为:', a, 'dB')
    # 处理图片
    total_img = np.array(total_img).astype(np.uint8)
    cv2.imwrite('pca image.jpg', total_img)  # 图片显示
    cv2.imshow('pca image', total_img)
    cv2.waitKey(0)
예제 #2
0
# ================== Load Example Dataset  ===================
data = sio.loadmat('data\\ex7data1.mat')
X = data['X']
m, n = X.shape

fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)

ax.plot(X[:, 0], X[:, 1], 'bo')

# =============== Principal Component Analysis ===============
pca = PCA()

X_norm, mu, sigma = pca.featureNormalize(X)

U, S = pca.pca(X_norm)

p1 = mu
p2 = mu + 1.5 * S[0] * U[:, 0].T
data = np.r_[p1, p2].reshape([-1, 2])
ax.plot(data[:, 0], data[:, 1], '-k', linewidth=2)
p2 = mu + 1.5 * S[1] * U[:, 1].T
data = np.r_[p1, p2].reshape([-1, 2])
ax.plot(data[:, 0], data[:, 1], '-k', linewidth=2)

# =================== Dimension Reduction ===================
ax = fig.add_subplot(1, 2, 2)
ax.plot(X_norm[:, 0], X_norm[:, 1], 'bo')

K = 1
예제 #3
0
imlist = glob.glob("data/a_thumbs/*.jpg")
#print imlist
im = array(Image.open(imlist[0]))
#imshow(im)
#show()

m, n = im.shape[0:2]
imageCount = len(imlist)

#create matrix to stor all flattened images
imageMatrix = array([array(Image.open(im)).flatten()
                     for im in imlist], 'f')

#perform pca
V, S, immean = PCA.pca(imageMatrix)

#show some images (mean and 7 first modes
figure()
gray()
subplot(2,4,1)
imshow(immean.reshape(m,n))
for i in range(7):
    subplot(2,4,i+2)
    #convert images back to one dimension
    imshow(V[i].reshape(m,n))
    #imshow(imageMatrix[i].reshape(m,n))

#show()

f = open('font_pca_modes.pkl', 'wb')