问题标签 [computer-vision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
24574 浏览

algorithm - Viola-Jones 的人脸检测声称拥有 18 万个特征

我一直在实施Viola-Jones 的人脸检测算法的改编版。该技术依赖于在图像中放置一个 24x24 像素的子帧,然后将矩形特征放置在图像中的每个位置,并具有各种可能的大小。

这些特征可以由两个、三个或四个矩形组成。给出了以下示例。

矩形特征

他们声称详尽的集合超过 180k(第 2 节):

鉴于检测器的基本分辨率为 24x24,详尽的矩形特征集相当大,超过 180,000 个。请注意,与 Haar 基不同,矩形特征集是过完备的。

以下陈述未在论文中明确说明,因此它们是我的假设:

  1. 只有 2 个二矩形特征、2 个三矩形特征和 1 个四矩形特征。这背后的逻辑是我们正在观察突出显示的矩形之间的差异,而不是明确地观察颜色或亮度或任何类似的东西。
  2. 我们不能将特征类型 A 定义为 1x1 像素块;它必须至少为 1x2 像素。此外,类型 D 必须至少为 2x2 像素,并且此规则适用于其他特征。
  3. 我们不能将特征类型 A 定义为 1x3 像素块,因为中间像素无法分割,从自身中减去它与 1x2 像素块相同;此特征类型仅针对偶数宽度定义。此外,特征类型 C 的宽度必须能被 3 整除,此规则也适用于其他特征。
  4. 我们无法定义宽度和/或高度为 0 的特征。因此,我们将xy迭代为 24 减去特征的大小。

基于这些假设,我计算了详尽的集合:

结果是162,336

我发现近似 Viola & Jones 所说的“超过 180,000 个”的唯一方法是放弃假设 #4 并在代码中引入错误。这涉及将四行分别更改为:

结果是180,625。(请注意,这将有效地防止特征接触子框架的右侧和/或底部。)

现在当然是问题:他们在实施过程中犯了错误吗?考虑表面为零的特征是否有意义?还是我看错了?

0 投票
2 回答
5794 浏览

matlab - 从第二个中心矩计算对象统计量

我目前正在为GNU Octave编写一个版本的 MATLAB RegionProps函数。我已经实现了大部分,但我仍然在努力实现几个部分。我之前曾询问过一个区域的第二个中心时刻

这在理论上很有帮助,但我在实际实施这些建议时遇到了麻烦。我得到的结果与 MATLAB(或常识)大不相同,我真的不明白为什么。

考虑这个测试图像:

斜椭圆。

我们可以看到它与 X 轴倾斜 45 度,短轴和长轴分别为 30 和 100。

通过 MATLAB 的RegionProps函数运行它证实了这一点:

同时,我什至没有把轴弄对。我正在尝试使用来自维基百科的这些公式

到目前为止,我的代码是:

raw_moments.m:

中央时刻.m:

这是我尝试使用这些的代码。我包括对我在每个步骤中获得的值的评论:

我不确定我做错了什么。我似乎正确地遵循了这些公式,但我的结果是无稽之谈。我没有在我的矩函数中发现任何明显的错误,尽管老实说我对矩的理解并不是最好的。

谁能看到我会误入歧途?非常感谢你。

0 投票
5 回答
18016 浏览

matlab - 查找由区域掩码表示的多边形的角

BW = poly2mask(x, y, m, n)从由向量 x 和 y 表示的 ROI 多边形计算二进制感兴趣区域 (ROI) 掩码 BW。BW 的大小是 m×n。

poly2mask将 BW 中位于多边形 (X,Y) 内的像素设置为 1,将多边形外的像素设置为 0。

问题: 给定这样一个凸四边形的二进制掩码BW,确定四个角的最有效方法是什么?

例如,

例子

迄今为止最好的解决方案: 使用edge找到边界线,霍夫变换在边缘图像中找到 4 条线,然后找到这 4 条线的交点,或者在边缘图像上使用角检测器。看起来很复杂,我不禁觉得那里有一个更简单的解决方案。

顺便说一句,convhull并不总是返回 4 个点(也许有人可以建议qhull防止这种情况的选项):它也沿边缘返回几个点。

编辑: Amro 的回答似乎非常优雅和高效。但是每个真正的角落可能有多个“角落”,因为峰不是唯一的。我可以基于θ对它们进行聚类并平均一个真实角落周围的“角落”,但主要问题是使用order(1:10).

10足以说明所有角落还是会排除真实角落的“角落” ?

0 投票
4 回答
1477 浏览

c# - C# - 多点触控帮助?USB网络摄像头输入?图像分析?

我正在尝试制作一个 DIY 触摸屏,并希望将其参加当地的科学博览会,但想在多点触控的编程方面进行。我的问题在于我从未使用过分析图像(来自基于 USB 的网络摄像头)。
如果可能的话,我想在 C# 中做这个项目(C++ - 如果最坏的情况发生)
我需要分析一张黑色图片(来自 USB 网络摄像头),然后检测何时出现白色斑点。我该怎么做呢?---是否有一种已知的方法来检测变化与分析每个像素?如果是这样,指向这里的指针会很好:)
另外,我如何通过 USB 从网络摄像头获取输入?--- 我在哪里可以获得图书馆/ddl 的?
我见过一些可以使用这个的程序,但是它们会转换图像——这会占用时间和处理器速度……有没有办法使用原始输入图像/数据?
帮助?

