高次局所自己相関特徴 HLAC
はじめに
通称:HLAC特徴
性質:位置不変性,加法性などなど
実際にHLAC特徴は一般的に2次までしか使わないです.
しかし,それでは25次元しか抽出できないので,
マスクパターンのステップ幅を1,2,3,4や1,2,4,8などとして,
75次元や100次元程度を抽出するようにします.
このステップ幅は経験則w
サンプルコード
ステップ幅は1で固定.
デバッグをちゃんとしていないので使う際は自己責任で.
void HLACExtractClass::featureExtract(IplImage* input_image, CvMat* feature_mat) const { int h = input_image->height - 1; int w = input_image->width - 1; int wideStep = input_image->widthStep; int feature_num = feature_mat->rows; for(int i = 0; i < feature_num; i++) cvmSet(feature_mat, i, 0, 0.0); double arrayHLAC[25]; for(int i = 0; i < 25; ++i) arrayHLAC[i] = 0.0; // 特徴抽出 for(int iy = 1; iy < h; iy++){ for(int ix = 1; ix < w; ix++){ uchar p5 = (uchar)input_image->imageData[wideStep*iy + ix]; if(p5 != 0) { arrayHLAC[0]++; uchar p1 = (uchar)input_image->imageData[wideStep*(iy-1) + (ix-1)]; uchar p2 = (uchar)input_image->imageData[wideStep*(iy-1) + ix ]; uchar p3 = (uchar)input_image->imageData[wideStep*(iy-1) + (ix+1)]; uchar p4 = (uchar)input_image->imageData[wideStep*iy + (ix-1)]; uchar p6 = (uchar)input_image->imageData[wideStep*iy + (ix+1)]; uchar p7 = (uchar)input_image->imageData[wideStep*(iy+1) + (ix+1)]; uchar p8 = (uchar)input_image->imageData[wideStep*(iy+1) + ix ]; uchar p9 = (uchar)input_image->imageData[wideStep*(iy+1) + (ix+1)]; if(p1 != 0){ arrayHLAC[1]++; if(p8 != 0) arrayHLAC[13]++; if(p3 != 0) arrayHLAC[21]++; if(p7 != 0) arrayHLAC[22]++; } if(p2 != 0){ arrayHLAC[2]++; if(p8 != 0) arrayHLAC[7]++; if(p7 != 0) arrayHLAC[11]++; if(p9 != 0) arrayHLAC[12]++; if(p6 != 0) arrayHLAC[17]++; } if(p3 != 0){ arrayHLAC[3]++; if(p7 != 0) arrayHLAC[6]++; if(p4 != 0) arrayHLAC[9]++; if(p8 != 0) arrayHLAC[14]++; } if(p4 != 0){ arrayHLAC[4]++; if(p6 != 0) arrayHLAC[5]++; if(p9 != 0) arrayHLAC[10]++; if(p2 != 0) arrayHLAC[18]++; if(p8 != 0) arrayHLAC[19]++; } if(p6 != 0){ if(p7 != 0) arrayHLAC[15]++; if(p1 != 0) arrayHLAC[16]++; if(p8 != 0) arrayHLAC[20]++; } if(p9 != 0){ if(p1 != 0) arrayHLAC[8]++; if(p7 != 0) arrayHLAC[23]++; if(p3 != 0) arrayHLAC[24]++; } } } } for(int i = 0; i < feature_num && i < 25; ++i) cvmSet(feature_mat, i, 0, arrayHLAC[i]); return; }
参考文献
http://www.neurosci.aist.go.jp/~kurita/lecture/statimage/statimage.html
豊田崇弘,長谷川修 ,”高次局所自己相関特徴の拡張”,画像電子学会誌, 2005
栗田 多喜夫,大津 展之,佐藤 辰雄,高次局所自己相関特徴を用いた顔画像の識別,情報処理学会 Vol.第45回平成4年後期, No.2(19920928) pp. 247-248