PS=imresize(PS,[300,300],'bilinear');%归一化大小

PS=rgb2gray(PS);

[m,n]=size(PS);                       %测量图像尺寸参数

GP=zeros(1,256);                     %预创建存放灰度出现概率的向量

for k=0:255

GP(k+1)=length(find(PS==k))/(m*n);  %计算每级灰度出现的概率,将其存入GP中相应位置

end

%直方图均衡化

S1=zeros(1,256);

for i=1:256

for j=1:i

S1(i)=GP(j)+S1(i);              %计算Sk

end

end

S2=round((S1*256)+0.5);               %将Sk归到相近级的灰度

%图像均衡化

f=PS;

for i=0:255

f(find(PS==i))=S2(i+1);         %将各个像素归一化后的灰度值赋给这个像素

end

figure,imshow(f);

%边缘检测

f=edge(f,'canny',0.25);

imshow(f);

%二值法锐化图像

f=double(f);

[x,y]=gradient(f);

g=sqrt(x.*x+y.*y);

i=find(g>=0.5);

g(i)=256;

j=find(g<0.5);

g(j)=0;

imshow(g);

title('二值法锐化图像');

%中值滤波

g=medfilt2(g);

g=dither(g);

imshow(g);

%提取面积,矩形度,圆形度,拉伸度特征

%g=im2bw(g);

[x,y]=size(g);

BW = bwperim(g,8); % 检测边缘跟踪,用于计算周长

%检测垂直方向连读的周长像素点%

P1=0;

P2=0;

Ny=0; % 记录垂直方向连续周长像素点的个数

for i=1:x

for j=1:y

if (BW(i,j)>0)

P2=j;

if ((P2-P1)==1) % 判断是否为垂直方向连续的周长像素点

Ny=Ny+1;

end

P1=P2;

end

end

end

%检测水平方向连读的周长像素点

P1=0;

P2=0;

Nx=0; % 记录水平方向连续周长像素点的个数

for j=1:y

for i=1:x

if (BW(i,j)>0)

P2=i;

if ((P2-P1)==1) % 判断是否为水平方向连续的周长像素点

Nx=Nx+1;

end

P1=P2;

end

end

end

SN=sum(sum(BW)); % 计算周长像素点的总数

Nd=SN-Nx-Ny; % 计算奇数码的链码数目

H=max(sum(g)); % 计算目标的高度

