使用 OpenCV 进行实时虹膜检测 - 阈值与 HoughTransform
Live Iris Detection with OpenCV - Thresholding vs HoughTransform
我正在尝试创建一个能够检测和跟踪实时视频流中眼睛虹膜的应用程序。为此,我想使用 Python
和 OpenCV
。在互联网上对此进行研究时,在我看来,有多种可能的方法可以做到这一点。
第一种方式:
运行一个Canny Filter
得到边,然后用HoughCircle
求出Iris
.
第二种方式:
使用Otsus-Algorithm
找到完美的阈值,然后使用cv2.findContours()
找到Iris
。
因为我想在 Raspberry Pi
(4B) 上 运行,我的问题是这些方法中哪种更好,尤其是在可靠性和性能方面?
我会选择第三条路,从一个完善的面部标志检测方法(例如 dlib)开始。您可以使用预先训练的模型来获得对眼睛位置的可靠估计。
这是面部标志检测器的示例输出:
然后你从那里继续寻找虹膜,使用边缘检测、Hough 或其他方法。
可能您可以简单地使用启发式方法,因为您可以假设虹膜始终位于每只眼睛周围关键点的质心。
在类似设置(甚至对于 Raspberry)中也有一些很好的在线教程,例如来自 PyImageSearch 的 this one or this other one。
我正在尝试创建一个能够检测和跟踪实时视频流中眼睛虹膜的应用程序。为此,我想使用 Python
和 OpenCV
。在互联网上对此进行研究时,在我看来,有多种可能的方法可以做到这一点。
第一种方式:
运行一个Canny Filter
得到边,然后用HoughCircle
求出Iris
.
第二种方式:
使用Otsus-Algorithm
找到完美的阈值,然后使用cv2.findContours()
找到Iris
。
因为我想在 Raspberry Pi
(4B) 上 运行,我的问题是这些方法中哪种更好,尤其是在可靠性和性能方面?
我会选择第三条路,从一个完善的面部标志检测方法(例如 dlib)开始。您可以使用预先训练的模型来获得对眼睛位置的可靠估计。
这是面部标志检测器的示例输出:
然后你从那里继续寻找虹膜,使用边缘检测、Hough 或其他方法。
可能您可以简单地使用启发式方法,因为您可以假设虹膜始终位于每只眼睛周围关键点的质心。
在类似设置(甚至对于 Raspberry)中也有一些很好的在线教程,例如来自 PyImageSearch 的 this one or this other one。