【原创】关于在Delphi中使用TParallel实现并行运算

前几天在做一个摄像头的程序,由于镜头本身是超广角的,所以出来的图像畸变很严重,影像了识别,所以查阅了一番资料,写了一个简单的畸变处理算法,如下:

class procedure TPic.CorrectLensDistortion(const ABitmap: TBitmap; const k1, k2: Single);
var
  x, y, cx, cy: Integer;
  u, v, r2, r4, radial_distortion: Double;
  SrcColor: TAlphaColor;
  CorrectedBitmap: TBitmap;
  DistortionCache: array of TPointF;
  SrcData, DstData: TBitmapData;
begin
  if not Assigned(ABitmap) then exit;
  CorrectedBitmap := TBitmap.Create(ABitmap.Width, ABitmap.Height);
  try
    cx := ABitmap.Width div 2;
    cy := ABitmap.Height div 2;

    SetLength(DistortionCache, ABitmap.Width * ABitmap.Height);

    // 预计算畸变缓存
    for y := 0 to ABitmap.Height - 1 do
    begin
      for x := 0 to ABitmap.Width - 1 do
      begin
        u := (x - cx) / cx;
        v := (y - cy) / cy;

        r2 := u * u + v * v;
        r4 := r2 * r2;
        radial_distortion := 1 &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值