0:在24个像素的一维图像里面,由一左一右的结构生成的pattern数量为24除2=12个(2,4,6,8,10…)
1:要统计的是特征产生的数量,也就是所有可能的pattern和image一起卷了几次。
2:要求的就是pattern的数量,以及单个该pattern和iamge能卷几次。
3:前两个for会产生所有可能性的pattern。nx与ny表示在横向与纵向上第几个pattern。他们的尺寸则通过后面的2nx和ny来计算。
4:一维卷积卷的次数由(image尺寸-pattern尺寸+1)除以步长获得。题目里面步长为1,pattern尺寸由(第几个2)获得。
5:二维卷积卷的次数就是两个一维相乘,于是获得了单个pattern和image卷几次。
6:把所有pattern的次数相加就是这个特征产生的数量。
#include <stdio.h>
int main()
{
int nImageRows=24,nImageCols=24;
int nFeatureNum=0;
for(int i=1;i<=nImageCols/2;i++){
for(int j=1;j<=nImageRows;j++){
nFeatureNum+=(nImageCols-2*i+1)*(nImageRows-j+1);
}
printf("%d\n",nFeatureNum);
}
printf("total: %d\n",nFeatureNum);
return 0;
}