OpenCV提取轮廓的方法获取瞳孔区域及中心

来源:互联网 发布:ubuntu使用教程pdf 编辑:程序博客网 时间:2024/04/29 06:35

OpenCV获取瞳孔区域及中心

1、目标:获取人眼感兴趣之后,利用图像处理知识,提取图像轮廓,根据目标物体具体的宽高比,面积等信息筛选轮廓,生成轮廓凸包,获得目标物体中心。

                                

1人眼区域图片                            2二值化后的瞳孔区域mat_threshold(合适的阈值需不断迭代获取,过程复杂)

 

2、实现过程:

提取轮廓的通用方法比较成熟,OpenCV也提供相对成熟的代码可供使用。因此,简要介绍过程:

 

cv::findContours(mat_threshold, contours,hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));

//提取图像轮廓。只检测外轮廓;压缩各元素,只保留该方向的终点坐标。

{

//主要函数

float tmparea =(float)cv::contourArea(contours[j]); //计算轮廓的面积

cv::RotatedRect rect =cv::minAreaRect(contours[j]);//求包含点集最小面积的矩形

 

cv::Rect aRect =cv::boundingRect(contours[j]);//计算点集的最外面(up-right)矩形边界

 

cv::vector<cv::vector<cv::Point>>hull(contours.size());

convexHull(cv::Mat(contours[j]), hull[j],false, true); //能得到轮廓的凸包。

//通过以上获取的信息,根据目标物体具体的宽高比,面积等信息筛选轮廓。具体问题,具体分析。

}

cv::drawContours(mat_blob, hull, 0,RGB(255, 0, 0), CV_FILLED);    //实心画出图片

3瞳孔凸包区域图像

 

根据瞳孔几何关系、最小二乘方式等,不断收敛到瞳孔中心,输出并标记瞳孔中心。与标定的瞳孔中心的差距小,能达到开发要求。

4瞳孔中心(红色十字叉表示)


光斑中心检测过程简单很多。大致思路一致。

1 0
原创粉丝点击