形状检测 JavaScript Canvas

5
我正在开发一个Web应用程序,其中我从IP相机中获取图像,并且需要能够查看停车位是否有汽车。我想使用某种形状检测来实现这一点,但是我似乎只能找到C ++端口的面部检测和基本形状(例如正方形)。有人可以指导我正确的方向,以便我可以制作自己的形状检测吗?cam快照目前,我正在绘制蓝色框并获取x,y,h,w的图像数据,并查看除了停车场0xFFFFFF之外是否还有其他颜色,但在晚上它无法工作,对于行走的人也会产生偏差。

任何帮助都将不胜感激..

function drawgrid(){
  context.drawImage(img, 0, 0);
  localStorage.setItem( "savedImageData", canvas.toDataURL("image/png") );
  context.beginPath();
  context.rect(308, 240, 250, 100);
  context.lineWidth = 2;
  context.strokeStyle = 'blue';
  context.stroke();
  var dataURL = canvas.toDataURL();
}

这是获取图像数据并将其保存到本地存储中,然后我遍历每个像素,但我认为这不是正确的方法。


追踪形状相当复杂,但您可以使用另一种廉价的方法来检测汽车的存在。您可以从停车位的图像中剪切一个正方形/矩形。然后从中央车道或任何其他干净的黑色路面的图像中剪切一个相同大小的正方形。然后将子图片调整为1x1像素,并获取图像数据。如果子图片的RGBA插槽的总和在大约30个级别内,则该位置为空。移动摄像机会使这变得更加困难... 设计一辆隐形汽车以愚弄这种技术是可能的,但没有什么是完美的... - dandavis
就像交通和行人等短暂干扰一样,只需每5秒采样一次,并且需要连续5次采样都为正才会触发输出。 - dandavis
dandavis 有趣。这是问题(我也在考虑同样的事情),现在我所在的地方正在下雪,所以完全无法测试。我也认为当相机使用红外线时,晚上会发生同样的效果。 - Dnaso
困难的任务——作为一名前明尼苏达州居民,我知道即使汽车离开了,停车位上形状像汽车的地方也会融化积雪。有人在这个链接中尝试了照片车辆检测:http://cseweb.ucsd.edu/classes/wi07/cse190-a/reports/ntrue.pdf 如果你只使用一个被掩盖以狭窄指向感兴趣的停车位的无线运动传感器,可能会减少虚假阳性。 - markE
Levi,你可能是个天才。等我看看它是否有效,稍等一下。 - Dnaso
显示剩余2条评论
1个回答

4

这个问题可能对于SO来说有点宽泛,但是你可以使用以下方法来接近:

  • 对于每个采样的图像,将其转换为灰度并减去上一个图像(或者每隔一段时间采样一个主帧,并将其用作新帧的减数)。
  • 应用阈值过滤器-所有低于阈值的值都转换为黑色,所有高于阈值的值都转换为白色
  • 应用腐蚀过滤器来处理图像中的噪点像素
  • 应用统计措施来确定在一个区域内改变的像素数量是否应该触发“警报”。

这听起来可能很简单,但你将面临各种挑战,如光线条件和噪音、小运动与大运动之间的区别。它(几乎)全部都是关于找到和调整值、采样率、阈值,直到你有了适合自己情况的东西。这些值会因白天和晚上的光线条件而异,例如在夜间或光线较差(多云、天气阴暗)时,图像中会出现很多噪点。在多云和有风的日子里,光线变化很大,你将不得不处理阈值和采样率,如果你的相机设置为自动调节,你将有各种亮度值,取决于白平衡(即使转换为灰度),光圈、快门时间等。

它们都会影响结果,但是它们对结果产生多大的影响,以及统计部分在哪里发挥作用,这就决定了最终的结果。

还有其他几种方法,但这是一个非常广泛的话题。无论如何,我希望这能给你一些指引,帮助你走向正确的方向。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接