2010-02-17 43 views
2

我希望能夠計算一行像素中的「平均最亮點」。這是一個原始的3D掃描儀。我如何計算一行像素中最亮點的質心?

測試我簡單地通過像素,如果當前像素比以前更亮,該線最亮的點將被設置爲當前像素。這當然會在整個圖像中產生非常不安的結果。

我想獲得'平均亮度中心',而不是,如果這是有道理的。

alt text

必須是常見的事,我只是缺少話語權的谷歌搜索。

回答

3

計算偏移的強度加權平均值。

鑑於你的榜樣的強度(猜測)和偏移:

0 0 0 0 1 3 2 3 1 0 0 0 0 0 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 

這將給你(5+3*6+2*7+3*8+9)/(1+3+2+3+1) = 7

1

您正在尋找1D Convolution這需要一個過濾器與您「卷積」的形象。例如,你可以使用一箇中值濾波器(維基百科借款例子)

x = [2 80 6 3] 
y[1] = Median[2 2 80] = 2 
y[2] = Median[2 80 6] = Median[2 6 80] = 6 
y[3] = Median[80 6 3] = Median[3 6 80] = 6 
y[4] = Median[6 3 3] = Median[3 3 6] = 3 
so 
y = [2 6 6 3] 

所以在這裏,窗口大小爲3,因爲你看在時間3個像素,並與周圍替換該窗口中的像素中位數。 3代表一個窗口,我們觀察前一個像素和第一個像素後面的像素,我們當前正在評估,5代表前後兩個像素,等等。

對於mean filter,您可以做同樣的事情,除了更換與周圍的平均值所有值的窗口中的像素,即

x = [2 80 6 3] 
y[1] = Mean[2 2 80] = 28 
y[2] = Mean[2 80 6] = 29.33 
y[3] = Mean[80 6 3] = 29.667 
y[4] = Mean[6 3 3] = 4 
so 
y = [28 29.33 29.667 4] 

因此,對於你的問題y[3]是「的意思是亮的點」。

請注意邊界是如何處理的y[1](之前沒有像素)和y[4](之後沒有像素) - 此示例「複製」邊界附近的像素。因此,我們通常用複製或常量邊框「填充」圖像,對圖像進行卷積,然後移除這些邊框。

這是一個標準操作,您可以在許多計算軟件包中找到它。

0

你的問題就像找到最長的序列問題。一旦你能夠確定一個序列(起點和長度),剩下的就是找到中位數,這是中心因素。 爲了找到序列,必須存在明亮和黑暗的定義,無論是相對 - >先前值還是先前值的一對。絕對:一個固定的門檻。