Модифицированные методы и алгоритмы распознавание образов при решении проблем "Data mining"
Анализ методов и моделей интеллектуального анализа данных. Модификация методов и алгоритмов распознавания текста и лица. Значение программного обеспечения для решения задачи распознавания текстов и лиц. Режим работы программного обеспечение "DPro".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 24.05.2018 |
Размер файла | 4,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
bRect.Add("sex", new Rectangle(new Point(1145, 420), new Size(175, 100)));
bRect.Add("passportNo", new Rectangle(new Point(1060, 1090), new Size(390, 90)));
bRect.Add("authority", new Rectangle(new Point(70, 740), new Size(730, 140)));
bRect.Add("picture", new Rectangle(new Point(85, 1195), new Size(400, 535)));
bRect.Add("lastnameEng", new Rectangle(new Point(490, 1175), new Size(570, 95)));
bRect.Add("firstnameEng", new Rectangle(new Point(490, 1280), new Size(570, 100)));
bRect.Add("birthdayEng", new Rectangle(new Point(490, 1450), new Size(380, 65)));
bRect.Add("dateOfIssueEng", new Rectangle(new Point(0, 0), new Size(0, 0)));
bRect.Add("dateOfExpireEng", new Rectangle(new Point(0, 0), new Size(0, 0)));
bRect.Add("sexEng", new Rectangle(new Point(490, 1515), new Size(160, 75)));
rectangles = new List<Dictionary<string, Rectangle>>();
rectangles.Add(pRect);
rectangles.Add(bRect);
}
public PleaseWaitForm(string imageLocation, bool isBioPassport)
{
InitializeComponent();
this.progressPanel1.AutoHeight = true;
this.imageLocation = imageLocation;
this.isBioPassport = isBioPassport;
fillList();
Size size;
if (isBioPassport)
size = new Size(1488, 2043);
else
size = new Size(1520, 2056);
if (!EditImage.ResizeImage(imageLocation, size))
DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
#region Overrides
public override void SetCaption(string caption)
{
base.SetCaption(caption);
this.progressPanel1.Caption = caption;
}
public override void SetDescription(string description)
{
base.SetDescription(description);
this.progressPanel1.Description = description;
}
public override void ProcessCommand(Enum cmd, object arg)
{
base.ProcessCommand(cmd, arg);
}
#endregion
public enum WaitFormCommand
{
}
private void PleaseWaitForm_Shown(object sender, EventArgs e)
{
try
{
string temp = TextFromImage.GetTextFromImage(Image.FromFile(imageLocation), MODI.MiLANGUAGES.miLANG_RUSSIAN).ToLower();
if (temp.Contains("фам")
|| temp.Contains("исм")
|| temp.Contains("от"))
this.isBioPassport = false;
else
this.isBioPassport = true;
////Cropped Image Recognizing with MODI
int isBP = 0;
MODI.MiLANGUAGES language;
string tSex = "АЁЛ";
if (isBioPassport)
{
isBP = 1;
language = MODI.MiLANGUAGES.miLANG_ENGLISH;
tSex = "AYOL";
}
else
{
isBP = 0;
language = MODI.MiLANGUAGES.miLANG_RUSSIAN;
tSex = "АЁЛ";
}
string lNameR = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["lastname"]), language).Replace("ФАМИЛИЯ", "");
string lNameE = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["lastnameEng"]), MODI.MiLANGUAGES.miLANG_ENGLISH).Replace("FAMILIYA", "");
string fNameR = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["firstname"]), language).Replace("ИСМ", "");
string fNameE = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["firstnameEng"]), MODI.MiLANGUAGES.miLANG_ENGLISH).Replace("ISM", "");
lastName = isBioPassport ? EditString.GetCorrectString(LatinToCyrill.Convert(lNameR), lNameE): EditString.GetCorrectString(lNameR, lNameE);
//EditString.GetCorrectString(LatinToCyrill.Convert(lNameR), lNameE);
firstName = EditString.GetCorrectString(fNameR, fNameE);
middleName = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["middlename"]), language).Replace(" ", "");
if (isBioPassport)
middleName = EditString.GetOnlyLetters(LatinToCyrill.Convert(middleName), EditString.Alphabet.Cyrillic).Replace("ОТА", "").Replace("ОТА", "").Replace(" ", "");
else
middleName = EditString.GetOnlyLetters(middleName, EditString.Alphabet.Cyrillic).Replace("ОТАСИНИНГ", "").Replace("ИСМИ", "").Replace("ОТЧЕСТВО", "").Replace("ОТА", "").Replace("ОТА", "").Replace(" ", "");
string bDayR = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["birthday"]), language);
string bDayE = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["birthdayEng"]), MODI.MiLANGUAGES.miLANG_ENGLISH);
if (isBioPassport)
{
bDayR = EditString.GetCorrectDateTime(bDayR);
bDayE = EditString.GetCorrectDateTime(bDayE);
}
if (bDayR.Length == 10)
{
if (!DateTime.TryParse(bDayR, out birthday))
DateTime.TryParse(bDayE, out birthday);
}
else
DateTime.TryParse(bDayE, out birthday);
string iDateR = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["dateOfIssue"]), language);
string iDateE = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["dateOfIssueEng"]), MODI.MiLANGUAGES.miLANG_ENGLISH);
if (isBioPassport)
{
iDateR = EditString.GetCorrectDateTime(iDateR);
iDateE = EditString.GetCorrectDateTime(iDateE);
}
if (!DateTime.TryParse(iDateR, out dateOfIssue))
DateTime.TryParse(iDateE, out dateOfIssue);
string eDateR = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["dateOfExpire"]), language);
string eDateE = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["dateOfExpireEng"]), MODI.MiLANGUAGES.miLANG_ENGLISH);
if (isBioPassport)
{
eDateR = EditString.GetCorrectDateTime(eDateR);
eDateE = EditString.GetCorrectDateTime(eDateE);
}
if (DateTime.TryParse(eDateR, out dateOfExpire))
isUnlimited = false;
else if (DateTime.TryParse(eDateE, out dateOfExpire))
isUnlimited = false;
else
isUnlimited = true;
string seX = EditString.GetLastWord(TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["sex"]), language));
sex = seX == tSex ? false: true;
string pNo = TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["passportNo"]), MODI.MiLANGUAGES.miLANG_ENGLISH).Replace(" ", "");
passportNo = pNo.Substring(pNo.Length - 9).Insert(2, " ");
EditString.Alphabet alphabet = isBioPassport == true ? EditString.Alphabet.Latin: EditString.Alphabet.Cyrillic;
authority = EditString.GetOnlyLetters(TextFromImage.GetTextFromImage(EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["authority"]), language), alphabet);
if (isBioPassport)
authority = LatinToCyrill.Convert(authority);
picture = EditImage.CropImage(Image.FromFile(imageLocation), rectangles[isBP]["picture"]);
}
catch (Exception ex)
{
//MessageBox.Show(ex.ToString());
}
isClosed = true;
DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
д) Распознавание лиц с видеопотока
public class EigenObjectRecognizer
{
private Image<Gray, Single>[] _eigenImages;
private Image<Gray, Single> _avgImage;
private Matrix<float>[] _eigenValues;
private string[] _labels;
private double _eigenDistanceThreshold;
public Image<Gray, Single>[] EigenImages
{
get { return _eigenImages; }
set { _eigenImages = value; }
}
/// <summary>
/// Get or set the labels for the corresponding training image
/// </summary>
public String[] Labels
{
get { return _labels; }
set { _labels = value; }
}
public double EigenDistanceThreshold
{
get { return _eigenDistanceThreshold; }
set { _eigenDistanceThreshold = value; }
}
public Image<Gray, Single> AverageImage
{
get { return _avgImage; }
set { _avgImage = value; }
}
public Matrix<float>[] EigenValues
{
get { return _eigenValues; }
set { _eigenValues = value; }
}
private EigenObjectRecognizer()
{
}
public EigenObjectRecognizer(Image<Gray, Byte>[] images, ref MCvTermCriteria termCrit)
: this(images, GenerateLabels(images.Length), ref termCrit)
{
}
private static String[] GenerateLabels(int size)
{
String[] labels = new string[size];
for (int i = 0; i < size; i++)
labels[i] = i.ToString();
return labels;
}
public EigenObjectRecognizer(Image<Gray, Byte>[] images, String[] labels, ref MCvTermCriteria termCrit)
: this(images, labels, 0, ref termCrit)
{
}
public EigenObjectRecognizer(Image<Gray, Byte>[] images, String[] labels, double eigenDistanceThreshold, ref MCvTermCriteria termCrit)
{
Debug.Assert(images.Length == labels.Length, "The number of images should equals the number of labels");
Debug.Assert(eigenDistanceThreshold >= 0.0, "Eigen-distance threshold should always >= 0.0");
CalcEigenObjects(images, ref termCrit, out _eigenImages, out _avgImage);
_eigenValues = Array.ConvertAll<Image<Gray, Byte>, Matrix<float>>(images,
delegate(Image<Gray, Byte> img)
{
return new Matrix<float>(EigenDecomposite(img, _eigenImages, _avgImage));
});
_labels = labels;
_eigenDistanceThreshold = eigenDistanceThreshold;
}
#region static methods
public static void CalcEigenObjects(Image<Gray, Byte>[] trainingImages, ref MCvTermCriteria termCrit, out Image<Gray, Single>[] eigenImages, out Image<Gray, Single> avg)
{
int width = trainingImages[0].Width;
int height = trainingImages[0].Height;
IntPtr[] inObjs = Array.ConvertAll<Image<Gray, Byte>, IntPtr>(trainingImages, delegate(Image<Gray, Byte> img) { return img.Ptr; });
if (termCrit.max_iter <= 0 || termCrit.max_iter > trainingImages.Length)
termCrit.max_iter = trainingImages.Length;
int maxEigenObjs = termCrit.max_iter;
#region initialize eigen images
eigenImages = new Image<Gray, float>[maxEigenObjs];
for (int i = 0; i < eigenImages.Length; i++)
eigenImages[i] = new Image<Gray, float>(width, height);
IntPtr[] eigObjs = Array.ConvertAll<Image<Gray, Single>, IntPtr>(eigenImages, delegate(Image<Gray, Single> img) { return img.Ptr; });
#endregion
avg = new Image<Gray, Single>(width, height);
CvInvoke.cvCalcEigenObjects(
inObjs,
ref termCrit,
eigObjs,
null,
avg.Ptr);
}
public static float[] EigenDecomposite(Image<Gray, Byte> src, Image<Gray, Single>[] eigenImages, Image<Gray, Single> avg)
{
return CvInvoke.cvEigenDecomposite(
src.Ptr,
Array.ConvertAll<Image<Gray, Single>, IntPtr>(eigenImages, delegate(Image<Gray, Single> img) { return img.Ptr; }),
avg.Ptr);
}
#endregion
public Image<Gray, Byte> EigenProjection(float[] eigenValue)
{
Image<Gray, Byte> res = new Image<Gray, byte>(_avgImage.Width, _avgImage.Height);
CvInvoke.cvEigenProjection(
Array.ConvertAll<Image<Gray, Single>, IntPtr>(_eigenImages, delegate(Image<Gray, Single> img) { return img.Ptr; }),
eigenValue,
_avgImage.Ptr,
res.Ptr);
return res;
}
public float[] GetEigenDistances(Image<Gray, Byte> image)
{
using (Matrix<float> eigenValue = new Matrix<float>(EigenDecomposite(image, _eigenImages, _avgImage)))
return Array.ConvertAll<Matrix<float>, float>(_eigenValues,
delegate(Matrix<float> eigenValueI)
{
return (float)CvInvoke.cvNorm(eigenValue.Ptr, eigenValueI.Ptr, Emgu.CV.CvEnum.NORM_TYPE.CV_L2, IntPtr.Zero);
});
}
public void FindMostSimilarObject(Image<Gray, Byte> image, out int index, out float eigenDistance, out String label)
{
float[] dist = GetEigenDistances(image);
index = 0;
eigenDistance = dist[0];
for (int i = 1; i < dist.Length; i++)
{
if (dist[i] < eigenDistance)
{
index = i;
eigenDistance = dist[i];
}
}
label = Labels[index];
}
public String Recognize(Image<Gray, Byte> image)
{
int index;
float eigenDistance;
String label;
FindMostSimilarObject(image, out index, out eigenDistance, out label);
return (_eigenDistanceThreshold <= 0 || eigenDistance < _eigenDistanceThreshold ) ? _labels[index]: String.Empty;
}
}
Размещено на Allbest.ru
...Подобные документы
Теоретические основы распознавания образов. Функциональная схема системы распознавания. Применение байесовских методов при решении задачи распознавания образов. Байесовская сегментация изображений. Модель TAN при решении задачи классификации образов.
дипломная работа [1019,9 K], добавлен 13.10.2017Понятие и особенности построения алгоритмов распознавания образов. Различные подходы к типологии методов распознавания. Изучение основных способов представления знаний. Характеристика интенсиональных и экстенсиональных методов, оценка их качества.
презентация [31,6 K], добавлен 06.01.2014Методы распознавания образов (классификаторы): байесовский, линейный, метод потенциальных функций. Разработка программы распознавания человека по его фотографиям. Примеры работы классификаторов, экспериментальные результаты о точности работы методов.
курсовая работа [2,7 M], добавлен 15.08.2011Анализ проблем, возникающих при применении методов и алгоритмов кластеризации. Основные алгоритмы разбиения на кластеры. Программа RapidMiner как среда для машинного обучения и анализа данных. Оценка качества кластеризации с помощью методов Data Mining.
курсовая работа [3,9 M], добавлен 22.10.2012Создание программного средства, осуществляющего распознавание зрительных образов на базе искусственных нейронных сетей. Методы, использующиеся для распознавания образов. Пандемониум Селфриджа. Персептрон Розенблатта. Правило формирования цепного кода.
дипломная работа [554,8 K], добавлен 06.04.2014Необходимость в системах распознавания символов. Виды сканеров и их характеристики. Оптимальное разрешение при сканировании. Программы распознавания текста. Получение электронного документа. FineReader - система оптического распознавания текстов.
презентация [469,2 K], добавлен 15.03.2015Основные понятия теории распознавания образов и ее значение. Сущность математической теории распознавания образов. Основные задачи, возникающие при разработке систем распознавания образов. Классификация систем распознавания образов реального времени.
курсовая работа [462,2 K], добавлен 15.01.2014Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013Проектирование приложения на языке С# в среде Microsoft Visual Studio 2008: составление алгоритмов сегментации текста документа и распознавания слова "Указ" в нем, создание архитектуры и интерфейса программного обеспечения, описание разработанных классов.
курсовая работа [2,4 M], добавлен 05.01.2011Описание функциональных возможностей технологии Data Mining как процессов обнаружения неизвестных данных. Изучение систем вывода ассоциативных правил и механизмов нейросетевых алгоритмов. Описание алгоритмов кластеризации и сфер применения Data Mining.
контрольная работа [208,4 K], добавлен 14.06.2013Основы для проведения кластеризации. Использование Data Mining как способа "обнаружения знаний в базах данных". Выбор алгоритмов кластеризации. Получение данных из хранилища базы данных дистанционного практикума. Кластеризация студентов и задач.
курсовая работа [728,4 K], добавлен 10.07.2017Условия применения и технические требования для работы программно-аппаратной платформы. Система распознавания лиц VOCORD Face Control. Система распознавания текста ABBYY FineReader. Алгоритмы и методы, применяемые в программе. Алгоритм хеширования MD5.
дипломная работа [1,8 M], добавлен 19.01.2017Распознавание образов - задача идентификации объекта или определения его свойств по его изображению или аудиозаписи. История теоретических и технических изменений в данной области. Методы и принципы, применяемые в вычислительной технике для распознавания.
реферат [413,6 K], добавлен 10.04.2010Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.
курсовая работа [3,0 M], добавлен 14.11.2013Фильтрация шумов изображения. Алгоритмы его бинаризации и поворота. Формирование информативных признаков для распознавания нот. Схема программного обеспечения. Описание классов, функций, методов, реализованных в программе. Тестирование приложения.
курсовая работа [2,0 M], добавлен 17.12.2013Обзор математических методов распознавания. Общая архитектура программы преобразования автомобильного номерного знака. Детальное описание алгоритмов: бинаризация изображения, удаление обрамления, сегментация символов и распознавание шаблонным методом.
курсовая работа [4,8 M], добавлен 22.06.2011Понятие системы распознавания образов. Классификация систем распознавания. Разработка системы распознавания формы микрообъектов. Алгоритм для создания системы распознавания микрообъектов на кристаллограмме, особенности его реализации в программной среде.
курсовая работа [16,2 M], добавлен 21.06.2014Методы предобработки изображений текстовых символов. Статистические распределения точек. Интегральные преобразования и структурный анализ. Реализация алгоритма распознавания букв. Анализ алгоритмов оптического распознавания символов. Сравнение с эталоном.
курсовая работа [2,1 M], добавлен 20.09.2014Обзор задач, возникающих при разработке систем распознавания образов. Обучаемые классификаторы образов. Алгоритм персептрона и его модификации. Создание программы, предназначенной для классификации образов методом наименьшей среднеквадратической ошибки.
курсовая работа [645,2 K], добавлен 05.04.2015Основные цели и задачи построения систем распознавания. Построение математической модели системы распознавания образов на примере алгоритма идентификации объектов военной техники в автоматизированных телекоммуникационных комплексах систем управления.
дипломная работа [332,2 K], добавлен 30.11.2012