2012-05-15 169 views
0

我的作業是編寫一個非常簡單的應用程序(Java或C#,我都知道),它可以檢測圖片中一杯水/可樂的水位(它必須在那裏畫一條線)。我甚至不知道如何開始它。我一整天都在搜索,但沒有找到有用的結果。有沒有什麼好的算法可以檢測液位?如何檢測圖像上的水位?

照片是從側面拍攝,像這樣:

enter image description here

(它也是很好的,如果它檢測到兩條線)。那麼你能幫我解決問題嗎?使用egde檢測(是否有任何好的基本算法?)或其他方法?

這將是,如果它檢測到水,焦炭最好是,每liqued等....

+1

你打算如何檢測它?有一個浮標,一個比例尺,一些光學元件? –

+7

*「非常簡單的應用程序」*您有什麼想法,直到你有一個工作解決方案將有多困難或簡單? *「那麼你能幫助我如何開始?」*閱讀你的文章,諮詢你的導師,這是他們在那裏。 –

+0

乾淨的玻璃水會很難 – PeterMmm

回答

6

你將不得不做一些邊緣檢測,然後,一旦你有邊緣,試圖找到在玻璃內的水平。你可以使用一個工具包,如Aforge.NET。然後代碼來檢測邊緣是非常簡單的,例如:

Bitmap b = new Bitmap(Image.FromFile(@"C:\Temp\water.jpg")); 
// create filter 
Edges filter = new Edges(); 
// apply the filter 
filter.ApplyInPlace(b); 

pictureBox1.Image = b; 

息率這樣的圖像:

enter image description here

現在,應該是有點更容易找到水在點玻璃。由於所有背景噪音都已消除,因此您可以專注於確定您應該關閉哪個邊緣。

0

檢查霍夫變換here

0

它會幫助你得到有關玻璃的能力。

一旦你知道一個玻璃可多少水抱,你可以畫兩條線在使用,你寫你的自我功能的圖像。我會建議一條線的玻璃尺寸和一條水線超級施加在圖像上,然後您可以使用這些線條和玻璃的最大容量在兩者之間形成相關性,並計算包含在內的流體水平玻璃。

請記住,你的教授不感興趣這麼多,你得到的分配100%正確的,他們更感興趣的是你準備用自己的行動來解決問題。谷歌搜索不能總能解決你的問題。