Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 20:06   #1
agatamen
Новичок
Джуниор
 
Регистрация: 07.10.2009
Сообщений: 2
По умолчанию Фильтрация изображения (в Системе распознавания лица на Делфи)

В общем надо написать систему чтоб распознавала лица:
изображение как на паспорте
надо узнать какие уши(торчат или нет), нос, глаза, рот, волосы какие

писать с помощью нечеткой логике надо

мне не понятно как вообще распознавать на картинке что например вообще есть уши

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

думаю что надо как то упростить изображение но не знаю как,
Можно ли изображения лица сделать чтоб там было только два цвета: белый и черный, ну что-то типа нарисовано линии черным цветом, чтобы уже потом расстояния измерять и все такое

или мне вообще каким-нить другим путем идти?
agatamen вне форума Ответить с цитированием
Старый 07.10.2009, 20:14   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
думаю что надо как то упростить изображение но не знаю как,
думаю, могу Вам помочь. Сейчас откопаю на форуме свою программу деколоратор...

Во! Нашел:
Код:
N:=StrToInt(Edit1.Text);

{For N:=255 downto 2 do
Begin}

 Bit:=TBitMap.Create;
 Bit.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Bit2:=TBitMap.Create;
 Bit2.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Windows.Beep(700,700);
 For Y:=0 to 8399 do
  For X:=0 to 749 do
   Begin
    C:=Bit2.Canvas.Pixels[X,Y];
    CHex:=IntToHex(C,1);
    CHex:=StringOfChar('0',6-Length(CHex))+CHex;
    SFD:=Copy(CHex,1,2);
    SSD:=Copy(CHex,3,2);
    STD:=Copy(CHex,5,2);
    CHex:='';
    FD:=StrToInt('$'+SFD);
    SD:=StrToInt('$'+SSD);
    TD:=StrToInt('$'+STD);
    If (FD mod N <> 0) Then FD:=FD-(FD mod N);
    If (SD mod N <> 0) Then SD:=SD-(SD mod N);
    If (TD mod N <> 0) Then TD:=TD-(TD mod N);
    SFD:=IntToHex(FD,2);
    SSD:=IntToHex(SD,2);
    STD:=IntToHex(TD,2);
    C:=StrToInt('$'+SFD+SSD+STD);
    Bit.Canvas.Pixels[X,Y]:=C;
    If Y mod 100 =0 Then
     Begin
      Edit1.Text:=IntToStr(Y);
      Edit1.Refresh;
     End;
   End;
   Windows.Beep(700,700);
 {Image1.Canvas.Draw(0,0,Bit2); }
 Image2.Canvas.Draw(0,0,Bit);
 Edit1.Text:=IntToStr(N);
 Edit1.Refresh;
 Image2.Refresh;
 Image2.Picture.SaveToFile('MainFC.bmp');
Создайте на форме указанные здесь компоненты и засуньте эту функу например на клик кнопки. С остальным , надеюсь разберетесь. Значения в эдите ставьте примерно от 32 до 128 или включите закоменнтенный цикл (не забудьте добавить к нему бегин-энд). И размеры изображения поменяйте с моих на Ваши.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 07.10.2009 в 20:19.
Alex Cones вне форума Ответить с цитированием
Старый 07.10.2009, 20:23   #3
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

Цвета пикселей конечно будут различны, нужно объединить похожие цвета, ну например картинку перевести в 16 цветов, или даже в 8. А затем уже анализировать пиксели...

Также можно попробовать перевести картинку в ч/б, и работать с оттенками черного, опираясь на то, что контуры носа, ушей и т.д. будут хотя бы с одной стороны темнее чем средний цвет картинки...

А вообще задача интересная, всегда хотел поработать над разными алгоритмами распознавания картинок, да вот реальной возможности (надобности) еще не представлялось...
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 07.10.2009, 20:24   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Цвета пикселей конечно будут различны, нужно объединить похожие цвета, ну например картинку перевести в 16 цветов, или даже в 8. А затем уже анализировать пиксели...
Именно этим и занимается мой код. Главное - правильно подобрать коэффициент (N)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 08.10.2009, 07:07   #5
agatamen
Новичок
Джуниор
 
Регистрация: 07.10.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
думаю, могу Вам помочь. Сейчас откопаю на форуме свою программу деколоратор...

Во! Нашел:
Код:
N:=StrToInt(Edit1.Text);

{For N:=255 downto 2 do
Begin}

 Bit:=TBitMap.Create;
 Bit.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Bit2:=TBitMap.Create;
 Bit2.LoadFromFile('D:\A-MIND\Utils\Archiver\Resource\Main.bmp');
 Windows.Beep(700,700);
 For Y:=0 to 8399 do
  For X:=0 to 749 do
   Begin
    C:=Bit2.Canvas.Pixels[X,Y];
    CHex:=IntToHex(C,1);
    CHex:=StringOfChar('0',6-Length(CHex))+CHex;
    SFD:=Copy(CHex,1,2);
    SSD:=Copy(CHex,3,2);
    STD:=Copy(CHex,5,2);
    CHex:='';
    FD:=StrToInt('$'+SFD);
    SD:=StrToInt('$'+SSD);
    TD:=StrToInt('$'+STD);
    If (FD mod N <> 0) Then FD:=FD-(FD mod N);
    If (SD mod N <> 0) Then SD:=SD-(SD mod N);
    If (TD mod N <> 0) Then TD:=TD-(TD mod N);
    SFD:=IntToHex(FD,2);
    SSD:=IntToHex(SD,2);
    STD:=IntToHex(TD,2);
    C:=StrToInt('$'+SFD+SSD+STD);
    Bit.Canvas.Pixels[X,Y]:=C;
    If Y mod 100 =0 Then
     Begin
      Edit1.Text:=IntToStr(Y);
      Edit1.Refresh;
     End;
   End;
   Windows.Beep(700,700);
 {Image1.Canvas.Draw(0,0,Bit2); }
 Image2.Canvas.Draw(0,0,Bit);
 Edit1.Text:=IntToStr(N);
 Edit1.Refresh;
 Image2.Refresh;
 Image2.Picture.SaveToFile('MainFC.bmp');
Создайте на форме указанные здесь компоненты и засуньте эту функу например на клик кнопки. С остальным , надеюсь разберетесь. Значения в эдите ставьте примерно от 32 до 128 или включите закоменнтенный цикл (не забудьте добавить к нему бегин-энд). И размеры изображения поменяйте с моих на Ваши.
спасибо щас попробую
agatamen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознование лица с помощью веб камеры AndreyFreeman Мультимедиа в Delphi 5 28.09.2009 13:23
Алгоритмы для систем распознавания видеообъектов slp55555 Обсуждение статей 2 27.09.2009 09:19
Алгоритмы для систем распознавания видеообъектов slp55555 Свободное общение 1 25.09.2009 01:49
Камера от третьего лица в DirectX Pedro Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 08.04.2009 15:51
Пример исходник распознавания каптчи WebSQLNeeder Свободное общение 8 01.07.2008 12:35