|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.05.2009, 17:44 | #1 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
Как найти координаты всех пиксели объекта?
Встал перед задачей:
На bmp изображении есть тела черного цвета самой причудливой формы, надо узнать координаты пикселей, которые входят в тот или иной объект изображения.перебераю пиксели пока не встречу первый черный.Потом думал рекурсивную функцию закинуть, но вот не знаю как организовать обработку того что соседе белые или черные(соседей 8). Перебирать все 256 вариантов для рекурсии нет смысла, а вот что-то более рациональное на ум не приходит.Может кто и сталкивался с такого рода задачами...Bmp можно перекрашивать на серый тон... P.S. Если что-то непонятно, уточню. |
05.05.2009, 17:59 | #2 |
Форумчанин
Регистрация: 08.07.2007
Сообщений: 154
|
тоесть те надо знать линию граници ? можно попробовать найти 1.(любую) точьку етой линии и идти по ней проверая в куда она ведет. сгодитса только если границу обекта можно высказать как одну линию.
|
05.05.2009, 18:05 | #3 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
У меня бинаризованное изображение(черный и белый цвета).Также я и с jpeg работаю(перевожу все равно в bmp). Но тут маленькая проблемка, он немного смазывает граничные пиксели.Я просто фильтрую не полностью черные пиксели и все захватывается. А вообще надо найти цент масс этого объекта(если можно так это назвать). Полюбому надо будет знать координаты всех пикселей, чтоб это посчитать. Или есть еще какой-то способ, о котором я не знаю?
|
05.05.2009, 18:32 | #4 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
Вот придумал идиотский, но,на мой взгляд, рабочий может метод...
Можно создать массив из 8-ми элементов, каждый отвечает за свой пиксель-сосед. производить проверку по кругу. Если черный, то тру и т.д. А потом проходиться по массиву и добавлять к к формуле текстового вида(именно текстового, а то начнет считать сразу) нужное обращение к самой функции. Вот только 1 проблема возникла: кто-то знает как из текстового вида формулу перевести в нормальный и потом посчитать? |
05.05.2009, 19:10 | #5 |
работа не волк....
Форумчанин
Регистрация: 09.06.2008
Сообщений: 337
|
Посмотри тута пятый пост. Там объясняется как узнать координаты пикселей изображения с помощью фотошоп.
Цель, для которой требуются неправые средства, не есть неправая цель.
|
05.05.2009, 19:29 | #6 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
Решил проблему сам алгоритмически, там надо ветвить направления, пока все не перебирутся и все)
|
05.05.2009, 19:36 | #7 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
один баг нашел( поспешил)
Последний раз редактировалось Cerebrum; 05.05.2009 в 19:41. |
05.05.2009, 22:51 | #8 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Сам занимался подобной проблемой(кода нету - все в голове), основной смысл:
Заводим двумерный массив записей ( одла логическая и одна типа integer переменная, где логическая указывает что этот пиксель не фон, а другая идентификатор группы). Потом в цикле по всем клеткам : каждой клетки присваиваем свой id, а если рядом клетка с меньшим id, то все пиксели с текущий id приравниваем к меньшему id.а если рядом клетка с большим id, то все большие id сравниваем с текущим id. Надеюсь Вы хоть что-то поняли(у меня сегодня не очень "описательное" настроение), если нет обращайтесь! |
06.05.2009, 16:40 | #9 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
В общем написал сам)
Вот код(тут еще чуть лишнего кода, но это уже к моей программе отностится) Код:
Последний раз редактировалось Cerebrum; 06.05.2009 в 16:57. |
07.05.2009, 17:25 | #10 |
Пользователь
Регистрация: 21.03.2009
Сообщений: 24
|
Данный метод очень медленный...и ресурсов много ест если в объекте много пикселей. Нашел алгоритм намного быстрее без использования рекурсии, если кому будет интересно - обращайтесь.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Координаты всех точек в в фигуре | 5naip | Мультимедиа в Delphi | 5 | 21.12.2008 18:13 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |
Найти координаты хотя бы одной точки, попадающей в область, образованную тремя пересекающимися линиями. | Zibiv | Помощь студентам | 1 | 03.10.2008 17:55 |
Как найти размер объекта | Sibedir | Общие вопросы Delphi | 12 | 21.11.2007 06:17 |
Координаты курсора относительно объекта на форме | CoDeR | Общие вопросы Delphi | 4 | 01.08.2007 22:49 |