![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Каким образом можно распознать объекты на рисунке (прямоугольники, элипсы и т.д.), используя при этом библиотеку похожих по форме элементов, и преобразовать их в отдельные векторные элементы.
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
former, распознование это очень непростое дело я сам этим занимаюсь, поэтому чтоб как-то помочь нужна информация о природе картинки(фотография, рисунок) , о заливке фигуры (сплошная, градиентная, произвольная), озашумленности изображения о контрасте, о глубине цвета (серая или цветная), о числе возможных фигур, могут ли фигуры иметь различные размеры и .т.д. - От этих параметров сильно зависит сложность и надежность метода распознавания.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Картинка составлена из множества многоугольников (10-20 шт.) разных размеров и сложной формы, но с прямыми углами (не фотография, нарисована в CorelDraw или др. проге). Эти многоугольники необходимо распознать и сравнить каждый с библиотечным по подобию формы (размеры могут не соответствовать). Если соответствие не найдено, добавить в библиотеку. По поводу заливки не знаю. Может быть её стоит делать разных цветов, что бы было проще определять тип элемента? Пример картинки могу скинуть на мыло. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
лучше сделать ссылку чтоб все могли посмотреть... однородная заливка не повредит, но сильно не поможет Первое что нужно сделать - матрица размера - соответствующего размерам картинки, в ней будем устанавливать флаги пикселей проверил - не проверил. Второе - это выделить замкнутые контуры - т.е. занести все точки черного цвета находящиеся на расстоянии 1 пикель друг от друга (цвета границы) в отдельный массив, и так для всех многоугольников. Все проверенные точки заносят в матрицу(можно значения установить в единицю например). Следующий этап будет распозновании линиий. Попробуйте реализовать вначале первые два. ps если не куда повесить картинку - пришлите я сам сделаю ссылку. Это сообщение отредактировал(а) alexeis1 - 14.4.2006, 09:39 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Картинку отправил на E-mail.
alexei-s1, я работал только спростейшей графикой, а с пиксельной ещё не доводилось. Как это можно реализовать?
А если тощина линии более одного пикселя? -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Вообще, какие требования далжны быть к изображению?
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Я имел ввиду
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
требования как правило предъявляют не к изображению, а к алгоритму распознавания. Вообще нельзя использовать Jpeg для хранения изображения. Задача во многом упростится если делать такие чертежи в векторном редакторе, типа visio или АutoCad, тогда даже не придется распозновать линнии, так как они уже будут заданы в файле векторного формата. Вообще, очень рекомендую перейти от растровой к векторной графике, тем более что круг задач как раз к этому распологает. ----------------------------------------------------------------------------------------- По просьбе автора я выкладывою пример изображения Брать отсюда Это сообщение отредактировал(а) alexeis1 - 17.4.2006, 11:07 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
А я и использую bmp, просто отправил в jpg.
Я так понял, что создаётся динамический массив, который заполняется элементами изображения, т.е. цветом пикселя, так? Как тогда осуществлять проверку цвета пикселя (чёрный/белый), и как свормировать из этого массива элементы изображения, т.е. разбить изображение на отдельные элементы? Получается, что после этого необходимо попиксельно сравнить элемент из библиотеки?
Но тогда надо знать сам формат и уметь считать его из файла. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| Alexeis |
|
||||||||||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
форматы *.emf, и *.wmf , являются общепризнаными и информация об их формате у меня имеется, найти инфу о формате autocada - вообще не проблема. Дело в том что распознование битмапа будет всегда производися с погрешностью, а первый этап поставленной задачи, фактически и будет превращение растра в векторное представление Т.е будет производится двойная работа. Вначале редактор линии превратит в точки затем, наша программа буден по точкам востанавливать линнии - это оправдано когда изображения даются от изначально растрового источника (фотоаппарата, сканера и т.д.). Чертежи вообще принято хранить в векторном формате, тогда их легче редактировать, масштабировать и поворачивать. По меньшей мере будет нелогично хранить битмап если можно *.wmf. Так ради справки покажу как работать с битмапом. Объявляются такие структуры
Конвертируем растр из DDB в DIB
Устанавливаем размеры битмапа(если не загружен)
Выделяем память под массив указателей
Заполняем масив указателей реальными указателями адресов строк изображения
закрашиваем первый пиксель например красным цветом
или читаем (color1 := RGB(mask1[0,0].r, mask1[0,0].g, mask1[0,0].b)) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||||||||
|
|||||||||||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
alexeis1, спасибо за справку по битмапу.
Из-за чего будет погрешность?
Дело в том, что изображение может быть получено из сканера. Непонятно, зачем нам первый пиксель закрашивать красным цветом? Дальше, на сколько я понимаю, для выделения объектов из рисунка необходимо пробежаться по всему массиву с проверкой цвета соседних элементов? Хотя если, например два прямоугольника имеют общую границу, то это будет сделать трудно. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Создал, для начала, картинку (w-200 п, h-100 п) с незакрашенным прямоугольником, загрузил её в Image и попытылся прочитать. Так же создал таблицу StringGrid c размером ячейки (3х3п) и колличеством ячеек, как и у картинки. Следующим шагом попытался заакрасить ячейки таким же цветом как на картинки, т.е. перенести попиксельно картику в таблицу, но:
а
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Это для примера пусть не первый, а любой, и цвет можно выбирать любой Если так, то лучше воспользоваться готовой программой для перевода из растровой графики в векторную графику, на torry.net я скачивал подобную. Очень советую использовать чужую програму, потому что операция перевода из картинки в линии достаточно сложная. Добавлено @ 14:06 вот ссылка на програму -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: нет Всего: 17 |
Дело в том, что я хочу написать экспертную систему, которая сканируя рисунок, выделяя в нём элементы и сверяя их с библиотечными, выдавала пользователю информацию об устройстве, изображённом на рисунке, а затем позволяла бы выолнить его проектирование и моделирование.
Не хочу зависеть от Autocad-а, поэтому dwg отпадает, а вот использовать wmf или emf похоже придётся. alexeis1, не могли бы вы привести пример чтения объектов из wmf или emf и поделиться его описанием? -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Вот ссылочки
http://www.wotsit.org/search.asp?page=10&s=graphics http://wvware.sourceforge.net/libwmf.html http://www.fileformat.info/format/wmf/ а вообще в делфи есть класс TMetaFile но он не самый удачный я думаю на torry.net есть лучше компоненты -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |