Program ten wczytuje obraz, dokonuje kilku zmian jak np. binaryzacji. Ja chcę aby obraz trzeci był rozmywany efektem gaussa, jednocześnie wykorzystując już jakieś wcześniej napisane komendy. Podpowie ktoś jak to zrobić? Najlepiej aby kod był jak najprostszy. Bardzo proszę o pomoc.
Kod: Zaznacz cały
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, ComCtrls;
type
Kolory=Array[1..3]of byte;
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function ColToRGB(Kolor:TColor):Kolory;
Var
RedGreenBlue:Kolory;
Begin
ColorToRGB(Kolor);
RedGreenBlue[1]:=($000000FF and Kolor);
RedGreenBlue[2]:=($0000FF00 and Kolor) Shr 8;
RedGreenBlue[3]:=($00FF0000 and Kolor) Shr 16;
Result:=RedGreenBlue;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
k,i,j:Integer;
Color:TColor;
Btmp:TBitmap;
x,y,z,R,G,B:Byte;
ReGrBl:Kolory;
begin
Btmp:=TBitmap.Create;
Btmp.Assign(Image1.Picture.Graphic);
Image1.Picture.Bitmap:=Btmp;
for i:=0 to 500 do
for j:=0 to 500 do
Begin
Color:=Image1.Canvas.Pixels[i,j];
ReGrBl:=ColToRGB(Color);
Color:=RGB(ReGrBl[1],0,0);
Image2.Canvas.Pixels[i,j]:=Color;
Color:=Image1.Canvas.Pixels[i,j];
Image3.Canvas.Pixels[i,j]:=Color;
Color:=Image1.Canvas.Pixels[i,j];
Color:=RGB(ReGrBl[3],ReGrBl[3],ReGrBl[3]);
Image4.Canvas.Pixels[i,j]:=Color;
Color:=Image1.Canvas.Pixels[i,j];
Color:=Image1.Canvas.Pixels[i,j];
Image5.Canvas.Pixels[i,j]:=clWhite;
x:=(ReGrBl[1]+ReGrBl[2]+ReGrBl[3]) div 3;
If x<100 then Image5.Canvas.Pixels[i,j]:=clBlack;
End;
Btmp.Free;
end;
end.