2012-03-05 29 views
0

我調試一個機器人的項目,並已發現了我不太知道如何在理論上解決它的錯誤。以色距結果的積分圖像(邏輯錯誤)

我必須計算一個顏色距離圖,然後我必須拿出結果的積分圖像並用它做一些計算。

使用從使用式SQRT一個實驗室colorspaced圖像I獲得例如紅色的色彩距離(PA = 255,PB = 127)的A和B信道([A-PA]^2 + [B-PB]^2)

subtract(mA, Scalar(pA), tA); 
subtract(mB, Scalar(pB), tB); 
tA.convertTo(t32A, CV_32SC1); 
tB.convertTo(t32B, CV_32SC1); 
pow(t32A, 2.0, powA); 
pow(t32B, 2.0, powB); 
add(powA, powB, sq); 
pow(sq, 0.5, res); 
//res.convertTo(result, CV_8UC1); 

我所需要的轉換,因爲CV_8U處理值以上255

侷限到CV_32S現在我必須將檢測結果送入到積分圖像,這僅期望CV_8UC1的圖像。

我現在面臨的問題是,上述的顏色距離函數可能會產生與像素值高於255

例如:(0,0)之間距離 紅色(255127)

SQRT((0-255)^ 2 +(0-127)^ 2)= 285

之間或(0255)到紅(255127)

SQRT((0-255)^ 2 +(255 -127)^ 2)= 285

有沒有人有任何建議,我可以如何將結果提供給整體圖像,而不會丟失任何信息。

謝謝

+0

我想你想糾正你的例子中的錯誤。 – bubble 2012-03-05 01:23:13

+0

這個例子有什麼問題,我改寫過了,也許現在更有意義了...... – 2012-03-05 01:41:39

+0

是的,現在看起來沒問題。 – bubble 2012-03-05 01:46:07

回答

1

如何使用的sqrt(2)歸一化因子?

+0

我不明白你的解決方案......你能詳細說明一下嗎?在此先感謝 – 2012-03-05 01:32:00

+0

您可以從這種比較中獲得的最大值是sqrt(255^2 + 255^2)。要使其在0到255的範圍內,可以將它與sqrt(2)分開。因此,如果用sqrt(2)除以任何這樣的值,則保證結果將在0到255之間。 – bubble 2012-03-05 01:51:27

+0

Okidoki似乎很簡單。 – 2012-03-05 01:56:13