Косячная реализация бай ми.
function blue(color:integer):integer;
begin
color:=color+16777216;
blue:=color mod 256;
end;
function green(color:integer):integer;
begin
color:=color+16777216;
color:=color div 256;
green:=color mod 256;
end;
function red(color:integer):integer;
begin
color:=color+16777216;
color:=color div 65536;
red:=color mod 256;
end;
function blur(img:image; w,h:integer):image;
var scr:image;
begin
scr:=imagefromcanvas(0,0,w,h);
for i:=0 to w-1 do
for j:=0 to h-1 do begin
setcolor((red(getcolor(im,i,j))*2+red(getcolor(im,i+1,j))+red(getcolor(im,i,j+1))+red(getcolor(im,i+1,j+1))) div 5,
(green(getcolor(im,i,j))*2+green(getcolor(im,i+1,j))+green(getcolor(im,i,j+1))+green(getcolor(im,i+1,j+1))) div 5,
(blue(getcolor(im,i,j))*2+blue(getcolor(im,i+1,j))+blue(getcolor(im,i,j+1))+blue(getcolor(im,i+1,j+1))) div 5);
plot(i,j);
end;
blur:=imagefromcanvas(0,0,20,20);
drawimage(scr,0,0);
end;
Результат (разблюрен квадрат 20х20 слева):
