【图像处理】Hough变换人眼虹膜定位【含Matlab源码 387期】

news2024/11/26 0:27:14

⛄一、数字图像处理简介

图像处理基础教程链接
1 【基础教程】基于matlab图像处理(表示方法+数据结构+基本格式+类型转换+读取+点运算+代数运算)【含Matlab源码 834期】
2 【基础教程】基于matlab图像处理(读写+显示+运算+转换+变换+增强+滤波+分析+统计)【含Matlab源码 144期】
3 【基础教程】基于matlab图像增强+复原+分割【含Matlab源码 056期】

⛄二、部分源代码

clear all;
close all;
i=imread(‘yanjing.bmp’);
imshow(i);
iii=i;
%把输入图象二值化,用canny算法返回阈值
sigma=3.0;
thresh=[0.03,0.09];
bw_1=i>70;
edgerm=edge(bw_1,‘canny’,thresh,sigma);
figure,imshow(edgerm);
t1=280;
s=0;
while t1>10
t2=1;
while t2<310
%查找第一个边缘点
if edgerm(t1,t2)1
u1=t1;
u2=t2;
s=1;
end
if s
1
break;
end
t2=t2+1;
end
t1=t1-1;
end
po=1;
sum2=0;
%第一个边缘点
o1=u1;
o2=u2;
hang=zeros(0,0);
lie=zeros(0,0);
while (po1)
while (po
1)
sum1=0;
for t3=1:5
for t4=1:5
% 第一个边缘点的左上方5个像素内有边缘点
if edgerm(u1-t3+1,u2+t4-1)1
% 第一个边缘点周围的边缘点个数
sum1=sum1+1;
sum2=sum2+1;
% 第sum1个边缘点位置x
hang(sum1,1)=u1-t3+1;
% 第sum1个边缘点位置y
hang(sum1,2)=u2+t4-1;
lie(sum2,1)=u1-t3+1;
lie(sum2,2)=u2+t4-1;
end
end
end
% 边缘点只有一个
if sum1
1
po=0;
% 没有边缘点
elseif sum10
po=0;
else
% 以最后的边缘点为起点,进行下一轮搜索
u1=hang(sum1,1);
u2=hang(sum1,2);
po=1;
end
end
% 边缘点个数小于30个
if sum2<30
u1=o1;
u2=o2+1;
po=1;
sum2=0;
% 横坐标不变,改变纵坐标值得到边缘点
while (edgerm(u1,u2)~=1)
while (edgerm(u1,u2)~=1)&(u2<310)
% 不是边缘点,纵坐标加1
u2=u2+1;
end
% 没有得到边缘点
if u2
310
u1=u1-1;
u2=1;
end
end
% x不变,改变y重新得到边缘点
o1=u1;
o2=u2;
else
break;
end
end
% 边缘点个数
a1=size(lie);
w1=lie(a1(1),1);
w2=lie(a1(1),2);
po1=1;
while (po1==1)
sum1=0;
for t1=1:3
for t2=1:5
% 边缘点向左方3个像素,上方5个像素
if edgerm(w1-t1+1,w2-t2+1)1
sum1=sum1+1;
sum2=sum2+1;
lie(sum2,1)=w1-t1+1;
lie(sum2,2)=w2-t2+1;
hang(sum1,1)=w1-t1+1;
hang(sum1,2)=w2-t2+1;
end
end
end
% 边缘点只有一个
if sum1
1
po1=0;
else
po1=1;
w1=hang(sum1,1);
w2=hang(sum1,2);
end
end

