Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменение гаммы рисунка

Delphi , Графика и Игры , Bitmap

Изменение гаммы рисунка

Автор: Fenik
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Изменение гаммы рисунка

Зависимости: Graphics
Автор:       Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright:   Автор Федоровских Николай
Дата:        5 июня 2002 г.
***************************************************** }

procedure Gamma(Bitmap: TBitmap; L: Double);
{0.0 < L < 7.0}
  function Power(Base, Exponent: Extended): Extended;
  begin
    Result := Exp(Exponent * Ln(Base));
  end;
type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  Dest: pRGB;
  X, Y: Word;
  GT: array[0..255] of Byte;
begin
  Bitmap.PixelFormat := pf24Bit;
  GT[0] := 0;
  if L = 0 then
    L := 0.01;
  for X := 1 to 255 do
    GT[X] := Round(255 * Power(X / 255, 1 / L));
  for Y := 0 to Bitmap.Height - 1 do
  begin
    Dest := Bitmap.ScanLine[y];
    for X := 0 to Bitmap.Width - 1 do
    begin
      with Dest^ do
      begin
        R := GT[R];
        G := GT[G];
        B := GT[B];
      end;
      Inc(Dest);
    end;
  end;
end;

Программный код на языке Delphi, который реализует фильтр коррекции гаммы для растровой изображения. Функция Gamma принимает объект TBitmap и вещественное значение L в качестве входных параметров и применяет коррекцию гаммы к изображению.

Вот шаг за шагом, что код делает:

  1. Он устанавливает формат пикселя растра в 24-бита.
  2. Он инициализирует массив GT с 256 элементами, который будет хранить исправленные значения цветов.
  3. Если входное значение L равно 0, он устанавливает L в значение по умолчанию 0,01.
  4. Он рассчитывает исправленные значения цветов для каждого пикселя, подняв оригинальные значения R, G и B к степени 1/L с помощью функции Power. Результаты округляются до целых значений.
  5. Он проходит по каждой строке растра (используя свойство ScanLine) и применяет коррекцию гаммы к каждому пикселю в строке.

Коррекция гаммы - это распространенная техника, используемая для изменения яркости и контраста изображения, изменяя его цветовые значения. В этом реализации входное значение L контролирует силу коррекции гаммы. Значение 0,01 даст относительно слабую коррекцию, а более высокие значения (например, 2 или 3) дадут более заметные изменения.

Код является довольно эффективным и использует встроенные функции Delphi для поддержки растровых изображений с 24-битными пикселями и массивами. Однако он мог бы быть улучшен с помощью параллельного процессинга, чтобы ускорить процесс коррекции гаммы, особенно для больших изображений.

Вот несколько предложений по альтернативным решениям:

  1. Вместо использования массива GT для хранения исправленных цветов, рассмотрите возможность использования таблицы поиска (LUT) для уменьшения потребления памяти и улучшения производительности.
  2. Рассмотрите возможность реализации более сложной алгоритма коррекции гаммы, учитывающего хистограмму изображения и тоновую карту.
  3. Если вам нужно применить несколько коррекций гаммы последовательно, рассмотрите возможность создания пайплайна фильтров для упрощения процесса.

В целом, этоsolid реализация фильтра коррекции гаммы для Delphi и она должна работать хорошо для большинства случаев использования.

Изменение гаммы рисунка - процедура, которая изменяет цветовую схему изображения на основе параметра L, управляющего степенью изменения гаммы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Bitmap ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:19:46/0.0059561729431152/1