2010-04-10 119 views
1

我正在創建一個實用程序應用程序,該應用程序應檢測並報告圖像內透明矩形(alpha = 0)的角的座標。確定旋轉矩形的座標

到目前爲止,我已經建立了一個帶有Javascript + Canvas的系統,它顯示圖像並在圖像中的透明矩形內單擊時啓動類似填充的操作。它正確地確定了填充操作的邊界框,因此可以爲我提供正確的座標。

這是我迄今爲止的實現:http://www.scriptorama.nl/image/(適用於最近的Firefox/Safari)。

但是,邊界框方法破壞,然後透明矩形旋轉(CW或CCW),因爲結果邊界框不再適當地表示適當的寬度和高度。我試圖想出一些替代方案來檢測角落,但一直沒有能夠想出一個適當的解決方案。

那麼,有沒有人有任何建議,我可以如何處理這個問題,所以我可以正確檢測旋轉矩形的四個角的座標?

+0

這還不清楚。您的示例似乎正確識別邊界框。在執行洪水填充時遇到問題嗎?爲什麼這需要找到角落?填充填充通常通過查找邊緣像素而不用考慮幾何實體。 – 2010-04-10 11:19:03

+0

實際上,邊界框工作正常,並通過應用填充算法進行檢測。 但是,我需要矩形的角落的確切座標( - 不是 - 邊界框),我不知道如何處理該問題。 – NSSec 2010-04-10 11:23:22

回答

4

我認爲你可以用一個簡單的擴展,現有的解決方案做到這一點:步行沿着每個邊界框的4個邊緣,尋找透明像素:

  • 在非旋轉的情況下,所有沿着盒子的每個邊緣的像素將是透明的。
  • 在旋轉的情況下,必須有一個角接觸盒子的每個邊緣。這將位於離邊緣中間最遠的透明像素處(由於混疊,可能有多於一個,例如,如果矩形只是非常輕微旋轉)。
+0

這很好,馬修。正如你所預料的那樣,我幾乎可以完美地工作,只需要處理由於抗鋸齒引起的不準確。謝謝! – NSSec 2010-04-10 15:12:25