po2=1;
while (po2==1)
sum1=0;
for t1=1:7
for t2=1:15
if edgerm(w1+t1-1,w2-t2+1)1
sum1=sum1+1;
sum2=sum2+1;
lie(sum2,1)=w1+t1-1;
lie(sum2,2)=w2-t2+1;
hang(sum1,1)=w1+t1-1;
hang(sum1,2)=w2-t2+1;
end
end
end
if sum1
1
po2=0;
else
po2=1;
w1=hang(sum1,1);
w2=hang(sum1,2);
end
end
%不止一个边缘点
while (w1=lie(1,1))&(w2=lie(1,2))
sum1=0;
for t1=1:5
for t2=1:5
%向右向上5个像素搜索边缘点
if edgerm(w1+t1-1,w2+t2-1)==1
sum1=sum1+1;
sum2=sum2+1;
lie(sum2,1)=w1+t1-1;
lie(sum2,2)=w2+t2-1;
hang(sum1,1)=w1+t1-1;
hang(sum1,2)=w2+t2-1;
end
end
end
w1=hang(sum1,1);
w2=hang(sum1,2);
end
for t1=1:280
for t2=1:320
% 初始化Hough矩阵
e(t1,t2)=0;
end
end
% 边缘点个数
for t1=1:size(lie)
% 将是边缘点的位置设为1
e(lie(t1,1),lie(t1,2))=1;
end
%确定瞳孔的边缘的上下限
minl=320;
maxl=1;
minh=280;
maxh=1;
for t1=1:280
for t2=1:320
if (e(t1,t2)==1)&(t2<minl)
minl=t2;
end
if (e(t1,t2)==1)&(t2>maxl)
maxl=t2;
end
if (e(t1,t2)==1)&(t1<minh)
minh=t1;
end
if (e(t1,t2)==1)&(t1>maxh)
maxh=t1;
end
end
end
% 采用二值化的方法求得瞳孔的面积sum3
sum3=0;
t1=minh;
while t1<=maxh
t2=minl;
while t2<=maxl
if (bw_1(t1,t2)==0)
sum3=sum3+1;
end
t2=t2+1;
end
t1=t1+1;
end
% 得到瞳孔r1半径向上取整,sum3表示瞳孔的面积
r1=ceil(sqrt(sum3/pi));
% 向下取整 估算出瞳孔圆心x坐标
c(1,1)=floor((maxh-minh)/2+minh);
c(1,2)=ceil((maxl-minl)/2+minl);
r2=ceil(r1/3);
r3=2r2;
for t1=1:ceil(r1/6)2
for t2=1:ceil(r1/6)2
pu(t1,t2)=0;
end
end
%pu中存放有相同圆心点的个数,以下找一个最大的pu认为是瞳孔的圆心
t1=minh;
while t1<=maxh
t2=minl;
while t2<=maxl
if (e(t1,t2)==1)
for a=1:2
ceil(r1/6)
for b=1:2
ceil(r1/6)
if (((t1-(c(1,1)+ceil(r1/6)-a))2+(t2-(c(1,2)-ceil(r1/6)+b))2-r12)>-10)&(((t1-(c(1,1)+ceil(r1/6)-a))2+(t2-(c(1,2)-ceil(r1/6)+b))2-r12)<10)
% 以a,b为圆心的圆累加个数
pu(a,b)=pu(a,b)+1;
end
end
end
end
t2=t2+1;
end
t1=t1+1;
end
ma=pu(1,1);
% 选取同心圆最多的圆心
for a=1:2
ceil(r1/6)
for b=1:2*ceil(r1/6)
if (ma<pu(a,b))
ma=pu(a,b);
row=a;
col=b;
end
end
end
% 圆心坐标
c(1,1)=c(1,1)+ceil(r1/6)-row;
c(1,2)=c(1,2)-ceil(r1/6)+col;
j=double(i);
for t1=1:280
for t2=1:320
%虹膜内边缘设为白色
if ((t1-c(1,1))2+(t2-c(1,2))2-r12<80)&((t1-c(1,1))2+(t2-c(1,2))2-r12>-80)
i(t1,t2)=255;
end
end
end

