计算特征数据matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
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特征提取代码 - 蒋样明的博文相关推荐
- java 调用matlab rank_科学网—Matlab: X is rank deficient - 李旭的博文
Summary 开贴讨论Rank deficient matrix线性回归之过程.示例数据包含在附件中,x is a matrix whose columns represent random var ...
- 修改matlab fig,科学网—fig图片修改技巧 - 张坤的博文
利用Matlab输图片时最好保存一份fig格式的文件,以备后续投稿时修改图片以满足期刊要求 1.打开Matlab-->打开需要的图片: 2.点击'Edit'-->'Figure prope ...
- 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
PS=imresize(PS,[300,300],'bilinear');%归一化大小 PS=rgb2gray(PS); [m,n]=size(PS); % ...
- matlab对数收益直方图,科学网—MATLAB中绘制数据直方图的新函数histogram2 - 王福昌的博文...
MATLAB中有命令hist3() 可以绘制直方图,竖坐标是频数,这与一些教科书中用纵轴表示频率的做法不一致,有些时候不便于使用.当然,使用者可以自己编写定制能够在纵轴绘出频率的直方图.在MATLAB ...
- matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...
(一)运行时间 1.tic和toc组合 计算daotic和toc之间那专段程序之间的属运行时间,它的经典格式为 : tic 函数 toc 复制函数代码,当代码遇到tic时Matlab自动开始计时,运行 ...
- matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...
主修物理海洋学,有变量空间场的画图需求,这是遇到的一些细节问题,部分灵感来自于网络. 本人在画陆地数据加温盐场的图时,需要调用两个colormap,这有很多种解决办法: 普通的2014b以后的版本来讲 ...
- matlab 数据分割,科学网—MATLAB把一个包含多个站点数据的文件分割到各个站点单独的文件夹 - 张乐乐的博文...
有65个站点的气象数据,但是这些数据全部在一个文件中,本程序主要想着把每个站点的数据放在各个单独的文件夹中.下面是我给写的程序: clear;clc %读取数据 shuju=importdata('C ...
- matlab做误差棒图,科学网—Matlab误差棒、图例、颜色配比,很有用的代码 - 周锋的博文...
话不多说,直接贴代码和效果图,会用之人自然会觉得有用. 效果图: 代码: clear; clc; load('ALGO_GPS.neu'); % 加载数据 data = ALGO_GPS; dyr ...
- matlab的peer啥意思,科学网—Matlab读取PEER地震动记录数据库加速度数据函数 - 王德才的博文...
PEER地震动记录数据库是目前应用最为广泛的数据库,为了便于利用其中的强震记录,对几年前采用Matlab编写的读取加速度数据函数进行了改写,使用了向量化的编写规则,减少了原有的循环处理,比原来的程序简 ...
最新文章
- 非本地类型不能定义方法 cannot define new methods on non-local type time.Duration
- 【Smart_Point】unique_ptr中独占指针使用MakeFrame
- 30秒无需编码完成一个REST API服务
- vscode自动格式化不符合eslint_VsCode(Visual Studio Code)格式化代码符合EsLint
- 用计算机表白的数字,用数字表白的句子大全 如何用数字表白一段话
- imsi序列号_IPhone 获取IMSI序列号
- 什么标签用于在表单中构建复选框_UI/UX笔记之如何设计好表单
- 亲身经历之微信支付沙箱环境扫码支付遇到的那些坑
- android https详解,如何使用HTTPS和HTTP来解析Android中的JSON数据?
- JAVA方法中的参数用final来修饰的原因
- matlab给图像加云,matlab怎么给图像加雾
- WinAPI: midiOutSetVolume - 设置 MIDI 输出设备的音量
- 李洪强iOS经典面试题30-一个区分度很大的面试题
- [礼仪大赛策划方案]图:如何打造一场精美极致的礼仪大赛?PPT动态柱状图,如何动态显示?Flash如何渲染PPT界面呢?
- 2022年3月14日黑马程序员第二天
- 证件照处理:一寸照片换底色
- 刻度尺组件vue-scale,并绑定输入框
- Critical dependency: the request of a dependency is an expression
- springboot实现反向代理
- 基于DPABI和SPM12的任务态fMRI分析笔记1——预处理
热门文章
- 13.5 常见Random类
- java exec 空格_java exec 空格及特殊符号处理的解决方案
- Nginx的启动、停止与重启---linux
- [洛谷P4726]【模板】多项式指数函数
- Windows Subsystem for Linux (WSL)简单尝试
- Cassandra 3.x官方文档(1)---关于Cassandra
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
- JavaScript学习记录总结(四)——js函数的特殊性
- Scrapy入门教程
- UA MATH636 信息论8 线性纠错码的解码算法