步驟 3,計算直方圖相似度度量
這步驟的法寶在於這個公式:
Sim(G,S) = Σ (1 - |G_i - S_i| / max(G_i, S_i)) / N 其中 G、S 為直方圖,N 為顏色空間樣本數
為了大家少敲幾行字,也給出一堆程式碼:
// 計算相減後的絕對值
private float GetAbs(int firstNum, int secondNum)
{
float abs = Math.Abs((float)firstNum - (float)secondNum);
float result = Math.Max(firstNum, secondNum);
if (result == 0) result = 1;
return abs / result;
}
// 最終計算結果
public float GetResult(int[] firstNum, int[] scondNum)
{
if (firstNum.Length != scondNum.Length) return 0;
float result = 0;
int j = firstNum.Length;
for (int i = 0; i < j; i++)
{
result += 1 - GetAbs(firstNum[i], scondNum[i]);
Console.WriteLine(i + "----" + result);
}
return result / j;
}