Перейти к содержимому
Compvision.ru
Archi39

Распознавание судоку

Recommended Posts

Доброй ночи люди добрые!)

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

Алгоритм который возник у меня в голове особой фантазией не отличается:

1. Определение сетки судоку

2. Определение угла наклона (изображение может неровно располагаться)

3. Определение контуров клеток

4. Определение контуров чисел в них

5. Оцифровка

Проблемы сразу же начались у меня на 1ом пункте, используя преобразования Хафа, я вроде бы выделил линии сетки, но никак не получается ограничить область судоку, от всего остального мусора на картинке, подскажите как это можно сделать

Ну внизу мой код

int main(int argc, char* argv[]) 

{

        IplImage* src = 0;

        IplImage* dst=0;

        IplImage* color_dst=0;


        char* filename = argc >= 2 ? argv[1] : "c:\\Image1.jpg";


        src = cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE);


        if( !src ){

                printf("[!] Error: cant load image: %s \n", filename);

                return -1;

        }


        printf("[i] image: %s\n", filename);


        CvMemStorage* storage = cvCreateMemStorage(0);

        CvSeq* lines = 0;

        int i = 0;



        dst = cvCreateImage( cvGetSize(src), 8, 1 );

        color_dst = cvCreateImage( cvGetSize(src), 8, 3 );


        cvCanny( src, dst, 50, 200, 3 );


      cvCvtColor( dst, color_dst, CV_GRAY2BGR );


	  lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/360, 50, 50, 5);

		double perimI = 0;

		int count=0;

		CvSeq* LineT=0;


        for( i = 0; i < lines->total; i++ ){

                CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);

                cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, CV_AA, 0 );

	        }


        cvNamedWindow( "Source", 1 );

        cvShowImage( "Source", src );


        cvNamedWindow( "Hough", 1 );

        cvShowImage( "Hough", color_dst );


        cvWaitKey(0);


        cvReleaseMemStorage(&storage);

        cvReleaseImage(&src);

        cvReleaseImage(&dst);

        cvReleaseImage(&color_dst);

        cvDestroyAllWindows();

        return 0;

} 

Очень нужна ваша помощь :(

post-5548-0-72667400-1337639631_thumb.jp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://www.aishack.in/2010/08/sudoku-grabber-with-opencv/

http://www.codeproject.com/Articles/238114/Realtime-Webcam-Sudoku-Solver

http://sudokugrab.blogspot.com/2009/07/how-does-it-all-work.html

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят подсобите еще немного, есть ли еще у кого нить, примеры использования для распознавания текста уже готовых OCR библиотек, таких как tesseract-ocr например? Ну или кроме tesseracta, какую еще можно попробовать? Пусть даже не особо мощную в плане поддержки шрифтов, но не такую громоздкую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

если у вас одно и то же судоку= шрифты не меняются, буквы одного размера и центрированы, то самый простой способ попиксельной сравнение бинарных картинок или через Ху моменты.

ну и опять же контурный анализ, тут пробегала тема на форуме и статья на хабре и была готовая программа на С#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×