Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Распознование изображений на PHP

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
Собственно в распознавании изображений значение имеет не язык программирования а математи. И именно с ней у меня все очень плохо, так как я жил далеко от школы а в училище нам ее не преподавали. Почитав несколько статей я понял, что ничего не понял.

Для распознавания изображений необходимо строить матрицы и разбирать их по формулам. В придачу, необходимо писать нейронную сеть. Я смотрю на это все как баран на новые ворота, но очень хочу познать этот аспект. В этой теме решил вести обсуждение этого. Если кто-то что-то знает или может подсказать, буду рад.

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

Вот что надо подучить в первую очередь:
1. матрицы
2. детерминанты матриц
3. интегралы
4. дискретное вейвлет преобразование с 1-го по 10-ый порядок

http://www.interface.ru/home.asp?artId=20184

Отредактировано автором 29 Дек 2011
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

lor08

  • Свой человек
  • Юзер
  • 130
  • Репутация:1 
  • Предупреждения: 0 
  • Регистрация:
    1 Фев 2011
#2
Drunya, распозновать - это типо текст вытаскивать,или то что на нём проиллюстрировано(животные,люди ;) )?!

Отредактировано автором 28 Дек 2011

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#3
lor08, да типа того. Для начало что-то простое хочу сделать, а далее можно хоть лица различать)

Добавлено2011.12.28 13-11

Вот, что надо учить, как сказали умные люди.

1. матрицы
2. детерминанты матриц
3. интегралы
4. дискретное вейвлет преобразование с 1-го по 10-ый порядок

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

lor08

  • Свой человек
  • Юзер
  • 130
  • Репутация:1 
  • Предупреждения: 0 
  • Регистрация:
    1 Фев 2011
#4
Drunya, вроде как ещё OCR надо

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
lor08, OCR сам по себе и есть "распознование изображений". Я вот как бы над созданием OCR своего и бъюсь)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

lor08

  • Свой человек
  • Юзер
  • 130
  • Репутация:1 
  • Предупреждения: 0 
  • Регистрация:
    1 Фев 2011
#6
Drunya, а,я просто думал ты уже созданное хочешь поучить ))

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#7
новая инфа. почти исчерпывающе и почти нейросеть самообучающаяся)
http://www.interface.ru/home.asp?artId=20184

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#8
По сути есть очень простой алгоритм.
Разбиваешь изображение на пиксели и сравниваешь цвета, затем формируешь текст. Но работает только с самым примитивным 2-3 цветным изображением.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#9
skad0, а разность шрифтов, а обучаемость системы? Грубо говоря, если упростить задачу до бесконечности(2 пикселя и монохромное изображение), то определить какие пиксели закрашены очень просто. Всего 4 варианта. Но когда я говорил "простые изображения" я имел виду не на столько простые. Вот то что в последней ссылке уже более менее приближено к тому что я ищу. Без математики ни как.

Добавлено2011.12.30 01-57

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

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
<?php /**
 * вычисление индекса пикселя
 */
function getY($x$y$img) {
    global 
$imgRes;
    
$rgb imagecolorat($img$x$y);
    
$data imagecolorsforindex($img$rgb);
    
$ychanel floor(0.3 $data['red']) + floor(0.59 $data['green']) + floor(0.11 $data['blue']);
    return (
$ychanel 120) ? 1;
}

/**
 * Сравнение образов с исходным изображением
 */
function compare($img) {
    global 
$templates$sx$sy;
    
    
$index = array();
    foreach (
$templates as $key => $shape) {
        
$index[$key] = 0;
        for (
$y 1$y $sy$y++) {
            for (
$x 1$x $sx$x++) {
                if (
$shape[$y $x] != getY($x$y$img)) $index[$key]++;
            }
        }
    }
    return 
$index;
}

/**
 * Создание образов(подобие обучения)
 */
function getShape($res) {
    global 
$sx$sy;
    
$shape = array();
    for (
$y 1$y $sy$y++) {
        for (
$x 1$x $sx$x++) {
            
$shape[$y.$x] = getY($x$y$res);
        }
    }
    return 
$shape;
}


// Размеры изображений
$sx '30';
$sy '45';
$templates = array();
for (
$t 1$t <= 5$t++) {
    
$res imagecreatefromjpeg('img' $t '.jpg');
    
$templates[$t] = getShape($res);
}


// Путь к распознаваемому изображению
$inputImgPath 'img.jpg';
$inputImgRes imagecreatefromjpeg($inputImgPath);
$result compare($inputImgRes);
asort($result);
echo 
'Вы ввели ' key($result);?>

В папке со скриптом должны находится изображения img{1-5}.jpg. В каждом эталонная цифра. Скрипт очень простой, думаю разберетесь)

Отредактировано автором 30 Дек 2011
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1
Сейчас online: 184. Зарегистрированных: 1. Гостей: 183.