2017-09-01 4 views
1

イメージにPCAを適用して、最初の2つのPCの2次元散布図を作成し、さらに高密度の領域を特定し、それをROI(関心領域)。基本的には、イメージセグメンテーションのためのPCAです。
しかし、私はmatplotlibを初めて使用しているので、PCをプロットする方法について頭を悩ますことはできませんか?
イメージPCの2次元散布図

from skimage import io 
from skimage import exposure 
import os 
import matplotlib.pyplot as plt 
import numpy as np 
from sklearn.decomposition import PCA 
images = io.imread_collection(image_path) 
images_equalized = [] 
for i in range(len(images)): 
    images_equalized.append(exposure.equalize_hist(images[i])) 
pca = PCA(n_components=2) 
im_pca = pca.fit_transform(images_equalized[35]) 

は、ここで私はロードし、複数の画像を正規化し、私の最初のコードであり、そのうちの一つにPCAを実行しよう(?方法により、ヒストグラム等化はPCAの前に画像を正規化するための正しい方法です)

今、散布図の作成方法は?
plt.imshow(im_pca)
plt.show()

画像形状は、形状の新しい配列(n_samples、n_components)を返すpca.fit_transform()(508、636)

答えて

1

あります。これは、biplot scatterとしてプロットできるスコアデータです。

各コンポーネントのスコアは配列の2番目の次元にあるので、配列にインデックスを付けて次のようにプロットすることができます。

im_pca = pca.fit_transform(images_equalized[35]) 

plt.scatter(im_pca[:,0], im_pca[:,1])