【MATLAB图像处理实用案例详解(11)】——基于Hough变换的人眼虹膜定位方法

news/2024/7/21 7:34:13 标签: matlab, 图像处理, 机器学习

目录

    • 一、Hough变换基本原理
    • 二、算法流程
      • 2.1 分离瞳孔并估算虹膜内半径
      • 2.2 Hough变换定位内外虹膜
    • 三、效果演示

一、Hough变换基本原理

Hough 变换作为一种参数空间变换算法,直线和其他参数化形状检测的重要工具。Hough 变换具有较强的稳定性和鲁棒性,可以在一定程度上避免噪声的影响,后续研究将极坐标引入Hough 变换,使这种方法可以更加有效地用于直线检测和其他任意几何形状的检测。Ballard 提出了非解析任意形状的R表法,将Hough 变换推广到对任意方向和范围的非解析任意形状的识别,这种方法被称为广义Hough 变换,论文链接:“Generalizing the Hough transform to detect arbitrary shapes”。
在这里插入图片描述
直线 y = m x + b y=mx+b y=mx+b可用极坐标表示为: r = x c o s ( θ ) + y s i n ( θ ) r=xcos (θ) + ysin (θ) r=xcos(θ)+ysin(θ)
在这里插入图片描述
( r , θ ) (r, θ) (r,θ) 定义了一个从原点到该直线最近点的向量。 x 、y 平面上的任意一条直线的Hough 变换就是寻找r 、 θ 平面上的一个对应点的过程。

多级Hough 变换首先用较大的θs和θr以求出倾斜角度的大致范围,然后用较小的θs和θr对倾斜角度进行细化处理。

关于霍夫变换原理的详细解释可以参考文章:https://blog.csdn.net/didi_ya/article/details/111149724。

二、算法流程

虹膜(包括纹理的部分)是内外两个近似圆形边界之间的部分,虹膜的内侧与瞳孔相邻,外侧与眼白相邻,这两个圆不是完全同心的,需要分别对内外两个边界进行处理。本文主要研究基于Hough变换的虹膜定位方法

2.1 分离瞳孔并估算虹膜内半径

仔细观察眼睛的图像可以发现与眼睛的其他部分相比,瞳孔暗得多,所以可以采用二值化的方法分离出瞳孔,根据瞳孔图像的面积估算出虹膜的内半径。二值化方法的关键在于阈值的选取,具体的做法是,先计算出整个图像的灰度直方图,它应该有两个主要的峰值,其中第一个峰值,对应的就是瞳孔区域灰度集中的范围,第二个峰值对应的是虹膜区域的灰度集中范围。显然,提取瞳孔的二值化阈值应该选择在第一个峰值的右侧,下图是二值化后的結果,从图中可以看出,瞳孔也成功的分离了出来。
灰度直方图:
在这里插入图片描述
二值化结果:
在这里插入图片描述

2.2 Hough变换定位内外虹膜

三、效果演示

最终的定位结果如下:
在这里插入图片描述
可以发现已经成功检测到了虹膜的内外边界,并将虹膜进行了提取。ok,以上便是本文的全部内容了。


如果需要源代码,可以参考资源:https://download.csdn.net/download/didi_ya/87695242
,如果遇到任何运行问题,请私信博主,看到后会免费答疑解惑。


http://www.niftyadmin.cn/n/230061.html

相关文章

【ROS实操3服务调用添加乌龟数量】

需求描述 编码实现向turtlesim 发送请求,在乌龟显示节点的窗体指定位置生成一乌龟,这是一个服务请求操作。 实现分析 1.首先,需要启动乌龟显示节点。 2.要通过ROS命令,来获取乌龟生成服务的服务名称以及服务消息类型。 3.编写服…

算法训练Day30:332.重新安排行程 51. N皇后 37. 解数独

文章目录重新安排行程题解[N 皇后](https://leetcode.cn/problems/n-queens/description/)题解解数独题解重新安排行程 CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsHard (47.57%)7650--0 TagsCompanies 给你一份航线列表 tickets ,其…

编写rust测试程序

编写rust测试 rust提供了编写测试的方式来让我们对程序编写测试用例。 测试函数 当使用 Cargo 创建一个 lib 类型的包时,它会为我们自动生成一个测试模块。先来创建一个 lib 类型的 adder 包。创建成功后,在 src/lib.rs 文件中可以发现如下代码: pub…

2、在vscode上创建第一个C++多文件编译工程(即如何添加task.json和launch.json文件到工程里面)

文章目录1、新建一个工程目录2、在vscode打开刚建立的工程目录,建立cpp文件3、设置C/C编译的选项:c_cpp_properties.json(1)鼠标点在.c的源文件内部,按 CtrlShiftp 快捷键,在弹出的界面中选择: [C/C:编配置(UI)]&#…

ROS知识:解决ROS和Anaconda的python冲突

目录 1 问题提出 2 问题分析 3 改进方法 1 问题提出 开始编译一次工作空间, $ catkin_make 它就报错了: CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message): Unable to find either executable empy or Python module…

浙江海發進出口股份有限公司官网上线|LTD五金技术行业案例分享

​浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国际贸易企业。拥有自己的工厂,稳定的资金储备和最好的服务,在商业领域赢得了很高的声誉。地处长江三角洲交通经济中心嘉兴市。 浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国…

充电桩检测设备TK4860E交流充电桩检定装置

产品特点 充电桩检测设备内置5.28 kW单相交流负载,无需携带额外负载进行测试。 宽动态范围测量技术,避免充电桩输出波动引起的测量风险。 ms级电能刷新速度,减少充电桩与标准仪器在非同步累积电能过程中引入的误差,提高累积电能…

potPlay——记忆播放位置、各种快捷键

potPlay——记忆播放位置、各种快捷键potPlay——各种快捷键简洁版完整版快捷键列表potPlay——记忆播放位置potPlay——各种快捷键 简洁版 Q 复位 亮度,对比度,色度复位键 W/E 调暗/调亮 R/T 对比度 Y/U 饱和度 I/O 色彩度 D 上一帧 F 下一帧 M 静音 …