1
我有兩個柵格。第一個對應雲端遮罩,即像素對應雲端時爲1,當不包含時爲0。第二是蔭罩,1,如果該像素被分類爲陰影,否則爲0。在圖像分析中將陰影與其來源聯繫起來
爲了減少與陰影分類相關聯的誤差,可以使用陰影必須被關聯到雲中的事實;在一定方向上每個雲的x米內必須有一個陰影(可以通過太陽角來檢索)。
關於如何實現這個關聯步驟的任何想法?
這裏是一個原始圖像快照,雲罩(白色),蔭罩(黑色)
我有兩個柵格。第一個對應雲端遮罩,即像素對應雲端時爲1,當不包含時爲0。第二是蔭罩,1,如果該像素被分類爲陰影,否則爲0。在圖像分析中將陰影與其來源聯繫起來
爲了減少與陰影分類相關聯的誤差,可以使用陰影必須被關聯到雲中的事實;在一定方向上每個雲的x米內必須有一個陰影(可以通過太陽角來檢索)。
關於如何實現這個關聯步驟的任何想法?
這裏是一個原始圖像快照,雲罩(白色),蔭罩(黑色)
我已經看到了這個與隊列完成。本質上,僞代碼看起來是這樣的:
points = new list()
queue = new queue()
for x,y in image_coordinates:
if is_cloud(x,y):
point = new point(x=x, y=y, distance=0, cloud_x=x, cloud_y=y)
queue.push(point)
else:
point = new point(x=x, y=y, distance=null, could_x=null, cloud_y=null)
points.push(point)
while(!queue.is_empty()):
point = queue.pop()
for neighbor in point.neighbors():
if angle_is_correct(point.cloud_x, point.cloud_y, neighbor.point.x, neighbor.point.y):
if neighbor.is_direct(): //N,S,E,W
new_distance = point.distance + 1
else: //NE, SE, SW, NW
new_distance = point.distance + SQRT_2
if neighbor.point.distance == null or neighbor.point.distance > new_distance:
neighbor.point.distance = new_distance
neighbor.point.cloud_x = point.cloud_x
neighbor.point.cloud_y = point.cloud_y
queue.push(neighbor.point)
當運行完成後點將是x,y座標,他們到最近的雲計算距離的列表,並在x,y最近的雲計算座標(你可能不需要)。您應該使用angle_is_correct
函數來確保只考慮正確方向的雲。如果距離超過最大距離,您可能還可以進一步優化它以停止向隊列添加點。
我不能完全確定算法複雜,但我懷疑人們可以設計一個證據證明這是O(n)或O(日誌(N))。我所知道的是,當我需要它的時候,它對我很快奏效。
你的目標是什麼?你想創建陰影面具嗎?因爲它聽起來像你從它開始。如果不是,那麼你想分類什麼? – Pace
我試圖做一個陰影聯想到其雲來降低蔭罩的錯誤 – WAF