我正在使用swissdelphicenter.ch中的Convolve函数。该功能看起来不错,但问题是最终图像向左上移1px。当您多次卷积图像时,这会变得更加突出。
事实证明我可以通过以下修改来解决这个问题,但如果源和目标是相同的图像,则该功能不起作用。
begin
...
Result.Width := ABitmap.Width {- 2};
Result.Height := ABitmap.Height {- 2};
...
for LRow := 1 to ABitmap.Height - 3 do //old val is 2
...
LRowOut := Dst.ScanLine[LRow{ - 1}];
...
LRowOut[LCol {- 1}].rgbtBlue := trunc(LNewBlue);
LRowOut[LCol {- 1}].rgbtGreen := trunc(LNewGreen);
LRowOut[LCol {- 1}].rgbtRed := trunc(LNewRed);
...
end;
答案 0 :(得分:2)
如果源和目标是相同的图像,则使用新的(已过滤的)内容重写扫描线(使用第(i-1),第i和第(i + 1)个来计算新的第i个)< / p>
所以请记住两条上部扫描线 - 使用Move
例程将其内容复制到TempRow1和TempRow2,并在计算中使用这些TempRows。