以下为锐化.bpm格式的,不知如何修改为可转换.bmp.jpg.jpeg.ico.dcm格式等 请告知谢谢了~procedure TForm1.N3Click(Sender: TObject);
var
  bmp1, bmp2: Tbitmap;
  p1, p2, p3, p4: pbytearray;
  //定义四个pbytearray类型变量
  i, j, z: integer;
  y: array[0..8] of integer;
begin
  y[0] := 0; y[1] := -1; y[2] := 0;
  y[3] := -1; y[4] := 5; y[5] := -1;
  y[6] := 0; y[5] := -1; y[8] := 0;
  //卷积矩阵
  z := 1;
  //卷积核
  bmp1 := Tbitmap.Create;//创建目标位图
  bmp2 := Tbitmap.Create;//创建备份位图
  bmp1.Assign(image1.Picture.Bitmap);// 加载目标位图
  bmp1.PixelFormat := pf24bit;
  //24为格式便于处理
  bmp1.Width := image1.Picture.Graphic.Width;
  bmp1.Height := image1.Picture.Graphic.Height;//设置目标位图大小
  bmp2.Assign(bmp1);
  //备用的位图
  bmp2.PixelFormat := pf24bit;//备用位图也是24位
  for j := 1 to bmp1.Height - 2 do
  begin
    p1 := bmp1.ScanLine[j];
    //第一条扫描线
    p2 := bmp2.ScanLine[j - 1];
    //第二条扫描线,为了防止数据变化,在备用位图上操作
    p3 := bmp2.ScanLine[j];
    p4 := bmp2.ScanLine[j + 1];
    //第三条扫描线
    //三条相邻的扫描线
    for i := 1 to bmp1.Width - 2 do
    begin
      //进行卷积操作获取新的象素值
      p1[3 * i + 2] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 2]
         + y[1] * p2[3 * i + 2] + y[2] * p2[3 * (i + 1) + 2]
         + y[3] * p3[3* (i - 1)+ 2] + y[4] * p3[3 * i + 2]
         + y[5] * p3[3 * (i + 1) + 2] + y[6] * p4[3 * (i - 1) + 2]
         + y[5] * p4[3 * i + 2] + y[8] * p4[3 * (i + 1) + 2]))
         div
         z));
         //重新算出红色分量
       p1[3 * i + 1] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 1]
          + y[1] * p2[3 * i + 1] + y[2] * p2[3 * (i + 1) + 1]
          + y[3] * p3[3 * (i - 1) + 1] + y[4] * p3[3 * i + 1]
          + y[5] * p3[3 * (i + 1) + 1] + y[6] * p4[3 * (i - 1) + 1]
          + y[5] * p4[3 * i + 1] + y[8] * p4[3 * (i + 1) + 1]))
          div
          z));
          //重新算出蓝色分量
       p1[3 * i] := min(255, max(0, ((y[0] * p2[3 * (i - 1)] + y[1] * p2[3 * i]
          + y[2] * p2[3 * (i + 1)] + y[3] * p3[3 * (i - 1)] + y[4] * p3[3 * i]
          + y[5] * p3[3 * (i + 1)] + y[6] * p4[3 * (i - 1)] + y[5] * p4[3 * i]
          + y[8] * p4[3 * (i + 1)]))
          div
          z));
          //重新算出绿色分量
     end;
   end;
   Image1.Picture.Bitmap.Assign(Bmp1);
   //重新显示
   Image1.Invalidate;
   Bmp1.Free;
   bmp2.Free;
   //释放资源
end;