如何检测图像上的水位?

laj*_*nto 0 c# java algorithm image

我的作业是写一个非常简单的应用程序(Java或C#,我知道两者),它可以检测图片中一杯水/焦炭的水位(它必须在那里画一条线).我甚至不知道如何开始它.我整天用谷歌搜索,但没有找到有用的结果.有没有好的算法,可以检测液体的水平?

照片是从侧面拍摄的,如下所示:

在此输入图像描述

(如果它检测到两条线也很好).你能帮我解决一下如何开始吗?使用egde检测(有没有任何好的基本算法?),或其他方法?

如果它能检测到水,焦炭和每种液体等,那将是最好的....

Joh*_*ner 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;
Run Code Online (Sandbox Code Playgroud)

产生如下图像:

在此输入图像描述

现在应该更容易找到玻璃杯中的水点.由于消除了所有背景噪音,您可以专注于确定应关键的边缘.