2011-03-01 189 views
0

假設我有一系列黑白圖像,不是灰度圖像。我試圖計算所有圖像的平均值。我有一些應該工作的示例代碼,但我想知道是否有更好的方法?C#:平均圖像系列

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 []; > .5是黑色的,否則平均值是白色的。

+1

什麼是不工作?你計算平均結果然後你做什麼? – 2011-03-01 02:37:43

回答

0

嗯,我認爲你的一般算法很好,並不是真正使這種「更好」的方法。

我看到你的唯一方法可以讓它「更好」,將是更多的表現,但你需要嗎?

我看到的主要問題是使用GetPixel(),因爲它是一個相對較慢的方法。下面是一個使用不安全代碼的例子,它的運行速度要快得多:Unsafe Bitmap

不要讓「不安全」這個詞嚇倒你,它只是在C#中啓用真指針的關鍵字。

0

那麼,你可以使圖像成爲內部循環,一旦你保證平均值小於或大於.5,就立即爆發。不知道這是否真的「更好」。