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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2012, 21:41   #1
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию Медианная фильтрация изображения

Уважаемые форумчане, ответьте мне пожайлуста, правильно ли я понял смысл медианной фильтрации:
1) есть маска размером 3х3; (к примеру), которая двигается по исходному изображению;
2) пикселы изображения, которые попадают в эту маску записываются в вектор, количество элементов которого соответственно Sqr(3) (тобишь 9):
3) вектор сортируется (например по возрастанию), после чего средний элемент этого вектора присваивается пикселю в центре маски;


вот мой код:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  Index, i, j, s, k, z: Integer;
  n: Byte;
  Dx: Integer;
begin
  Dx:=CN div 2;
  for i:=0 to BitMap.Width - 1 - CN do   //движение маски по горизонтали
    for j:=0 to BitMap.Height - 1 - CN do  //движение маски по вертикали
      begin
        //заносим значения пикселей в вектор MyMas
        Index:=1;
        for k:=i to i + (CN - 1) do
          for s:=j to j + (CN - 1) do
            begin
              MyMas[Index]:=BitMap.Canvas.Pixels[k,s];
              Inc(Index);
            end;
          n:=Sort(MyMas);  //сортируем вектор с возвратом значения среднего элемента
          BitMap.Canvas.Pixels[i+Dx, j+Dx]:=n;
      end;

  Image2.Canvas.CopyRect(Rect(0, 0, BitMap.Width, BitMap.Height), BitMap.Canvas,
                         Rect(0, 0, BitMap.Width, BitMap.Height));
end;
вот проект:
Вложения
Тип файла: rar MedianFiltr.rar (435.4 Кб, 13 просмотров)
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 05.03.2012, 22:53   #2
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

неужели никто такого не делал??????
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 08.04.2012, 19:10   #3
antares90
Новичок
Джуниор
 
Регистрация: 08.04.2012
Сообщений: 2
По умолчанию

Приветствую! Скажите, а почему изображение после фильтрации "краснеет"?
antares90 вне форума Ответить с цитированием
Старый 08.04.2012, 20:18   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вот, кое-что исправил
Ошибка в том, что цвет занимает 4 байта (если изображение 32-битное), а не 1.
Вложения
Тип файла: zip median.zip (491.4 Кб, 52 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 08.04.2012 в 20:23.
BDA вне форума Ответить с цитированием
Старый 08.04.2012, 22:40   #5
antares90
Новичок
Джуниор
 
Регистрация: 08.04.2012
Сообщений: 2
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Вот, кое-что исправил
Ошибка в том, что цвет занимает 4 байта (если изображение 32-битное), а не 1.
Благодарю!
antares90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация auffasst Общие вопросы Delphi 3 21.06.2010 18:10
Фильтрация изображения (в Системе распознавания лица на Делфи) agatamen Помощь студентам 4 08.10.2009 07:07
Фильтрация Felonalex БД в Delphi 4 24.10.2008 20:09
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Медианная фильтрация game87 Помощь студентам 2 14.12.2006 21:15