У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент





Лабораторна робота

з предмету периферійні пристрої

Лабораторна робота №4

Тема роботи: Сканер. Системи розпізнавання текстів

Мета роботи: Вивчення принципів функціонування сканерів, а також алгоритмів розпізнавання текстів.

Завдання для виконання роботи

Сформувати чорно-білі бітові зображення букв А, В, С, D

Кореляційний метод розпізнавання полягає в обчисленні взаємокореляційної або інших функцій взаємокореляції і їх порівняння з порогом прийняття рішення:

де N – кількість елементів послідовності, яка задає символ;

Р - поріг прийняття рішення.

Алгоритм Фрімена. Цей метод заснований на виділенні контура по алгоритму Фрімена з подальшою ідентифікацією контура. Ланцюговий код Фрімена дозволяє представити контур довільної форми у вигляді послідовності коротких векторів .

Матриця векторів Фрімена (а), контур (б)

Для реалізації алгоритму слід виконати наступні пункти:

Пошук початкової точки. Сканування вертикальною лінійною апертурою і розгортка горизонтальної апертури до першого засвіченого піксела. Перевірка всіх сусідніх пікселів по напряму, починаючи з вектору 0, до тих пір, поки не зустрінеться засвічений піксель. Поворот від початкової точки здійснюється за збільшенням номерів векторів. Якщо сусідніх пікселів не знайдено, то вважається, що знайдений окремий піксель і його не розглядають. Напрям останнього вектора наголошується як поточний, а його кінець вважається поточним пікселем. Повторюють сканування сусідніх пікселів до виявлення засвічення, починаючи від пікселя, розташованого зліва від поточного вектора за годинниковою стрілкою. Алгоритм повторюють з п. 3 до тих пір, поки положення поточного пікселя не співпаде з початковим.

Недоліком цього методу є те, що розпізнавання символу залежить від його повороту.

Умова розпізнавання:

,

де - кодований контур; - еталонний контур; р - поріг (0,8-0,9).

int analis (float **)

{

int i, j, k, n=100;

int A[100] [100], B[100] [100], C[100] [100], D[100] [100];

file *et; float Cxx;

et = fopen (“etalon.dat”,”r”);

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

fscant ( et, “%d”, & A [i] [j] );

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

fscant ( et, “%d”, & B [i] [j] );

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

fscant ( et, “%d”, & C [i] [j] );

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

fscant ( et, “%d”, & D [i] [j] );

Cxx=0

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

for ( k=0; k<n; k++)

Cxx+=(x[i*n+j]*A[i][j+k]*(x[i*n+j])* A[i][j+k])

Cxx/=n-1;

floes (et);

if (Cxx>= 0,9) return 1;

Cxx=0

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

for ( k=0; k<n; k++)

Cxx+=(x[i*n+j]*B[i][j+k]*(x[i*n+j])* B[i][j+k])

Cxx/=n-1;

if (Cxx>= 0,9) return 2;

Cxx=0

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

for ( k=0; k<n; k++)

Cxx+=(x[i*n+j]*C[i][j+k]*(x[i*n+j])* C[i][j+k])

Cxx/=n-1;

if (Cxx>= 0,9) return 3

Cxx=0

for ( i=0; i<n; i++) for ( j=0; j<n; j++ )

for ( k=0; k<n; k++)

Cxx+=(x[i*n+j]*D[i][j+k]*(x[i*n+j])* D[i][j+k])

Cxx/=n-1;

if (Cxx>= 0,9) return 4;

return 0;

}

Висновок: На цій лабораторній роботі ми вивчили принцип функціонування сканерів, а також алгоритм розпізнавання текстів.