0 投票
3 回答
20356 浏览

c++ - 如何以编程方式禁用网络摄像头的自动对焦?

我正在尝试使用网络摄像头进行计算机视觉(模型是 Hercules Dualpix)。我知道这不是理想的相机,但我别无选择。

问题是自动对焦使校准相机变得困难/不可能。任何人都知道禁用自动对焦功能的方法。或者,如果有人想处理它并使用自动对焦校准相机。

0 投票
4 回答
1129 浏览

algorithm - 图像识别资源

我正在寻找介绍图像处理算法(面部和形状识别等)的推荐,并想知道是否有人对书籍、白皮书或网站有好的推荐。

我从对图像识别知之甚少开始,并在大学(很久以前)做了一些数学。

任何帮助或指示将不胜感激。

0 投票
3 回答
3170 浏览

machine-learning - 从图像中提取主要/最常用的颜色

我想提取图像中最常用的颜色,或者至少是主色调你能推荐我如何开始这项任务吗?或指向我类似的代码?我一直在寻找它,但没有成功。

0 投票
9 回答
53031 浏览

graphics - 如何识别此图像中的矩形?

我有一张带有水平线和垂直线的图像。其实这张图片是BBC网站转换成横竖线的。我的问题是我希望能够找到图像中的所有矩形。我想编写一个计算机程序来查找所有矩形。有谁知道如何做到这一点或建议如何开始?作为一个人,这个任务很容易找到视觉矩形,但我不知道如何将它描述为一个程序。

图片是这里的 BBC 网站http://www.bbc.co.uk/


对此更新,我编写了将 BBC 网站图像转换为水平和垂直线的代码,问题是这些线在拐角处不完全相交,有时它们不完全形成一个矩形。谢谢!

0 投票
9 回答
60929 浏览

python - 图像比较算法

我正在尝试将图像相互比较以了解它们是否不同。首先,我尝试对 RGB 值进行 Pearson 相关,除非图片稍微偏移,否则效果也很好。因此,如果一个有 100% 相同的图像但有一个有点移动,我会得到一个不好的相关值。

对更好的算法有什么建议吗?

顺便说一句,我说的是比较数千张图片......

编辑:这是我的图片示例(显微):

IM1:

在此处输入图像描述

IM2:

在此处输入图像描述

IM3:

在此处输入图像描述

im1 和 im2 是相同的,但有点偏移/剪切,im3 应该被认为是完全不同的......

编辑: 彼得汉森的建议解决了问题!效果很好!感谢所有答案!一些结果可以在这里找到 http://labtools.ipk-gatersleben.de/image%20comparison/image%20comparision.pdf

0 投票
1 回答
966 浏览

computer-vision - Emgu CV SURFFeature 错误

我下载了 Emgu CV(计算机视觉)库,我只是在看一下 SURFFeature 示例。

我正在尝试将两个新图像放入比较,而不是给出的示例,但是在这一行中,我收到新图像的错误:

我得到这个例外:

OpenCV:数组应该是 CvMat 或 IplImage

我不明白为什么它不接受我的形象,有什么想法吗?

托尼