PCA图像特征提取算法
PCA图像特征提取算法:
PCA算法基于变量协方差矩阵对信息进行压缩和处理,通常用于数据降维,可将它用于图像矩阵降维,以降维后的矩阵为基础提取图像特征。当提取的图像特征维度比较高时,为了简化计算量以及存储空间,需要对这些高维数据进行一定程度上的降维,并尽量保证数据不失真。此外,PCA算法还可以应用于图像矩阵,它能找到变化大的维,去除掉那些变化不大的维度,这样能更有效提取图像明显特征,便于后期识别算法并进一步加工,因为图像特征组含有的不明显的特征值将会影响识别的精度。
import numpy as np
import cv2
import mlpy
def readpic(fn): #返回图像特征码 fnimg = cv2.imread(fn) img = cv2.resize(fnimg,(500,400)) w = img.shape[1] h = img.shape[0] w_interval = w/20 h_interval = h/10 alltz = [] for now_h in range(0,h,h_interval): for now_w in range(0,w,w_interval): b = img[now_h:now_h + h_interval,now_w:now_w + w_interval,0] g = img[now_h:now_h + h_interval,now_w:now_w + w_interval,1] r = img[now_h:now_h + h_interval,now_w:now_w + w_interval,2] btz = np.mean(b) gtz = np.mean(g) rtz = np.mean(r) alltz.append([btz,gtz,rtz]) result_alltz = np.array(alltz).T pca = mlpy.PCA() pca.learn(result_alltz) result_alltz = pca.transform(result_alltz, k = len(result_alltz) / 2) result_alltz = result_alltz.reshape(len(result_alltz)) return result_alltz
King@_@