W=max(sum(g')); % 图象g经矩阵转置后,计算宽度

L=sqrt(2)*Nd+Nx+Ny; % 计算周长

%====形态特征值计算===%

A=bwarea(g); % 计算目标的面积

R=A/(H*W); % 计算矩形度

E=min(H,W)/max(H,W); % 计算伸长度

temp1=[A,R,E];

%提取不变矩特征

[M,N]=size(g);

[x,y]=meshgrid(1:N,1:M);

x=x(:);

y=y(:);

g=g(:);

m.m00=sum(g);

if(m.m00==0)

m.m00=eps;

end

m.m10=sum(x.*g);

m.m01=sum(y.*g);

m.m11=sum(x.*y.*g);

m.m20=sum(x.^2.*g);

m.m02=sum(y.^2.*g);

m.m30=sum(x.^3.*g);

m.m03=sum(y.^3.*g);

m.m12=sum(x.*y.^2.*g);

m.m21=sum(x.^2.*y.*g);

xbar=m.m10/m.m00;

ybar=m.m01/m.m00;

e.eta11=(m.m11-ybar*m.m10)/m.m00^2;

e.eta20=(m.m20-xbar*m.m10)/m.m00^2;

e.eta02=(m.m02-ybar*m.m01)/m.m00^2;

e.eta30=(m.m30-3*xbar*m.m20+2*xbar^2*m.m10)/m.m00^2.5;

e.eta03=(m.m03-3*ybar*m.m02+2*ybar^2*m.m01)/m.m00^2.5;

e.eta21=(m.m21-2*xbar*m.m11-ybar*m.m20+2*xbar^2*m.m01)/m.m00^2.5;

e.eta12=(m.m12-2*ybar*m.m11-xbar*m.m02+2*ybar^2*m.m10)/m.m00^2.5;

phi(1)=e.eta20+e.eta02;

phi(2)=(e.eta20-e.eta02)^2+4*e.eta11^2;

phi(3)=(e.eta30-3*e.eta12)^2+(3*e.eta21-e.eta03)^2;

phi(4)=(e.eta30+e.eta12)^2+(e.eta21+e.eta03)^2;

phi(5)=(e.eta30-3*e.eta12)*(e.eta30+e.eta12)*((e.eta30+e.eta12)^2-3*(e.eta21+e.eta03)^2+(3*e.eta21-e.eta03)*          (e.eta21+e.eta03)*(3*(e.eta30+e.eta12)^2-(e.eta21+e.eta03)^2));

phi(6)=(e.eta20-e.eta02)*((e.eta30+e.eta12)^2-(e.eta21+e.eta03)^2)+4*e.eta11*(e.eta30+e.eta12)*(e.eta21+e.eta03);

phi(7)=(3*e.eta21-e.eta03)*(e.eta30+e.eta12)*((e.eta30+e.eta12)^2-3*(e.eta21+e.eta03)^2)+(3*e.eta12-e.eta30)*          (e.eta21+e.eta03)*(3*(e.eta30+e.eta12)^2-(e.eta21+e.eta03)^2);

temp2 = abs(log(phi));%包含七个特征值

temp=[temp1,temp2]

end

指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文相关推荐

  1. java 调用matlab rank_科学网—Matlab: X is rank deficient - 李旭的博文

    Summary 开贴讨论Rank deficient matrix线性回归之过程.示例数据包含在附件中,x is a matrix whose columns represent random var ...

  2. 修改matlab fig,科学网—fig图片修改技巧 - 张坤的博文

    利用Matlab输图片时最好保存一份fig格式的文件,以备后续投稿时修改图片以满足期刊要求 1.打开Matlab-->打开需要的图片: 2.点击'Edit'-->'Figure prope ...

  3. 计算特征数据matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文

    PS=imresize(PS,[300,300],'bilinear');%归一化大小 PS=rgb2gray(PS); [m,n]=size(PS);                       % ...

  4. arcmap提取dem高程_科学网—DEM高程数据处理方法 - 吴飞的博文

    第一次使用DEM高程数据的朋友常常遇到这个问题,IMG是压缩包么?怎么不能解压呢?为什么我打开之后数据是灰色的呢?明明是平原地区,为什么显示的高程范围却在-32767-32767之间呢?为什么展示图里 ...

  5. matlab做误差棒图,科学网—Matlab误差棒、图例、颜色配比,很有用的代码 - 周锋的博文...

    话不多说,直接贴代码和效果图,会用之人自然会觉得有用. 效果图: 代码: clear; clc; load('ALGO_GPS.neu');  % 加载数据 data = ALGO_GPS; dyr ...

  6. matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...

    (一)运行时间 1.tic和toc组合 计算daotic和toc之间那专段程序之间的属运行时间,它的经典格式为 : tic 函数 toc 复制函数代码,当代码遇到tic时Matlab自动开始计时,运行 ...

  7. matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...

    主修物理海洋学,有变量空间场的画图需求,这是遇到的一些细节问题,部分灵感来自于网络. 本人在画陆地数据加温盐场的图时,需要调用两个colormap,这有很多种解决办法: 普通的2014b以后的版本来讲 ...

  8. matlab 水平投影,科学网—Matlab中如何将投影信息写入到shape文件中 - 朱永超的博文...

    在Matlab中保存shape格式数据时,没有具体的函数可以将投影信息直接写入到shape文件中,不过可以通过另外一种方式实现.看下shape格式的文件不难发现,shape文件的投影信息是一个单独的文 ...

  9. matlab批量生成灰度图像_科学网—matlab彩色图像的批处理转换为灰度、二值和主成分图图像 - 金秀良的博文...

    这段代码主要用来进行图像的批处理转换为灰度.二值和主成分图图像,希望给大家借鉴.其中 RGB to bw可以直接实现,但是效果不好,所以先用RGB to gray,之后再gray to bw.RGB ...

最新文章

  1. 2021 几何图机器学习大盘点 | 几何深度学习先驱 Michael Bronstein长文解读
  2. Android 8.0 Oreo 国内可用测试平台上线
  3. 第02课:深度学习 Python 必备知识点
  4. java 国际化 properties_java Properties 读取文件,国际化
  5. 5.15云原生中间件 Meetup 成都站来啦!
  6. 计算机的发展经历阶段应用领域,计算机的发展阶段
  7. MFC制作员工信息管理系统
  8. easypoi设置黑色边框_迷人的G-SHOCK MTG-B1000XBD,碳纤维与黑色金属的魅力
  9. 调研了2000位CEO,67%的企业都在数字化转型,想做的无非这3点
  10. IDEA怎么开启终端Terminal
  11. .net mvc 获取url中controller和action
  12. HDU4686——Arc of Dream矩阵快速幂
  13. DataSet用法详细 转
  14. ISO 3166-1标准国家代码表
  15. 移动互联网(一)短信和彩信等接口开发封装
  16. Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  17. JavaScript中的“黑话” 1
  18. 华为设备IGMP配置命令
  19. 字长16位的计算机 它表示是,计算机应用基础(第2版)在线作业
  20. 2014年10月30日 1、完成AHC合并部分,调试通过代码

热门文章

  1. 【Java入门】泛型的学习与应用
  2. 阿里云 云服务器ECS(CentOS 8.0 64位) 安装 MySQL 数据库
  3. C 语言实例 - 斐波那契数列
  4. C#设计模式之23-访问者模式
  5. JavaScript高阶函数快速入门
  6. 开源硬件基金是如何运作的_如何在没有任何风险投资资金的情况下通过开源硬件赚钱
  7. shell编程之进阶篇一表达式
  8. 每天进步一点点《ML - 逻辑回归》
  9. 漫步最优化二十四——二分搜索
  10. 漫步数学分析十六——紧集与连集的像