.NET программируемая графика соответствия? - PullRequest
1 голос
/ 12 апреля 2009

Кто-нибудь знает о программируемом / используемом API .NET для чтения файла изображения и сравнения его с существующим набором изображений?

например. У меня есть три изображения букв A, B и C. Затем я копирую изображение A и изменяю его так, чтобы оно переворачивалось на 180 градусов. Я хотел бы иметь возможность установить программное обеспечение, которое обнаружит, что оно соответствует существующей букве A.

Я ценю любую помощь!

РЕДАКТИРОВАТЬ: заменить буквы A, B и C изображением яблока, апельсина и банана. Речь идет не столько о распознавании буквенно-цифровых символов, сколько о сравнении форм / изображений.

РЕДАКТИРОВАТЬ # 2: Представьте, что это способ определить результат броска костей. Представьте себе стандартную шестигранную головку. Когда вы бросаете шесть, есть шесть точек. Он может приземлиться любым способом, но я бы хотел, чтобы камера сфотографировала матрицу и сравнила ее с контрольными изображениями, чтобы определить значение.

Ответы [ 5 ]

2 голосов
/ 13 апреля 2009

То, что вы, похоже, изучаете (без каламбура), является частью исследовательской программы компьютерное зрение . Что именно характеризует ваши целевые изображения? Вы ищете только трафаретные матчи одинакового размера, но разных ориентаций? Небольшие смещения приводят к значительному различию в пикселях для мелких и наклонных объектов. Должны ли быть признаны пересчеты? Как насчет наклонных перспектив? Ваше редактирование предполагает, что вы на самом деле оказались в гораздо более сложных областях: для полного распознавания изображений требуется полный ИИ. С какой точки зрения вы ожидаете узнать банан, при каких условиях освещения и какие виды бананов - зеленые, спелые, слегка раздавленные от сидения на нем ... Надеюсь, вы поняли мою точку зрения!

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

Для более легкомысленного чтения (сравнительно!) Мое знакомство с этой областью было связано с Гёдштадтером, Эшером Бахом и его Метамагическими темами по распознаванию буквенных форм. Это также заинтересовало меня типографикой: я никогда не знал, что существует так много способов нарисовать строчную букву «а»!

1 голос
/ 13 апреля 2009

Если я правильно понимаю ваш вопрос (особенно «Редактировать 2»), вы хотите выполнить поиск круговых рисунков в цифровом изображении с камеры или сканера.

Как уже сказал РобС, грубое преобразование и сопоставление с шаблоном в спектре Фурье являются хорошими способами сделать это. Вы, вероятно, найдете много библиотек для грубого преобразования или FFT, но я не уверен, что вы сможете использовать одну из них, не понимая алгоритмов. Например: стандартное грубое преобразование работает только для линий, оно должно быть адаптировано для кругов. Кроме того, требуется некоторая предварительная обработка, чтобы найти края круга. У него есть несколько параметров (размер внутреннего пространства параметров), которые трудно настроить, если вы не знаете, что они означают.

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

  • Бинаризация изображения
  • Сгруппировать связанные области пикселей или Blobs (например, используя Flood-Fill)
  • Решите, является ли BLOB-объект одним из ваших шаблонов, сравнив некоторые его характеристики (например, общую площадь, количество граничных пикселей, среднюю яркость, средний контраст) с типом шаблона, который вы ожидаете

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

1 голос
/ 13 апреля 2009

В одном из ваших комментариев выше вы упоминаете, что хотите обнаруживать броски кубика с помощью системы камер.

Есть несколько подходов к этой проблеме, вот два:

1) Очень простой подход. Сделайте обнаружение кругов, используя грубое преобразование на изображениях ваших фигурок и посчитайте количество кругов. Вы будете знать примерно размер пипсов на кубике, что должно помочь в настройке алгоритма Хофа.

2) Комплексный подход. Получите изображения каждого лица вашего штампа и вычислите преобразование Фурье и извлеките спектр мощности (2D, а затем сворачивание по всей ориентации). Спектр мощности даст вам подпись для каждой из граней кристалла, независимо от ориентации кристалла относительно камеры. Вы можете сравнить эти спектры мощности подписи с таковыми из бросков кубика. Ближайшим совпадением должен быть ваш счетчик очков ...

Надеюсь, это немного поможет.

0 голосов
/ 13 апреля 2009

Вот программа с открытым исходным кодом Программа распознавания изображений. Это в бета-версии. Это может быть началом для вас. Из описания:

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

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

0 голосов
/ 12 апреля 2009

Если у вас установлен Office, вы можете использовать его компонент OCR

...