对图像数据进行正向主成分旋转

时间:2018-08-20 13:53:30

标签: python opencv classification pca

我正在尝试对图像文件执行正向主成分旋转以对像素进行分类并输出如下图像:enter image description here

我已经使用以下代码执行了标准的主成分分析,以获得以下结果。

#read in image
img = cv2.imread('/Volumes/EXTERNAL/Stitched-Photos-for-Chris/p7_0015_20161005-949am-75m-pass-1.jpg.png',1)
row,col = img.shape[:2]
b,g,r = cv2.split(img)

#create data and pivot to have 3 rows (bBand,gBand,rBand)
data = pd.DataFrame({'bBnad':b.flat[:],'gBnad':g.flat[:],'rBnad':r.flat[:]})
datapivoted = data.T
print(datapivoted.head())
print(datapivoted.shape)
#PCA
scaled_data = preprocessing.scale(data.T)
pca = PCA()
pca.fit(scaled_data)
pca_data = pca.transform(scaled_data)
per_var = np.round(pca.explained_variance_ratio_* 100,decimal
#graph scatter
pca_df = pd.DataFrame(pca_data,index=['bBand','gBand','rBand'],columns=labels)
plt.scatter(pca_df.PC1,pca_df.PC2)
plt.title('My PCA Graph')
plt.xlabel('PC1 - {0}%'.format(per_var[0]))
plt.ylabel('PC2 - {0}%'.format(per_var[1]))

for sample in pca_df.index:
    plt.annotate(sample,(pca_df.PC1.loc[sample],pca_df.PC2.loc[sample]))

plt.show()

这是我运行PCA的结果:

enter image description here

已被告知要进行FPCR,您“找到了一组新颖的正交轴,这些正交轴的原点位于数据均值处并且可以旋转以使数据方差最大化。”

问题 1.寻找从PCA到执行FPCR的更好指导。 2.有关如何获取结果并重新映射到原始图像以获取最终分类图像的说明(图像中的示例)

感谢任何提示或帮助。

0 个答案:

没有答案