C#:图像系列的平均值

时间:2011-03-01 02:34:07

标签: c# drawing

假设我有一系列黑白图像,而不是灰度图像。我正在尝试计算所有图像的平均值。我有一些应该有效的示例代码,但我想知道是否有更好的方法?

Bitmap[] Images = ReadAndScale(Width: 50, Height: 50);

int Width = 50;
int Height = 50;

double[,] Result = new int[50,50]

for (int i = 0 i < Images.Count; i++)
{
  for (int j = 0; j < Width; j++)
  {
     for (int k = 0; k < Height; k++)
     {
         Result[j, k] += Images[i].GetPixel(j,k) == Color.White ? 0 
                         : 1.0 / (double)Images.Count;
     }
  }
}

在这些循环结束时,你有一个包含平均值的数组Result []; &GT; .5是黑色,否则平均值是白色。

2 个答案:

答案 0 :(得分:0)

好吧,你可以让图像成为内循环,并在你保证平均值小于或大于0.5时立即爆发。不确定这是否真的“更好”。

答案 1 :(得分:0)

嗯,我认为你的通用算法很好,而不是一种让它变得更好的方法。

我认为你能让它“变得更好”的唯一方法就是从中获取更多的表现,但是你需要吗?

我看到的主要性能问题是使用GetPixel(),因为它是一种相对较慢的方法。以下是使用运行速度更快的不安全代码的示例:Unsafe Bitmap

不要让“不安全”这个词吓到你,它只是在C#中启用真指针的关键字。