Распознавание образов для программистов

ВНИМАНИЕ! БЛОГ ПЕРЕЕХАЛ ПО АДРЕСУ
RECOG.RU

5 Январь 2010

10. Распознавание текста при помощи контуров

написано в рубрике: OpenCV — Кручинин Александр @ 8:20 ДП

Что же можно делать при помощи полученных контуров (см. параграфы 8-9)? Много чего, например, использовать для распознавания текста. В известной (и единственной полноценной) книге, посвященной OpenCV «Learning OpenCV» (Bradsky G., Kaehler A.) на английском языке пояснено, как можно осуществить распознавание текста. Посмотрим и мы, как это можно сделать.

В OpenCV активно применяются понятия моментов. Момент – это характеристика контура, объединённая (суммированная) со всеми пикселями контура. Момент (p,q) определяется как:

10.1

Здесь p – порядок x, q – порядок y, где порядок означает, так сказать, мощность, на которой соответствующий компонент взят в сумме с другими отображенными.

Описывает моменту структура CvMoments.

 

CvMoments

typedef struct CvMoments{

// пространственные моменты

double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;

// центральные моменты

double mu20, mu11, mu02, mu30, mu21, mu12, mu03;

// m00 != 0 ? 1/sqrt(m00) : 0

double inv_sqrt_m00;

} CvMoments;

 

В структуре появились ещё и центральные моменты, которые вычисляются по следующей формуле:

10.2

где xavg = m10/ m00 и yavg = m01/ m00.

Центральные моменты можно нормализовать с помощью функции cvGetNormalizedCentralMoment(). Нормализованные моменты вычисляются следующим образом:

10.3

Ну и остались ещё инвариантные моменты. Идея здесь в том, что комбинируя различные нормализованные центральные моменты, возможно создавать инвариантные функции, представляющие различные аспекты изображения, которые не зависят от масштабов, вращения и отражения.

