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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 00:26   #11
sergkl
 
Регистрация: 26.03.2009
Сообщений: 2
По умолчанию

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

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

Конечно скорость при таком алгоритме может быть низка.

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

Последний раз редактировалось Stilet; 08.02.2010 в 09:27.
sergkl вне форума Ответить с цитированием
Старый 08.02.2010, 00:56   #12
koshel
Пользователь
 
Аватар для koshel
 
Регистрация: 03.02.2010
Сообщений: 38
По умолчанию

Нежелательных зон не больше 3-4 на всей фотке. только загвоздка что я в графике вообще 0((( пробовал не перенося в битмап искать ничего не вышло -результат не предсказуем((( проверял по 8 точкам искать то есть если есть 8 точек одного цвета значит это не шум, если нет значит красим так оно мне такую зебру делало((
koshel вне форума Ответить с цитированием
Старый 08.02.2010, 09:02   #13
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

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

koshel Попробуйте в тетрадке в клеточку представить свои зоны, которые надо удалить, и придумать алгоритм, так будет намного проще.
Zeraim вне форума Ответить с цитированием
Старый 08.02.2010, 21:25   #14
koshel
Пользователь
 
Аватар для koshel
 
Регистрация: 03.02.2010
Сообщений: 38
По умолчанию

Спасибо всем за помощь проблему решил так
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
  X3,Y3:integer;
begin

for X3:=1 to image1.Picture.Width do
for Y3:=1 to image1.Picture.Height do

             if (Image1.canvas.Pixels[X3, Y3] = Pix1)
                and (Image1.canvas.Pixels[X3+1, Y3] = Pix1)
                and (Image1.canvas.Pixels[X3+2, Y3] = Pix1)
                and (Image1.canvas.Pixels[X3+3, Y3] = Pix1)
                and (Image1.canvas.Pixels[X3, Y3+1] = Pix1)
                and (Image1.canvas.Pixels[X3, Y3+2] = Pix1)
                and (Image1.canvas.Pixels[X3, Y3+3] = Pix1)
                and (Image1.canvas.Pixels[X3+1, Y3+1] = Pix1)
                and (Image1.canvas.Pixels[X3+2, Y3+2] = Pix1)
                and (Image1.canvas.Pixels[X3+3, Y3+3] = Pix1)
                and (Image1.canvas.Pixels[X3+1, Y3-1] = Pix1)
                and (Image1.canvas.Pixels[X3+1, Y3-2] = Pix1)
                and (Image1.canvas.Pixels[X3+1, Y3-3] = Pix1)
                                      then
                                      Image1.canvas.Pixels[X3, Y3]:= Pix1
                                      else
                                      Image1.Canvas.Pixels[X3,Y3] := clwhite
                                       end;
просто убираю не сформированые области пикселей, а полноценные зоны оставляю.
koshel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цвета на канве Juffin Общие вопросы Delphi 3 17.05.2009 21:57
Проблема с пикселями!!! ТРОЯН=) HTML и CSS 1 13.03.2009 01:34
поиск по канве Bayazet Мультимедиа в Delphi 3 28.01.2009 14:52
Реализация работы с пикселями: ritm Общие вопросы Delphi 15 12.01.2009 16:59
Мерцание на Канве SERG1980 Мультимедиа в Delphi 3 30.04.2008 08:14