row1=c(1,1);
col1=c(1,2);
%以上找到圆心(row1,col1),半径r1;
ha=row1;
li=col1;
sh1=1;
zong=0;
while sh1<=3
sh2=1;
while sh2<=3
zong=zong+1;
% 圆心向左、不变、向右移动2
row1=ha-4+sh12;
col1=li-4+sh2
2;
j1=double(i);
u=zeros(0,0);
for t1=1:row1
t2=col1;
while t2<=310
%第一像限的图像对角变换
u(row1-t1+1,t2-col1+1)=j1(t1,t2);
t2=t2+1;
end
end
u1=double(u);
%第一像限图像的行列数
yy=size(u);
%瞳孔半径r1
rr=r1+40;
l1=r1+40;
l2=1;
ll1=0;
n1=l1;
sq1=0;
%yy(1,2)表示第一像限的矩阵列数,yy(1,1)行数
while (l2<l1)&(l1<yy(1,2))&(l2<yy(1,1))
pk=(l1-1/2)2+(l2+1)2-rr^2;
%半径在rr+40范围内
if pk<0
%沿着l1方向灰度值累加
sq1=sq1+u1(l2+1,l1);
%记录sql的个数
ll1=ll1+1;
l1=l1;
l2=l2+1;
else sq1=sq1+u1(l2+1,l1-1);
ll1=ll1+1;
l1=l1-1;
l2=l2+1;
end
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]朱琼瑶.结合人眼特征和几何方法的虹膜定位方法[J].计算机工程与应用. 2013,49(08)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕设Python+Vue学生宿舍管理系统 (程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【遥感科学】第二章 电磁辐射和地物光谱特性

第二章 电磁辐射与地物光谱特征 一、电磁波谱与电磁辐射 1.1 磁波谱 我们说波谱波谱&#xff0c;那么什么是波&#xff0c;什么是谱呢&#xff1f;注意看&#xff0c;这个男人叫小帅 振动的传播称为波&#xff0c;那电磁波又是啥&#xff1f;啥叫电磁振动&#xff1f; 当电…

docker常用命令记录

1.docker加载镜像 sudo docker load --input rknn-toolkit-1.7.3-docker.tar.gz 2.查看镜像 sudo docker images 3.进入docker容器 sudo docker run -t -i --privileged rknn-toolkit:1.7.3 /bin/bash 4.退出容器 eixt 5.查看所有容器 sudo docker ps -a 6.开启容…

截止12.19--之前的再说,就先说一下今天的事

12/19 错怪colab 软链接实现永久 试一下我在ssh传上文件以后&#xff0c;1080卡还能不能看见了&#xff1a;能&#xff0c;得传到data里。可以在ssh上加上 ln -s 找不到GPU是镜像问题 出现找不到显卡的问题 需要换个镜像 所以速速自学docker吧&#xff0c;太被动了 加号做连…

基于AD Event日志识别黄金票据攻击

01、简介黄金票据(Golden Ticket)是基于Kerberos认证的一种攻击方式&#xff0c;常用来做域控权限维持。当攻击者获取到域内krbtgt帐户的SID和HASH&#xff0c;就可以随意伪造域内管理员用户&#xff0c;再加上域帐户krbtgt的密码基本不会更改&#xff0c;即使域管修改了密码&a…

汇编循环指令(汇编统计正负数汇编语言1到100的求和汇编求一组数最大值)

目录 LOOP指令&#xff08;重点掌握&#xff09; LOOPZ/LOOPE指令 LOOPNZ/LOOPNE指令 例题 一&#xff1a;读程序写结果 二&#xff1a;阅读程序段回答问题 三&#xff1a;读程序写结果 四:求100内的数累和 五&#xff1a;统计正数负数零 六&#xff1a;求字节单元中…

03---后端框架搭建

1、创建项目 打开Ider&#xff0c;创建springboot项目。创建页面勾选需要的依赖&#xff0c;自定义包名、存储位置等&#xff0c;然后创建项目pom依赖如下 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>…

jenkins开发相关

1、jenkins 处理系统配置中publish over ssh中的密码 主机信息数据存储在&#xff5e;/.jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml文件中。 java后端如果要加密可以通过以下方法实现。 String Password "xxxx" String passwd "pr…

中科方德服务器操作系统虚拟机安装过程记录

没啥技术含量&#xff0c;就是过程中踩了一些坑&#xff0c;我做个记录&#xff0c;方便后续查阅以及其他人参考什么的。 1、新建虚拟机向导---选择典型配置 2、选择&#xff1a;稍后安装客户机操作系统 3、选择客户机操作 系统以及版本&#xff0c;中科方德服务器系统为在安装…

【LeetCode每日一题】——338.比特位计数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 动态规划 二【题目难度】 简单 三【题目编号】 338.比特位计数 四【题目描述…

IPv4 ACL访问列表简介、ACL的3种主要分类介绍与配置、以大白话介绍ACL通配符、ACL动作、定义方向、Rule序号。

3.0.0 IPv4 ACL列表&#xff08;简介、ACL分类、ACL配置、通配符&#xff09; ACL访问控制列表简介ACL的分类(华为设备)1、基本/标准ACL基本ACL编号&#xff1a;2000~2999基本ACL的作用&#xff1a;基于数据流的源地址进行匹配2、高级ACL高级ACL编号&#xff1a;3000~3999高级A…

代码随想录刷题记录day46 最长递增子序列+最长连续递增序列+最长重复子数组

代码随想录刷题记录day46 最长递增子序列最长连续递增序列最长重复子数组 300. 最长递增子序列 思想 1.dp数组的定义 dp[i]表示[0,i]区间的最长递增子序列 2.递推公式 如果num[i]>num[j];dp[i]dp[j]1 其中j从0到i-1遍历 3.初始化 所有的都初始化为1 4.遍历顺序 从…

一文读懂于Zebec生态中的潜在收益方式

随着加密市场逐渐陷入低谷&#xff0c;曾经火热的NFT、GameFi等赛道都陷入了沉寂。投资者目前很难在加密市场中获得可观的收益&#xff0c;而在整体加密市场发展局势不明朗的情况下&#xff0c;行业目前缺乏发展动力。 目前&#xff0c;以流支付为主要定位的Zebec生态&#xff…

docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端分离版为例

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_前后端分离的项目怎么运行 上面在搭建起来前后端分离版的项目后。 如果想通过Dockerfile的方式部署项目可以参考如下。…

沃尔玛账号被冻结后如何进行申诉?

目前申请一个沃尔玛店铺并不容易&#xff0c;但仍有不少卖家因为操作不当导致账号被冻结封禁&#xff0c;这对于国内的卖家来说是巨大的损失。那么要如何避免账号被冻结&#xff0c;冻结后又该如何申诉呢&#xff1f;如何避免账号被冻结&#xff1f; 一、保证店铺表现符合平台标…

纵向分栏

【问题】 I would like to create a table that should be vertical orientation, that means each resultset row should filled from left to right.. Can i achieve this without using crosstab? 【回答】 横向分栏的功能可以先用集算器把数据准备好作为普通报表实现&…

【Python机器学习】多项式回归、K近邻KNN回归的讲解及实战(图文解释 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 多项式回归 非线性回归是用一条曲线或者曲面去逼近原始样本在空间中的分布&#xff0c;它“贴近”原始分布的能力一般较线性回归更强。 多项式是由称为不定元的变量和称为系数的常数通过有限次加减法、乘法以及自然数幂次的乘方运…

手把收教你Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流

我们在上面学习了&#xff1a; 手把手教你Spring Cloud Alibaba教程:nacos安装 手把手教你Spring Cloud Alibaba教程:使用nacos实现服务注册与发现 手把手教你Spring Cloud Alibaba教程:使用Nacos作为配置中心 手把手教你Spring Cloud Alibaba教程:使用Nacos作为配置中心 …

最小二乘法拟合直线、曲线

参考文章&#xff1a;马同学马同学提供线性代数,微积分,概率论与数理统计,机器学习等知识讲解https://www.matongxue.com/madocs/818/ C最小二乘法拟合-&#xff08;线性拟合和多项式拟合&#xff09;_尘中远的博客-CSDN博客_namespace gsl 最小二乘法—多项式拟合非线性函数…

LeetCode_BFS_DFS_简单_1971.寻找图中是否存在路径

目录1.题目2.思路3.代码实现&#xff08;Java&#xff09;1.题目 有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 u…