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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2013, 11:04   #1
egorka2134
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 40
По умолчанию Определить цвет пикселя и окружающих его пикселей.

Здравствуйте, помогите с задачей.
Нужно узнать цвет пикселя изображения в имидж, и если он черного цвета и его окружают 6,7,8 пикселей белого цвета, то закрасить и его в белый, если меньше 6 пикселей, то в черный.
Я так понимаю что нужно реализовать алгоритм. Начиная с левого верхнего угла находить цвет пикселя и выполнять закраску в белый или черный, далее отступить на 1 пиксель и повторить. Причем после каждого перекрашивания начинать с начала то есть с верхнего левого угла так как после перекрашивания соседние пиксели стоит перепроверить. Но как быть с кодом. Помогите пожалуйста.
egorka2134 вне форума Ответить с цитированием
Старый 31.08.2013, 11:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Алгоритм в цикле по Canvas.Pixels. Или лучше по массиву в памяти, с последующей перерисовкой, быстрей будет. Только сомневаюсь, что после каждого перекрашивания на начало. Полный проход до конца и повтор сначала, если что-то поменялось. Не исключаю, что возможно зацикливание. Это что-то типа клеточного автомата "Жизнь". Так вот там зацикливания возможны - т.е. впадание в периодическое повторение конфигурации
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.08.2013, 11:49   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Наверное задача имеет смысл, когда пиксели просматриваются блоками, по 9 пикселей (двойной цикл с шагом по 3), и если центральный соотв. нужным условиям - соотв. обработка с записью в исходную картинку, потом след блок обрабатывается. Так вся картинка и обрабатывается.

Если же каждый пиксель подряд, то получится коряво - предыдущие изменения будут влиять, а ежели с повтором от начала - точно будет зацикливание.
Посему надо сделать именно как в "жизни" - текущий этап копируется в массив, получается 2 поколения как бы, идя по первому массиву (рисунку в данном случае) проверяем все пиксели по алгоритму, но записываем не в себя , а во второй массив, таким образом предыдущие изменения не повлияют на обсчёт. В конце цикла полученный второй массив рисовать.
Если сделать постоянное формирование таких двух массивов, то и получится клеточный автомат.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить цвет пикселя в заданных координатах NewBoy Общие вопросы C/C++ 2 11.03.2013 11:46
определить цвет пикселя формы и сравнить ,выдает ошибку:( askerpro Общие вопросы C/C++ 2 17.03.2011 00:51
Как определить цвет пикселя? prw07 Мультимедиа в Delphi 1 31.08.2010 13:06
Как определить цвет пикселя? zotox Общие вопросы Delphi 2 15.11.2009 19:05
определить цвет каждого пикселя Dimarik Общие вопросы C/C++ 4 17.08.2009 16:21