В документации к OpenCV приведены следующие формулы:

 h12002

 

 h2=(η2002)²+4η11²

 

 h3=(η30-3η12)²+ (3η2103

 

 h4=(η3012)²+ (η2103

 

 h5=(η30-3η12)(η3012)[(η3012)²-3(η2103)²]+(3η2103)(η2103)[3(η3012)²-(η2103)²]

 

 h6=(η2002)[(η3012)²- (η2103)²]+4η113012)(η2103)

 

 h7=(3η2103)(η2103)[3(η3012)²-(η2103)²]-(η30-3η12)(η2103)[3(η3012)²-(η2103)²]

 

Но теория теорией, а как применить знания на практике. Помимо изученного в предыдущих параграфах нам понадобится несколько функций.

 

cvMoments

void cvMoments(

const CvArr* arr,

CvMoments* moments,

int binary=0

);

Параметры:

arr

Изображение, с которого мы хотим получить моменты (не забываем про то, что это можно применять к участку изображения с помощью ROI).

moments

Сюда будут записываться моменты.

binary

Если этот флаг не равен 0, то все не нулевые пиксели приравниваются к единице.

 

cvGetHuMoments

void cvGetHuMoments(

CvMoments* moments,

CvHuMoments* hu_moments

);

Параметры

moments

Моменты полученные в предыдущей функции, модифицированные cvGetNormalizedCentralMoment().

hu_moments

Результирующие инвариантные моменты.

 

Пусть у нас есть картинка, содержащая алфавит (Рис. 10.1)

Рис. 10.1. Алфавит

Рис. 10.1. Алфавит

Листинг программы, считающей моменты приведён ниже с комментариями:

Листинг 10.1. Получение моментов

//1. загрузка картинки

      IplImage *image = 0;

      image = cvLoadImage( “ex.bmp”, 1 );

 

      //2. Поиск контуров

      cvNamedWindow( “result2″, 1 );

      cvNamedWindow( “result1″, 1 );

      CvMemStorage* storage1 = cvCreateMemStorage(0);

      CvSeq* contours = 0;

      IplImage *image1 =  cvCreateImage( cvSize(image->width,image->height), 8, 1 ); ;

      cvCvtColor( image, image1, CV_BGR2GRAY );

      cvThreshold( image1, image1, 250, 255, CV_THRESH_BINARY );

      cvFindContours( image1, storage1, &contours, sizeof(CvContour),

                  CV_RETR_TREE ,CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );

//делаем CV…TREE т.к. нам нужно получить внешние и внутренние контуры

 

      IplImage* cnt_img = cvCreateImage( cvSize(image->width,image->height), 8, 3 );

      CvSeq* _contours = contours;

      _contours->h_next=0;

      CvSeq* h_next;

      CvSeq* contours1=_contours->v_next;

      cvShowImage( “result1″, image1 );

      CvMoments moments;

      CvHuMoments HuMoments;

      //Создаём файлы, куда будем записывать моменты

      FILE *f,*f1,*f2;

      f=fopen(”data.txt”,”w”);

      f1=fopen(”data1.txt”,”w”);

      f2=fopen(”data2.txt”,”w”);

      char buf[256];

      //Это то, что записано в файле – обучающая выборка

      char alfav[]={”ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210″};

      int i=0;

      do{

            cvZero( cnt_img );          

            h_next=contours1->h_next;         

            contours1->h_next=0;

            cvDrawContours( cnt_img, contours1, CV_RGB(255,0,0), CV_RGB(0,255,0),2, 1, CV_AA, cvPoint(0,0) );        

            //считаем моменты здесь

            cvCvtColor( cnt_img, image1, CV_BGR2GRAY );

            //Можно было обойтись без преобразования цвета, пименив binary

            cvMoments(image1,&moments);

            cvGetHuMoments(&moments,&HuMoments);

            //Выводим моменты в файл

            sprintf(buf,”%c:\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t\n”,alfav[i],HuMoments.hu1,HuMoments.hu2,HuMoments.hu3

                  ,HuMoments.hu4,HuMoments.hu5,HuMoments.hu6,HuMoments.hu7);

            fputs(buf,f);

            sprintf(buf,”%c:\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t\n”,alfav[i],moments.m00,moments.m01,moments.m02,

                  moments.m03,moments.m10,moments.m11,moments.m12,moments.m20,moments.m21,moments.m30);

            fputs(buf,f1);

            sprintf(buf,”%c:\t%e\t%e\t%e\t%e\t%e\t%e\t%e\t\n”,alfav[i],moments.mu02,moments.mu03,

                  moments.mu11,moments.mu12,moments.mu20,moments.mu21,moments.mu30);

            fputs(buf,f2);

            contours1=h_next;

            i++;

            if (h_next==NULL) break;                

      }while(true);

      fclose(f);

      fclose(f1);

      fclose(f2);

           

 

      cvReleaseImage( &cnt_img );

      cvReleaseImage( &image );

      cvReleaseImage( &image1 );

      cvReleaseMemStorage( &storage1 );

 

Ниже представлено содержимое файлов.

 

data.txt

Z:     3.984919e-003 1.287688e-006 2.687221e-014 6.372003e-015 7.911711e-032 -3.302881e-018      -8.338069e-029   
Y:     5.148968e-003 2.208064e-006 4.985195e-008 7.690735e-010 4.762011e-018 1.142805e-012 1.624561e-020
X:     4.787206e-003 1.744164e-006 1.204070e-011 1.376395e-011 -1.437680e-023      1.301141e-014 1.766064e-022   
W:     5.527161e-003 5.874380e-008 3.635490e-009 6.980813e-010 1.112075e-018 1.691946e-013 -6.105327e-021      
V:     4.937904e-003 4.138565e-008 4.693884e-008 1.879257e-012 -5.581365e-022      3.823056e-016 2.666051e-024   
U:     4.473054e-003 5.562624e-007 5.405464e-009 2.032533e-010 2.130442e-019 1.515924e-013 -8.213423e-022      
T:     4.378969e-003 1.423225e-006 1.902080e-008 7.780806e-010 2.993291e-018 9.282418e-013 -9.912487e-021      
S:     3.974653e-003 8.214607e-007 8.779487e-015 3.582633e-015 1.300299e-029 -1.901339e-018      -1.531791e-029   
R:     5.115272e-003 8.410446e-007 6.545326e-009 5.466863e-010 4.767339e-019 1.388932e-013 -9.176810e-019      
Q:     6.628005e-003 3.173382e-006 1.134230e-009 1.668919e-010 -7.222966e-020      2.105708e-013 -7.433864e-021   
P:     5.349237e-003 2.052694e-006 1.284690e-008 4.374450e-010 -5.387050e-019      5.014845e-013 -8.861115e-019   
O:     6.248033e-003 1.184363e-007 1.086412e-013 3.006173e-014 -1.367848e-027      8.083947e-018 -1.039446e-027   
N:     4.100139e-003 5.614396e-007 4.176275e-010 1.678961e-011 1.360251e-021 -9.846928e-015      3.553609e-022   
M:     4.506353e-003 2.376644e-008 1.088658e-011 9.856383e-010 -8.246379e-020      -1.464417e-013       6.019934e-020
L:     5.437270e-003 3.901749e-006 4.263642e-008 1.833126e-009 4.238559e-018 6.032498e-013 -1.564201e-017      
K:     4.615566e-003 7.142738e-007 1.442763e-009 3.684745e-010 2.423311e-019 -8.919160e-014      1.159988e-019   
J:     5.109741e-003 3.994438e-006 2.305578e-009 1.807177e-010 -1.032055e-019      -1.672179e-013       5.437126e-020
I:     5.640695e-003 8.377988e-006 2.196419e-014 8.129012e-015 2.836185e-029 2.348090e-017 1.048530e-028
H:     4.472321e-003 3.083821e-007 6.908701e-015 4.689146e-015 1.245271e-029 2.459809e-018 2.360623e-029
G:     4.186408e-003 2.886271e-008 2.532166e-010 1.050421e-010 -1.213530e-020      -4.457321e-015      -1.209201e-020
F:     4.379144e-003 2.466410e-006 1.773370e-008 3.403112e-010 5.734369e-019 2.271561e-013 6.083511e-019
E:     3.893560e-003 8.275890e-007 1.456216e-011 5.149285e-011 -1.409969e-021      -4.683854e-014       1.468353e-023
D:     6.204945e-003 1.251260e-006 7.843241e-009 1.582306e-011 -5.107560e-021      -1.697884e-014       2.232638e-021
C:     5.303273e-003 3.228359e-007 3.293276e-009 3.763954e-010 -3.732468e-019      -1.911164e-013      -1.905300e-019
B:     5.978232e-003 8.256085e-007 4.037311e-009 2.266908e-012 2.167894e-022 1.953246e-015 5.867844e-024
A:     5.376205e-003 5.580145e-007 3.783235e-008 8.360696e-010 1.127355e-018 2.942606e-014 -4.564993e-018      
9:     5.581510e-003 2.942528e-006 4.606066e-009 8.190901e-010 -3.778130e-019      1.396912e-012 -1.545461e-018   
8:     6.416604e-003 1.563235e-006 7.570402e-014 1.246740e-011 1.165450e-023 1.556598e-014 3.298224e-024
7:     5.938822e-003 7.107731e-006 7.459944e-008 6.431850e-009 6.015724e-017 7.093164e-012 -1.273983e-016      
6:     5.645375e-003 3.069150e-006 4.892099e-009 8.469374e-010 -1.029830e-019      1.452139e-012 -1.720871e-018   
5:     4.484899e-003 2.190228e-006 1.147849e-009 1.497562e-010 4.869946e-020 1.145720e-013 3.851620e-020
4:     5.391954e-003 3.118850e-006 2.744431e-008 2.458470e-009 1.990587e-017 3.168575e-012 -3.399453e-018      
3:     5.084270e-003 3.114175e-006 4.489513e-009 4.851954e-010 3.717373e-020 -5.576531e-013      -7.151361e-019   
2:     4.723546e-003 1.827829e-006 3.476099e-010 9.531098e-011 2.414414e-022 -1.266137e-013      -1.734676e-020   
1:     6.061664e-003 1.323328e-005 8.933567e-009 1.134321e-009 2.538586e-018 3.745031e-012 2.567925e-018
0:     6.624947e-003 1.414681e-006 5.952404e-014 2.525659e-014 -9.752811e-028      2.927483e-017 -8.844502e-029   

data1.txt

Z:     2.719600e+004 1.455464e+006 7.978052e+007 4.471696e+009 3.613029e+007 1.933674e+009 1.059970e+011       4.800069e+010 2.569064e+012 6.377244e+013
Y:     2.272100e+004 1.167801e+006 6.173459e+007 3.355010e+009 2.898102e+007 1.489550e+009 7.874351e+010       3.696673e+010 1.899991e+012 4.715410e+013
X:     2.707500e+004 1.451205e+006 8.002229e+007 4.528713e+009 3.315527e+007 1.777118e+009 9.799448e+010       4.060226e+010 2.176292e+012 4.972347e+013
W:     2.741700e+004 1.438320e+006 7.762399e+007 4.304084e+009 3.214692e+007 1.686455e+009 9.101546e+010       3.769482e+010 1.977501e+012 4.420250e+013
V:     2.339400e+004 1.187540e+006 6.168948e+007 3.278798e+009 2.621340e+007 1.330660e+009 6.912414e+010       2.937388e+010 1.491089e+012 3.291686e+013
U:     2.588200e+004 1.343557e+006 7.149321e+007 3.895889e+009 2.765536e+007 1.435613e+009 7.639167e+010       2.955147e+010 1.534040e+012 3.157891e+013
T:     2.415600e+004 1.249811e+006 6.628982e+007 3.603023e+009 2.453086e+007 1.269206e+009 6.731850e+010       2.491246e+010 1.288947e+012 2.530094e+013
S:     2.668600e+004 1.428142e+006 7.815210e+007 4.366836e+009 2.573912e+007 1.377371e+009 7.536865e+010       2.482694e+010 1.328464e+012 2.394816e+013
R:     2.618100e+004 1.427869e+006 7.985620e+007 4.567449e+009 2.388565e+007 1.302899e+009 7.287799e+010       2.179306e+010 1.188952e+012 1.988520e+013
Q:     2.600500e+004 1.484636e+006 8.755681e+007 5.317212e+009 2.239751e+007 1.278911e+009 7.543750e+010       1.929214e+010 1.101790e+012 1.661877e+013
P:     2.212500e+004 1.173237e+006 6.380969e+007 3.552911e+009 1.784583e+007 9.461201e+008 5.144514e+010       1.439531e+010 7.630214e+011 1.161278e+013
O:     2.097000e+004 1.122292e+006 6.151329e+007 3.447266e+009 1.586416e+007 8.490324e+008 4.653579e+010       1.200281e+010 6.423764e+011 9.082290e+012
N:     2.907300e+004 1.549795e+006 8.462428e+007 4.725705e+009 2.047516e+007 1.091315e+009 5.958120e+010       1.442144e+010 7.685457e+011 1.015859e+013
M:     3.199100e+004 1.742450e+006 9.713322e+007 5.529094e+009 2.087054e+007 1.136760e+009 6.336960e+010       1.361807e+010 7.417418e+011 8.887375e+012
L:     2.280500e+004 1.266065e+006 7.197394e+007 4.177439e+009 1.366370e+007 7.590030e+008 4.316931e+010       8.187793e+009 4.550860e+011 4.907117e+012
K:     2.887100e+004 1.545848e+006 8.502336e+007 4.793366e+009 1.583348e+007 8.478996e+008 4.664279e+010       8.685015e+009 4.651609e+011 4.764799e+012
J:     2.279800e+004 1.220576e+006 6.696739e+007 3.757584e+009 1.132153e+007 6.057105e+008 3.321078e+010       5.623332e+009 3.006393e+011 2.793586e+012
I:     1.984800e+004 1.062218e+006 5.852858e+007 3.312253e+009 8.802955e+006 4.711133e+008 2.595850e+010       3.904814e+009 2.089764e+011 1.732337e+012
H:     2.828600e+004 1.513854e+006 8.303209e+007 4.659119e+009 1.110274e+007 5.942132e+008 3.259148e+010       4.359579e+009 2.333225e+011 1.712439e+012
G:     2.939700e+004 1.574788e+006 8.623984e+007 4.820369e+009 1.003646e+007 5.376281e+008 2.944121e+010       3.428298e+009 1.836375e+011 1.171645e+012
F:     2.581100e+004 1.336598e+006 7.096645e+007 3.860836e+009 7.408647e+006 3.832165e+008 2.032304e+010       2.127703e+009 1.099299e+011 6.113951e+011
E:     2.954800e+004 1.581354e+006 8.672796e+007 4.865947e+009 6.970409e+006 3.730427e+008 2.045875e+010       1.645631e+009 8.807080e+010 3.888201e+011
D:     2.124800e+004 1.137316e+006 6.252894e+007 3.523848e+009 3.891206e+006 2.082812e+008 1.144972e+010       7.137557e+008 3.820482e+010 1.311339e+011
C:     2.509900e+004 1.340030e+006 7.338727e+007 4.115049e+009 3.326714e+006 1.775665e+008 9.723995e+009       4.424324e+008 2.360888e+010 5.903862e+010
B:     2.338700e+004 1.258632e+006 6.960383e+007 3.946089e+009 1.872498e+006 1.008613e+008 5.581227e+009       1.513255e+008 8.158754e+009 1.234167e+010
A:     2.439000e+004 1.358637e+006 7.742835e+007 4.501437e+009 6.765950e+005 3.785625e+007 2.165309e+009       2.022144e+007 1.139340e+009 6.436013e+008
9:     2.186300e+004 1.155083e+006 6.276260e+007 3.498015e+009 4.039932e+007 2.134330e+009 1.159658e+011       7.465239e+010 3.943803e+012 1.379491e+014
8:     2.273100e+004 1.191434e+006 6.442915e+007 3.584449e+009 4.081390e+007 2.139240e+009 1.156836e+011       7.328338e+010 3.841110e+012 1.315863e+014
7:     1.830000e+004 9.043640e+005 4.610363e+007 2.423463e+009 3.191267e+007 1.577246e+009 8.041374e+010       5.565186e+010 2.750805e+012 9.705115e+013
6:     2.176300e+004 1.136217e+006 6.106460e+007 3.371652e+009 3.684843e+007 1.923728e+009 1.033857e+011       6.239153e+010 3.257112e+012 1.056425e+014
5:     2.666000e+004 1.395770e+006 7.519284e+007 4.158688e+009 4.371179e+007 2.288465e+009 1.232810e+011       7.167102e+010 3.752160e+012 1.175155e+014
4:     1.943700e+004 1.048955e+006 5.796093e+007 3.270896e+009 3.086312e+007 1.665580e+009 9.203483e+010       4.900681e+010 2.644725e+012 7.781783e+013
3:     2.530300e+004 1.338442e+006 7.297179e+007 4.089183e+009 3.888059e+007 2.056502e+009 1.121110e+011       5.974501e+010 3.159853e+012 9.180751e+013
2:     2.675500e+004 1.422304e+006 7.778456e+007 4.365805e+009 3.970028e+007 2.110487e+009 1.154207e+011       5.891027e+010 3.131713e+012 8.741731e+013
1:     1.904300e+004 1.022936e+006 5.665332e+007 3.224128e+009 2.723548e+007 1.463276e+009 8.105363e+010       3.895294e+010 2.093194e+012 5.571227e+013
0:     2.106100e+004 1.106065e+006 5.982054e+007 3.323638e+009 2.905397e+007 1.525833e+009 8.252333e+010       4.008160e+010 2.104973e+012 5.529650e+013

data2.txt

Z:     1.887617e+006 -5.880542e+003      6.892790e+004 6.710124e+003 1.059719e+006 1.387875e+002       1.153125e+003
Y:     1.712619e+006 5.962101e+006 -3.781172e+001      3.499232e+003 9.455037e+005 -3.804097e+006      -5.863281e+002
X:     2.238509e+006 -4.032637e+005      1.379797e+004 1.840072e+003 1.270779e+006 -8.776046e+003      -1.764231e+005
W:     2.168454e+006 4.342566e+006 -4.032191e+002      9.022726e+002 1.986268e+006 -1.054032e+006      -5.693297e+003
V:     1.406873e+006 4.447790e+006 -2.462873e+002      3.043337e+002 1.295539e+006 -4.562540e+006      -1.238125e+002
U:     1.748007e+006 3.133171e+006 -4.232805e+002      2.740152e+002 1.248393e+006 -1.596740e+006      -2.062039e+003
T:     1.625653e+006 5.024220e+006 -1.672494e+002      2.379868e+003 9.295291e+005 -2.494487e+006      -4.394699e+003
S:     1.722906e+006 -7.506285e+002      -9.748828e+004      3.592572e+001 1.107613e+006 -3.329492e+003       -5.678531e+003     
R:     1.982553e+006 -4.027594e+006      2.148203e+005 -4.591957e+005      1.523684e+006 1.527515e+006       1.147852e+006
Q:     2.798342e+006 -9.593725e+005      2.287581e+005 7.197755e+005 1.683913e+006 -2.139029e+005      -1.499672e+006
P:     1.595673e+006 3.305712e+003 -2.023397e+005      -1.721482e+006      1.022862e+006 -1.526049e+006       1.700019e+006
O:     1.449423e+006 -2.895482e+003      -5.797397e+002      8.945010e+002 1.298092e+006 -7.538417e+003       -4.504822e+003     
N:     2.009328e+006 4.145778e+005 -1.543033e+005      -4.467775e+005      1.456272e+006 -7.433075e+005       -4.380093e+004     
M:     2.227405e+006 -4.089073e+006      7.285404e+003 2.721012e+005 2.384505e+006 -1.563590e+006       7.639744e+005
L:     1.685821e+006 -5.521092e+006      4.357440e+005 -2.511153e+006      1.141930e+006 2.222436e+006       3.163643e+006
K:     2.253588e+006 -3.918272e+005      1.232278e+005 9.543482e+005 1.593646e+006 1.602323e+006       1.479974e+006
J:     1.619297e+006 -1.155158e+006      -4.299366e+005      6.777357e+005 1.036484e+006 2.494861e+005 -1.218782e+006
I:     1.681186e+006 -4.475795e+003      -4.797168e+001      1.884314e+003 5.409272e+005 -5.255662e+002       -2.044465e+003     
H:     2.011303e+006 -9.145720e+003      -2.313841e+002      1.163011e+003 1.566991e+006 5.878077e+001 -2.691438e+003
G:     1.878949e+006 -7.812127e+005      -2.199406e+004      3.263426e+005 1.738877e+006 -3.200601e+005       -1.371952e+006     
F:     1.751994e+006 4.455539e+006 -4.331888e+005      -1.916350e+006      1.165425e+006 -2.487086e+006       2.070356e+006
E:     2.096833e+006 -8.927690e+003      -6.065494e+002      -4.123880e+005      1.302573e+006 -1.412069e+002 -6.645193e+005     
D:     1.653204e+006 -4.161203e+004      1.309219e+003 -1.521810e+006      1.148189e+006 4.929012e+003       1.262611e+006
C:     1.843364e+006 8.550510e+004 -4.605689e+004      1.894082e+006 1.497485e+006 -2.837471e+005       3.200117e+004
B:     1.867284e+006 -8.062717e+005      8.800755e+004 -1.129002e+006      1.402521e+006 6.876506e+005       1.086703e+006
A:     1.745914e+006 -6.194370e+006      1.667501e+005 -1.183345e+006      1.452241e+006 3.659571e+006       2.072657e+006
9:     1.736357e+006 -1.380887e+006      -7.840128e+004      -1.170146e+006      9.315538e+005 -6.400388e+005 1.255822e+006
8:     1.980737e+006 -2.114829e+005      -4.157898e+002      -7.252880e+002      1.334712e+006 -6.348935e+004 -6.394766e+003     
7:     1.411044e+006 5.613343e+006 1.603574e+005 -4.545165e+005      5.778077e+005 -2.250782e+006      -9.216060e+005
6:     1.744231e+006 1.423224e+006 -7.877377e+004      1.221513e+006 9.295771e+005 6.101122e+005 -1.205498e+006
5:     2.118052e+006 2.278372e+005 -4.249656e+004      -8.986694e+005      1.069615e+006 9.797706e+005       1.512812e+005
4:     1.352062e+006 -3.009673e+006      -6.834918e+003      2.070806e+006 6.850023e+005 5.908548e+005 -1.086053e+006
3:     2.172790e+006 -6.404669e+005      -1.479175e+005      -1.809737e+006      1.082372e+006       1.299747e+006 -3.345043e+005     
2:     2.174447e+006 -4.352553e+005      8.338989e+003 -4.415432e+005      1.206809e+006 5.517269e+005 -6.956066e+005
1:     1.704097e+006 -2.205888e+006      2.627255e+005 -7.114292e+005      4.940800e+005 6.679843e+005       2.188530e+004
0:     1.733089e+006 -3.817790e+003      -1.392664e+002      6.761938e+002 1.205510e+006 -6.347354e+003       -1.828234e+003     

 

Вы можете наблюдать, что моменты различных контуров отличаются. А похожих контуров – схожи (например, ноль и буква «О»). Вы также можете отслеживать поворот контуров (посмотрите 6 и 9). Конечно использование моментов не решает всех проблем, но во многом упрощает распознавание текста.

4 комментариев

  1. Здравствуйте!
    Сегодня при попытке выполнить предложенную Вами программу наткнулся на то, что в цикле переменная i принимает значения гораздо больше 36 – больше размерности массива обучающей выборки char alfav[]= {”ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210″}; следовательно, первых 36 строк в файлы записываются нормально, а все последующие – сбиваются, т.к. происходит попытка записи несуществующих элементов массива. в чем может быть ошибка?
    заранее искренне благодарен!

    Комментарий от Алексей — 19 Сентябрь 2010 @ 6:02 ДП

  2. Вы вводили программу с изменениями? Это возможно если бы вы указали в cvFindContours параметры отличные от предложенных – тогда бы контуры считались отдельно без вложений и соответственно их было больше. Ну или картинка немного другая. Если не выясните ответ, то можете добавить текст кода в комментарий.

    Комментарий от Кручинин Александр — 19 Сентябрь 2010 @ 9:16 ДП

  3. Здравствуйте!
    весь код программы взят строго с сайта и я его никаким образом не изменял. может быть действительно дело в картинке? не могли бы Вы дать ссылку на оригинал картинки? или прислать мне оригинал на электронный адрес?
    буду очень признателен

    Комментарий от firewall818 — 19 Сентябрь 2010 @ 2:49 ПП

  4. Выслал картинку и код.

    Комментарий от Кручинин Александр — 19 Сентябрь 2010 @ 4:39 ПП

RSS лента комментариев к этой записи.

Извините, комментирование на данный момент закрыто.

Работает на WordPress