對於該特定圖像,有幾種方法可以解決部分問題。也許如果你結合了幾種方法和提供用戶交互選擇,你可以在相當短的時間內開發一個好的軟件。我會用它!
你和米莎已經討論過的前兩個項目:用Canny或其他手段
- 邊緣檢測。我建議你應該使用「原始」邊緣強度圖像,而不是對邊緣強度進行閾值生成二值化圖像。請注意,在這種情況下,這個數字非常關注,大部分背景都沒有關注。儘管這不是一個通用的解決方案,但對於這個特定的圖像,可以過濾掉(a)屬於線(使用Hough或RANSAC)但(b)具有低於閾值陡度的梯度的邊。
- 洪水填充。 Misha已經提供了鏈接。填充「靜態」值的洪水不應太難實現(例如,相對於單擊的像素填充值爲+/- N的所有相鄰像素)。當然,考慮到由於照明和三維曲率造成的梯度,實施動態填充填充是很好的做法。 。 。哎喲!
- Mean shift clustering。這甚至可以作爲幫助將相同HSV值的像素聚集在一起的第一步。然而,只是眼睛的形象,前景數字的色調和大部分背景的色調是相似的。 OpenCV實現了均值漂移。有一個相關CAMSHIFT算法的視頻在工作:http://www.youtube.com/watch?v=iBOlbs8i7Og
- 邊緣跟隨強邊緣。如果用戶點擊靠近邊緣,則識別最接近的強邊緣,然後使用輪廓跟蹤(或「輪廓跟蹤」)算法。基本輪廓跟隨算法適用於二值圖像;你可以調整你的算法,試圖在RGB空間中佔據強大的優勢。整蠱!
- 由於您正在爲用戶編寫軟件,因此請花一些時間來提高軟件的可用性,而不是僅僅試圖解決一般的圖像處理問題。
- 檢查背景曲線的遮擋。確定項目是否屬於背景的另一種方法是確定它是否被前景對象遮擋(隱藏)。如果發現兩條共線的線段並且具有平緩的漸變(即它們沒有聚焦),則它們可能是兩條線段而不是一條線段,因爲它們被前景對象遮擋。
- 如果您有任何機會可以使用相機而不是現有圖像,則可以通過在不同對焦設置下拍攝多張連續圖像來模仿「光場」或全光照相機(例如Lytro https://www.lytro.com/camera)。這可以幫助您根據漸變的變化識別不同深度的圖形。如果雕像相對靠近相機,當相機朝向無限遠對焦時,它將失去焦點。
提高可用性
假設你可以將圖像分割成是相當不同的塊,提示用戶點擊屬於同一感興趣對象塊。每個塊可以有自己的邊緣強度調整參數集,顏色驗收範圍等。具有塊特定參數可以幫助使軟件可用,即使存在影響分割的陰影,變化的光照等。類似這樣的事情可以通過組合選擇在GIMP和Photoshop中完成,但它的可用性不如它。
對於已識別的塊,實現「對齊邊緣」功能,可幫助用戶將發現的邊緣曲線移動到真實的邊緣曲線上。如果用戶抓取一個塊輪廓並向一個方向拖動它,輪廓可以在該方向上捕捉到下一個較強的邊緣。
提供批處理選項。如果用戶在相同條件下拍攝了一系列照片,則用戶選擇的第一張圖像塊可以幫助引導軟件設置連續圖像的參數。這並不是爲了解決一般的分割問題,但可能會爲用戶節省一些特定圖像組的時間和精力。
這是一個有趣的問題。祝你好運!
可能的重複 - http://stackoverflow.com/questions/665406/how-to-make-a-color-transparent-in-a-bufferedimage-and-save-as-png – mre 2012-01-10 16:45:09
它不是重複的,但它是相關的。在這篇文章中,這個人想要1)以編程方式分離前景和背景2)並使背景變得透明。你提到的帖子只有2)。當然,1)是問題的一個較難的部分。 – misha 2012-01-11 02:20:55