问题标签 [lbph-algorithm]

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 投票
1 回答
249 浏览

image-processing - 人脸识别算法

我正在尝试使用 MSRA-CFW 数据集进行人脸识别。我为此数据集尝试了两种算法:

特征脸和
FisherFaces

正如预期的那样,特征脸表现不佳(因为它对光线和头部方向的变化很敏感)。然而,即使是 FisherFaces 也没有给出令人满意的结果。

我应该为这个数据集使用哪种算法?或者甚至可能适用于任何其他数据集。卷积神经网络会在这种情况下工作吗?该数据集还提供了 LBP 功能。这些会比卷积神经网络更好吗?

谢谢

0 投票
1 回答
496 浏览

c++ - 使用 LBP 训练 Haar 级联的问题

我正在尝试使用 haar_cascade 训练一些分支徽标。我所做的是,我拍摄了 2500 张 500 x 500 的平方图片来填充opencv_createsamples. 然后我将它们生成为:

opencv_createsamples -info 'logo.info' -vec '../logo.vec' -bg '../Negatives/bg.txt' -w 24 -h 24 -num 2500

在我的中,logo.info我有与每张图片的相对路径相对应的线条,其1 0 0 500 500含义是“在 (0,0) 和 (500, 500) 之间有一个对象”

然后我将级联训练为:

opencv_traincascade -data 'cascade/' -vec '../logo.vec' -bg '../Negatives/bg.txt' -numPos 2500 -numNeg 3019 -numStages 25 -featureType LBP -w 24 -h 24

使用这些参数:

参数:

cascadeDirName:级联/

vecFileName: ../logo.vec

bgFileName: ../Negatives/bg.txt

数量:2500

numNeg: 3019

阶段数:25

precalcValBufSize[Mb]:256

precalcIdxBufSize[Mb]:256

舞台类型:BOOST

特征类型:LBP

样本宽度:24

样品高度:24

升压类型:GAB

最低命中率:0.995

最大假警报率:0.5

重量修剪率:0.95

最大深度:1

最大弱计数:100

我有两种错误:

  1. OpenCV 错误:在 cvPreprocessIndexArray,文件 /tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp,第 432 行终止调用中的参数值之一超出范围(未选择组件/输入变量!)抛出'cv :: Exception'实例后what():/tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp:432:错误:(-211)未选择组件/输入变量!在函数 cvPreprocessIndexArray

在此处输入图像描述

...

在此处输入图像描述

当您在图像数量-num参数之间没有显着差异时,通常会发生此错误。所以,让我们尽量少给100!

好吧,当我将参数调整为不从数组中输出时,我得到与图像相同类型的输出,但出现此错误:

OpenCV 错误:写入中的断言失败(tempNode->left),文件 /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp,第 628 行终止在抛出“cv::Exception”实例后调用什么(): /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp:628: 错误: (-215) tempNode->left in function write

中止

我试过了:

  • 更改图像的命运尺寸(24x24、36x36...)
  • 更改-mode参数。
  • 尝试放置 #positiveSamples < #negativeSamples 和 #positiveSamples > #negativeSamples

我必须做的是用 LBP(不是 HAAR)进行强制性培训。有人有任何线索吗?

先感谢您。

0 投票
1 回答
1313 浏览

c++ - 与已知图像匹配的局部二进制模式

我目前正在寻找一种使用 OpenCV 和 C++ 实现本地二进制模式的方法。

目前我发现了这个:https ://github.com/bytefish/opencv/tree/master/lbp

但是,我需要将 2 个图像或 LBP 直方图相互比较并给出一些相似度指数。

这是我修改后的代码:

但是我不认为它工作正常。我没有得到准确的直方图。所以我无法比较。 截屏

请帮忙。

0 投票
1 回答
909 浏览

javascript - 带有 LBP 级联的 js-objectdetect

我目前正在开发一个使用js-objectdetect库进行对象检测的 webapp 。因此,我使用python 脚本将opencv HAAR-cascades转换为所需的 js-objectdetect 格式。

