图像的浮雕处理效果

原理:

  图像的浮雕处理效果就是突出图像中物体,而突出图像中的物体一般是加强物体边界的显示效果。一般采用的方法是:如果两个相邻的像素差别不大,则认为这两个像素在一个物体上,此时可以用一个颜色填充,如果两个相邻像素颜色差别较大则显然不在一个物体上,此时加强边界效果。

 

实例:

  

var
  Form19: TForm19;
  Map1: TBitmap;
implementation

{$R *.dfm}

procedure TForm19.FormCreate(Sender: TObject);
begin
     OpenDialog1.DefaultExt:=GraphicExtension(TBitmap);
     OpenDialog1.Filter:=GraphicFilter(TBitmap);
     if OpenDialog1.Execute then
     begin
        Map1:=TBitmap.Create;
        Map1.LoadFromFile(OpenDialog1.FileName);
        Image1.Picture.Bitmap:=Map1;
     end;
end;


procedure TForm19.Button1Click(Sender: TObject);
var
  xmax,ymax,i,j:integer;
  r,g,b:integer;

begin
  xmax:=Image1.Picture.Bitmap.Width-1;
  ymax:=Image1.Picture.Bitmap.Height-1;
  Label1.Caption:='浮雕特效处理中,请稍后...';
  form19.Refresh;

  Progressbar1.Min:=0;
  progressbar1.Max:=xmax;
  progressbar1.Position:=0;
  progressbar1.Step:=1;
  form19.refresh;

  for i:=0 to xmax-1 do
  begin
    progressbar1.StepIt;
    for j:=0 to ymax-1 do
    begin
      r:=GetRValue(Image1.Canvas.Pixels[i,j])-GetRValue(Image1.Canvas.Pixels[i+1,j+1])+128;
      g:=GetGValue(Image1.Canvas.Pixels[i,j])-GetGValue(Image1.Canvas.Pixels[i+1,j+1])+128;
      b:=GetBValue(Image1.Canvas.Pixels[i,j])-GetBValue(Image1.Canvas.Pixels[i+1,j+1])+128;

      if r>255 then r:=255
      else if r<0 then r:=0;

      if g>255 then g:=255
      else if g<0 then g:=0;

      if b>255 then b:=255
      else if b<0 then b:=0;
      Image1.Canvas.Pixels[i,j]:=RGB(r,g,b);

    end;
  end;

  image1.Refresh;
  Label1.Caption:='浮雕特效处理完成...';

end;

 

转载于:https://www.cnblogs.com/huking/archive/2010/04/06/1704996.html

你可能感兴趣的:(图像的浮雕处理效果)