6

我想计算池中的人数,用于统计用途。我将对位于游泳池天花板上的安全摄像头生成的图像使用人工智能和图像处理。相机是静态的,所以它没有旋转轴。

对于图像处理步骤,我想专注于游泳者,并尝试移除池的其余部分。我需要在背景和游泳者之间形成良好的对比。

问题是摄像机的输出图像有很多“噪音”,如阳光、光线、水底的黑线、空中的旗帜和备用走廊的电缆。

这是图像外观的示例。真实图像的质量会更好,因为这个例子是从我用手机输出的照片中截取的。

捕获图像

  • 去除图像上的太阳光线/光线的最有效方法是什么?也许使用过滤器?
  • 考虑到水底的黑线,我如何在游泳者和背景之间创造出高对比度?

因为相机不动,我可以获得其他图像,具有相同的背景(太阳光线除外),也许我可以利用图像上的差异来提取游泳者?

我正在寻找任何想法/过滤器/参考。

4

1 回答 1

4

我的建议是将图像分析到 HSV 空间中。对于信息 H(色调)对应于颜色。S(饱和度)是颜色的纯度。

如果您使用的是 matlab,请在 opencv 中使用函数 rgb2hsv() 使用 cvCvtColor() 来转换颜色空间。

这是我对您的图像所做的一个小实验。我已将图像转换为 HSV 空间。我已经发布了它的假彩色图。现在有了这个,你可以做的是聚类 k-means 之类的东西来识别人。 在此处输入图像描述

在 octave/matlab 中重新生成它的确切命令是:

>> im = imread( '9Nd5s.png' );
>> hsv = rgb2hsv( im );
>> imagesc( hsv(:,:,1) ), colormap( hot )

希望这会有所帮助,如果您需要更多帮助,请告诉我。你的问题似乎很有趣。

于 2012-10-26T14:16:03.837 回答