我的问题是,是否也可以将opencv LBP-cascades转换为 js-objectdetect 格式。我需要这个,因为我已经使用了一个 opencv 应用程序,并且我需要使用相同的 LBP 级联。

我在互联网上使用 LBP-cascades 进行 Javascript 对象/人脸检测时找不到任何内容。有人知道将这些级联与 js-objectdetect 或其他一些库一起使用的方法吗?

提前致谢!

0 投票
1 回答
250 浏览

matlab - Matlab 级联目标检测器(使用 LBP)对平面内旋转是否不变?

我读过 LBP 可用于旋转不变特征检测,例如这里。这对我来说很直观,因为 LBP 正在有效地评估局部图像纹理。但是,我在其他地方读到不能以这种方式使用 LBP。

这里的一个 Matlab 教程提到检测器对“平面外旋转”很敏感,但没有提到平面内旋转。

我的问题:级联目标检测器的 Matlab 实现(使用 LBP 时)对平面内旋转是否不变?

谢谢!

0 投票
0 回答
445 浏览

android - 在android中使用OpenCV计算LBP直方图

我正在使用适用于 android 的 OpenCV SDK 在 android 中进行人脸识别。我使用了 OpenCV android SDK 附带的人脸检测示例代码。现在我想转向人脸识别。我想计算检测到的人脸的 LBP 直方图并将其存储在数据库中,稍后将使用卡方与其他直方图进行匹配。OpenCV 中的人脸识别器类具有未公开的训练和预测方法。train 方法是否计算图像的直方图?如何使用人脸识别器类计算 LBP 直方图?

0 投票
1 回答
751 浏览

c++ - 比较 2 个 LBP(OpenCV C++)

我正在使用来自bytefish.de的代码 来生成我的 LBP。如果我生成 2 个 LBP 及其相应的直方图,那么比较它们的最佳方法是什么?

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

基本上它给了我一个关于这两个图像有多相似的量化数字。我的问题是,我该如何改善这个结果?根据 2 个 LBP 的相似程度,有什么更好的方法来获得可量化的数字?

谢谢。

0 投票
0 回答
235 浏览

opencv - 我们可以在opencv中使用LBPH来实现人脸验证/认证系统吗?

最近,我尝试使用 FaceRecognizer.LBPH 作为人脸识别器来实现人脸验证/身份验证系统,但它只能很好地识别,不适用于一对一匹配。具体来说,我的训练数据集有 4 人,我的测试数据集有 6 人(2 人用作冒名顶替者)。当我使用 2 个冒名顶替者的图像时,系统出错了。我的代码如下,参考此链接

当我用 2 个冒名顶替者进行测试时,我希望结果为 -1。任何建议都值得赞赏。

0 投票
1 回答
1451 浏览

java - OpenCV C++ calcHist 到 Java

我正在尝试让一些 c++ 代码在我的 Android 设备上运行;但是,我正在使用的类型遇到一个小问题Mat。我试图转换的代码如下(第二个函数调用第一个):

现在我的 java 代码将这 2 个函数合并为 1,因为我的类型始终相同:CV_32SC1。

我收到一个错误OpenCV Error: Unsupported format or combination of formats () in void cv::calcHist,我从另一个问题中发现这是因为我的src矩阵类型是CV_32SC1. 所以我的问题是我不知道如何将这些行从第二个 c++ 函数正确转换为 Java:

我正试图弄清楚如何专门做类似于Mat_<float>(src)Java 的事情。

供参考:这里是我现在正在尝试做的整个代码的链接

0 投票
0 回答
398 浏览

c++ - 来自 Mat 的 Opencv 直方图数据

所以我试图从我在 OpencCV 中生成的直方图中获取实际数据。我正在使用位于此处的代码,如下所示。但是,我不完全知道如何从中获取数据Mat。我看到了这个帖子,但是这个帖子hist.get(i, 0)用来获取直方图数据。但是,我的直方图Mat只包含 1 行......和 ​​16384 列。相关代码如下。

result变成Mat大小为 1 x 16384 的 a 并且值在Mat... 那么我将如何获得正确的直方图数据?