Конференция "Media" » Алгоритм фильтра Stained Glass [D7, WinXP]
 
  • sloosar © (02.11.09 20:56) [0]
    Доброго времени суток.
    У меня вопрос такой :
    Как можно реализовать на Delphi такой фильтр Stained Glass (Фотошоп).
    У меня есть догадки.
    Нужно просто нарисовать отрезки поверх картинки указаной толщины.
    Но каков алгоритм определения точек по которым будем рисовать отрезки, сказать затрудняюсь.
    И ещё как можно реализовать осветление и затемнение картинки?
  • Игорь Шевченко © (02.11.09 22:24) [1]

    > И ещё как можно реализовать осветление и затемнение картинки?


    применить к каждому пикселю преобразование из RGB в HLS, увеличить/уменьшить L, преобразовать обратно в RGB
  • Омлет © (02.11.09 22:43) [2]
    > И ещё как можно реализовать осветление и затемнение картинки?

    Упрощенный метод:

    function ByteLimit(Value: Integer): Byte;
    begin
     if Value < 0 then
       Result := 0
     else if Value > 255 then
       Result := 255
     else
       Result := Value;
    end;

    procedure LightDark24Bit(Bmp: TBitmap; Value: Integer);
    {
    Сделать светлее - Value > 0
    Cделать темнее  - Value < 0
    }

    var
    P               : PByteArray;
    X, Y            : Integer;
    BytesInScanLine : Integer;
    DIB             : TDIBSection;
    begin
    if (Bmp.PixelFormat = pf24Bit) and
       (GetObject(Bmp.Handle, SizeOf(DIB), @DIB) = SizeOf(DIB)) and
       (DIB.dsBmih.biHeight > 0) and (Value <> 0) then
    begin
      BytesInScanLine := (((DIB.dsBmih.biWidth * DIB.dsBmih.biBitCount) + 31) and not 31) div 8;
      P := DIB.dsBm.bmBits;
      for Y := DIB.dsBmih.biHeight - 1 downto 0 do
      begin
        for X := 0 to (DIB.dsBmih.biWidth - 1) * 3 do
          P[X] := ByteLimit(P[X] + Value);
        Integer(P) := Integer(P) + BytesInScanLine;
      end;
    end;
    end;

  • antonn © (03.11.09 12:52) [3]
    затемнение фигня, это не сложно. А вот загенерить маску витража - там да...
  • Sapersky (03.11.09 17:29) [4]
    http://www.blackpawn.com/texts/cellular/default.html
    Ну или можно поискать по теме "диаграмма Вороного".
 
Конференция "Media" » Алгоритм фильтра Stained Glass [D7, WinXP]
Есть новые Нет новых   [134430   +2][b:0][p:0.001]