Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бинаризация изображения 
:(
    Опции темы
Таньчик
Дата 15.5.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.5.2006

Репутация: нет
Всего: нет



Работаю с изображением. Необходимо его бинаризировать, а также изменять контраст и яркость. Был предложен следующий алгоритм бинаризации: 
В компонент  Image загружен  файл *.bmp

Код

var
  Image: TImage;
  MidColor, Pixel: TColor;

begin
  MidColor := (High (TColor) – Low (TColor)) div 2;
  Pixel := Image.Canvas.Pixels [0, 0];
  if Pixel < MidColor 
    then Pixel := Low (TColor)
    else Pixel := High (TColor);
  Image.Canvas.Pixels [0, 0] := Pixel;
end;


Но почему то не работает.  smile 
 
PM MAIL   Вверх
mes
Дата 15.5.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(Таньчик @  15.5.2006,  21:26 Найти цитируемый пост)
Image.Canvas.Pixels [0, 0] := Pixel;


Эта функция может изменить только один пиксел с координатами (0.0). Если ты хочешь изменить каждый пиксел, то должна вместо фиксированого значения поставить две переменные (строка и столбец) и изменять их значения  (в цикле)  в нужном диапазоне.
 


--------------------
PM MAIL WWW   Вверх
Droll
Дата 19.5.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 10.11.2004

Репутация: 1
Всего: 3



Небольшой примерчик бинаризации:
Код

procedure dsBinarizeBMP(BMP: TBitmap; const aMid: Byte = 127);
// BMP: TBitmap - собственно само изображение
// aMid: Byte - порог. По умолчанию = 127
type
// Массив из трех байт. Нужен для работы с 24 битными изображениями
  T3b = array[0..2] of byte;
  P3b = ^T3b;
var
  i, j: Integer;
  f3b: P3b;
begin
// Для работы потребуется 24 битное изображение
  BMP.PixelFormat:= pf24bit;
  for i:= 0 to pred(BMP.Height) do
  begin
// Получаем строку изображения
    f3b:= BMP.ScanLine[i];
    for j:= 0 to pred(BMP.Width) do
    begin
// Если среднее арифметическое больше, чем порог
      if (((f3b^[0] + f3b^[1] + f3b^[2]) div 3) > aMid) then
// То цвет белый
        f3b^[0]:= 255
      else
// Иначе цвет черный
        f3b^[0]:= 0;
// Устанавливаем соответственно остальные байты
      f3b^[1]:= f3b^[0];
      f3b^[2]:= f3b^[0];
      if (j < pred(BMP.Width)) then
// Переходим к следующему пикселу
        inc(f3b);
    end;
  end;
end;

procedure TForm1.Button20Click(Sender: TObject);
// Пример
begin
// Загружаем в Image1 изображение 'try.bmp'
  Image1.Picture.Bitmap.LoadFromFile('try.bmp');
// Применяем функцию
  dsBinarizeBMP(Image1.Picture.Bitmap);

// После применения функции, можно сразу же посмотреть изменения в Image1
end;

Удачи! 
PM   Вверх
fr33z3
Дата 13.5.2010, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.6.2008

Репутация: нет
Всего: нет



Вот здесь есть уже готовый сорец более адекватной бинаризации:
Бинаризация методом Отсу
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.