d1右边的点,d2右上,d3上... 前景点的灰度为1,背景点的灰度0
方法一:d1-d1*d2*d3+d3-d3*d4*d5+d5-d5*d6*d7+d7-d7*d8*d1
方法二:8邻域的01模式和。
int Get8Neighbor01Mode(int* b) { int iNum = 0 ; for( int i = 0 ; i < 8 ; i++ ) { if( ( 0 == b[i] ) && ( 1 == b[(i+1)%8] ) ) { iNum++; } } return iNum ; } int Get8NeighborConnect(int* b) { int iNum = 0 ; for( int i = 0 ; i < 8 ; i+= 2 ) { iNum += b[i]; iNum -= b[i]*b[(i+1)%8]*b[(i+2)%8]; } return iNum ; } for( int i = 0 ; i < 0xFF ; i++ ) { int b[8] = {0}; for( int j = 0 ; j < 8 ; j++ ) { b[j] = (i >> j) & 1 ; } int n1 = Get8Neighbor01Mode(b); int n2 = Get8NeighborConnect(b); }
这两种方法的结果不一样,256种情况有90多种不同。
这90多种情况的bmp见压缩包,http://download.csdn.net/download/he_zhidan/9972691
下面试举几例: