这是我的一段代码,计算差异。它工作正常但需要很多时间(因为高度和宽度)。
“数据”是一个灰度图像位图。
“过滤器”是 [3,3] 矩阵。
“fh”和“fw”最大值为 3。
我希望加快这段代码的速度。
我也尝试使用并行,但是它不能正常工作(错误超出范围)。
private float[,] Differentiate(int[,] Data, int[,] Filter)
{
int i, j, k, l, Fh, Fw;
Fw = Filter.GetLength(0);
Fh = Filter.GetLength(1);
float sum = 0;
float[,] Output = new float[Width, Height];
for (i = Fw / 2; i <= (Width - Fw / 2) - 1; i++)
{
for (j = Fh / 2; j <= (Height - Fh / 2) - 1; j++)
{
sum=0;
for(k = -Fw/2; k <= Fw/2; k++)
{
for(l = -Fh/2; l <= Fh/2; l++)
{
sum = sum + Data[i+k, j+l] * Filter[Fw/2+k, Fh/2+l];
}
}
Output[i,j] = sum;
}
}
return Output;
}
烙印99
四季花海
相关分类