我正在开发一个 MATLAB 项目,该项目使用户能够进行面部检测并将其模糊。
使用的内置函数:
vision.CascadeObjectDetector
这个功能的问题:它只检测正面。
我尝试的方法:在while循环中使用imrotate函数在度数小于360时旋转图像。所以我认为它会起作用。我每次都将旋转增加 23。
缺点:它不起作用,它会改变图像的空间分辨率。
我正在开发一个 MATLAB 项目,该项目使用户能够进行面部检测并将其模糊。
使用的内置函数:
vision.CascadeObjectDetector
这个功能的问题:它只检测正面。
我尝试的方法:在while循环中使用imrotate函数在度数小于360时旋转图像。所以我认为它会起作用。我每次都将旋转增加 23。
缺点:它不起作用,它会改变图像的空间分辨率。
我过去做过一些实验,我了解到vision.CascadeObjectDetector
使用默认的正面模型可以容忍大约 15 度的平面内旋转。所以我建议一次将图像旋转 15 度甚至 10 度,而不是 23 度。
在这种情况下,训练自己的检测器的问题在于底层特征(Haar、LBP 和 HOG)对于平面内旋转不是不变的。你必须训练多个检测器,每个方向一个,每 15 度左右。
另外,您是在静止图像还是视频中检测人脸?如果您正在观看视频,则可能需要尝试跟踪面部。这样,即使您因为某人的头部倾斜而错过了一张脸,您以后也有机会检测到它。一旦你检测到一张脸,即使它倾斜,你也可以跟踪它。看看这个例子。