delphi 之拉普拉斯算法

本文详细介绍了如何在Delphi编程环境中实现拉普拉斯算法,包括算法的原理、步骤及代码实现,帮助读者理解并掌握该算法在Delphi中的应用。
摘要由CSDN通过智能技术生成

本文主要是16位灰阶图的拉普拉斯算法做锐化:
unit Sharp;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ieview, imageenview, imageen,UImageUtils, ComCtrls,
  Buttons;
type
  TForm1 = class(TForm)
    ImageEn1: TImageEn;
    Button1: TButton;
    dlgOpen1: TOpenDialog;
    ImageEnView1: TImageEnView;
    close: TButton;
    Edit1: TEdit;
    TrackBar1: TTrackBar;
    BitBtn1: TBitBtn;
    procedure Button1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    FImageBuffer: PWord;
    FImageBuffer2: PWord;
    FImageWidth, FImageHeight: Integer;
    Lock: Boolean;
    procedure sharpenImage(gray: PWord; smooth: PWord; width, height: Integer;n : Single);
    procedure sharpenImagex(gray: PWord; smooth: PWord; width, height: Integer);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
var
  templates: array[0..24] of Integer =
   (-1, -4, -7, -4, -1,
    -4, -16, -26, -16, -4,
    -7, -26, 505, -26, -7,
    -4, -16, -26, -16, -4,
    -1, -4, -7, -4, -1);
   templates1: array[0..8] of Integer =
   (0, -1, 0,
    -1, 5, -1,
    0, -1, 0);
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  n : Single;c : Integer;
  t: Cardinal;
begin
  if not dlgOpen1.Execute then Exit;
   ImageEn1.IO.LoadFromFile(dlgOpen1.FileName);
  // ImageEnView1.IO.LoadFromFile(dlgOpen1.FileName);
   Tiff16BitToBuffer(dlgOpen1.FileName, FImageBuffer, FImageWidth, FImageHeight);

  if Assigned(FImageBuffer2) then
    FreeMem(FImageBuffer2);
  GetMem(FImageBuffer2, FImageWidth * FImageHeight * SizeOf(Word));
    Val(Edit1.Text,n,c);
  t := GetTickCount;
  sharpenImage(FImageBuffer, FImageBuffer2, FImageWidth, FImageHeight,0.95);
  caption := IntToStr(GetTickCount - t);
  BufferToTIFF16bit(FImageBuffer2, FImageWidth, FImageHeight,
    dlgOpen1.FileName + '.123.tif');
  ImageEnView1.IO.LoadFromFile(dlgOpen1.FileName + '.123.tif');
end;
procedure TForm1.sharpenImage(gray, smooth: PWord; width, height: Integer;n : Single);
var
  i,j: Integer;
  index, sum: Integer;
  grayPtr, smoothP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值