matlab细化算法
❶ matlab数字图像处理,对指纹图像进行细化,用bwmorph(BW,thin,inf)函数细化
这个参数好像不用定义吧,直接设定了就可以用。比如:bwmorph(BW, 'thin', inf)
就像这篇 http://..com/question/270597346.html 中用的方法。‘thin’这个参数就指定了对二值图像BW进行细化操作,inf(无穷大)这个参数说的是对图像一直进行细化,直到图像不再发生变化为止。
❷ matlab最优化算法有哪些
matlab最优化程序包括
无约束一维极值问题 进退法 黄金分割法 斐波那契法 牛顿法基本牛顿法 全局牛顿法 割线法 抛物线法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法
单纯形搜索法 Powell法 最速下降法 共轭梯度法 牛顿法 修正牛顿法 拟牛顿法 信赖域法 显式最速下降法, Rosen梯度投影法 罚函数法 外点罚函数法
内点罚函数法 混合罚函数法 乘子法 G-N法 修正G-N法 L-M法 线性规划 单纯形法 修正单纯形法 大M法 变量有界单纯形法 整数规划 割平面法 分支定界法 0-1规划 二次规划
拉格朗曰法 起作用集算法 路径跟踪法 粒子群优化算法 基本粒子群算法 带压缩因子的粒子群算法 权重改进的粒子群算法 线性递减权重法 自适应权重法 随机权重法
变学习因子的粒子群算法 同步变化的学习因子 异步变化的学习因子 二阶粒子群算法 二阶振荡粒子群算法
❸ 如何用MATLAB细化图象
你可以把点取细一点
比如原先一个变量A=0:0.01:1;
可以变成A=0:0.001:1;
也就是原先0到1之间取了100个点绘图改了以后就成取1000个点了图像自然也就清晰了
❹ MATLAB的图像细化算法求助。applylutc.c
%%%%%%%%%%%%%%%模糊聚类%%%%%%%%%%%%%%%%%%%%%%%
clear;
load F:\从0开始\数据\data.txt;
INPUTDATA=data;
%--------原始数据标准化-------%
disp('请选择原始数据标准化方式: ');
disp('<1-总和标准化|2-标准差标准化|3-极大值标准化|4-极差标准化>');
wayforstand=input('请输入: ');
switch wayforstand
case 1,
DATAFORCLUS=standard_use_sum(INPUTDATA);
case 2,
DATAFORCLUS=standard_use_std(INPUTDATA);
case 3,
DATAFORCLUS=standard_use_max(INPUTDATA);
case 4,
DATAFORCLUS=standard_use_jc(INPUTDATA);
otherwise
error('您的输入不符合要求->执行结束!!!');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基于模糊等价关系的模糊聚类%%%%%%%%%%%%%%%%%%%%%%
%----------构造相似关系-----------%
numrows=size(DATAFORCLUS,1);
numcols=size(DATAFORCLUS,2);
disp('请选择对象之间相似性统计量的方式: ');
disp('<1-相关系数法|2-夹角余弦法|3-指数相似系数法|4-绝对值指数法|5-算术平均最小法|6-最大最小值法|7-绝对值差数法|8-数量积法>');
wayforr_ij=input('请输入: ');
switch wayforr_ij
case 1, %-----------------------------------相关系数法
for i=1:numrows,
for j=1:numrows,
meani=mean(DATAFORCLUS(i,:));meanj=mean(DATAFORCLUS(j,:));
simiR(i,j)=sum((DATAFORCLUS(i,:)-meani).*(DATAFORCLUS(j,:)-meanj))/...
(sqrt(sum((DATAFORCLUS(i,:)-meani).^2))*sqrt(sum((DATAFORCLUS(j,:)-meanj).^2)));
end
end
case 2, %-----------------------------------夹角余弦法
for i=1:numrows,
for j=1:numrows,
simiR(i,j)=sum(DATAFORCLUS(i,:).*DATAFORCLUS(j,:))/...
(sqrt(sum(DATAFORCLUS(i,:).*DATAFORCLUS(i,:)))*sqrt(sum(DATAFORCLUS(j,:).*DATAFORCLUS(j,:))));
end
end
case 3, %-----------------------------------指数相似系数法
case 4, %-----------------------------------绝对值指数法
case 5, %-----------------------------------算术平均最小法
case 6, %-----------------------------------最大最小值法
case 7, %-----------------------------------绝对值差数法
case 8, %-----------------------------------数量积法
otherwise
error('您的输入不符合要求->执行结束!!!');
end
%-------改造成等价关系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while sign==0,
for i=1:numrows,
for j=1:numrows,
for c=1:numrows,
rij_temp(c)=min([equi_tem(i,c) equi_tem(c,j)]);
end
simiRk(i,j)=max(rij_temp);
end
end
%--------------%
if sum(sum(simiRk-equi_tem,1))~=0,
numselfmul=numselfmul+1;
equi_tem=simiRk;
else
sign=1;
break
end
%--------------%
end
if sign==1,
disp('从相似矩阵到等价矩阵改造成功!!!');
else
disp('从相似矩阵到等价矩阵改造失败!!!');
end
equiR=simiRk;
numclass=input('请输入聚类数: ');
%---------在不同的截集水平进行聚类--------------%
clasc=0;
comp_vec(1,1:numrows)=0;
index=0;
clasc=0;
tip=0;
alpha=0;
temnumeachclass=0;
while (tip==0),
%alpha=input('请输入进行分类的截集水平λ: ');
%alpha=0.5; %调试
if (alpha<0 || alpha>1),
error('您输入的截集水平λ不符合分类要求->执行结束!!!');
end
comp_arr=ones(numrows)*alpha;
result_arr=(equiR>=comp_arr); %--------------------result_arr判断矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%捡菜算法
for i=1:numrows,
if sum(comp_vec(1,:)==result_arr(i,:))<numrows, %-----------说明没有归类
temnumeachclass=0;
%numeachclass(clasc)=index-temnumeachclass;
temsave=result_arr(i,:);
for j=1:numrows,
if sum(result_arr(j,:)==temsave)==numrows,
index=index+1;
class(index)=j;
result_arr(j,:)=0; %--------------------说明已经被归类
temnumeachclass=temnumeachclass+1;
end
end
clasc=clasc+1;
nec(clasc)=temnumeachclass;
else
continue;
end
end
if clasc>=numclass,
tip=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%当模糊分类的数目小于等于所给出的类数时退出循环体
disp('成功!!!');
else
clear class;
clear numeachclass;
clear nec;
clasc=0;
index=0;
temnumeachclass=0;
alpha=alpha+0.01;
end
end
%----取聚类结果----%
num=0;
n=0;
for i=1:clasc,
for j=1:nec(i),
num=num+1;
n=n+1;
CLUS(n,:)=INPUTDATA(class(num),:);
end
n=n+1;
CLUS(n,:)=inf;
end
%format single(CLUS)
lenexport=size(CLUS,1);
for i=1:lenexport,
RESULT(i,:)=sprintf('%15.2f',CLUS(i,:));
end
RESULT
❺ 求matlab工具箱内的细化函数,二值图像细化
工具箱就是函数的集合吧,没有啥特殊的。把函数文件全部放到一个文件夹里,那后将该文件夹拷贝到matlab的toolbox文件夹下(在matlab安装路径中找),最后将该文件夹路径添加到matlab路径中(手动的话在preferens里设置,命令的话用addpath),就可以在任意位置使用这些函数了。
❻ 关于matlab轮廓线细化的问题
%四,图像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像 figure NO 6
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp');
❼ Matlab中的细化函数是怎样的
前几天刚做的指纹识别算法,细化部分,以指纹识别为例:getminu.m
%%%%%%%%%%%%%%%%%%%%%%%%%提取指纹细节点算法,P为细化后图像
function minu=getminu(P,smooth)
[height,width]=size(P);
minu=P;
cn_coding=zeros(height,width);%连接数编码初始化
for i=2:height-1
for j=2:width-1
if P(i,j)==1
cn_coding(i,j)=0.5*(abs(P(i,j+1)-P(i-1,j+1))+abs(P(i-1,j+1)-P(i-1,j))+abs(P(i-1,j)-P(i-1,j-1))+abs(P(i-1,j-1)-P(i,j-1))+abs(P(i,j-1)-P(i+1,j-1))+abs(P(i+1,j-1)-P(i+1,j))+abs(P(i+1,j)-P(i+1,j+1))+abs(P(i+1,j+1)-P(i,j+1)));
if cn_coding(i,j)==1%端点
minu(i-1,j)=1;
minu(i+1,j)=1;
minu(i,j-1)=1;
minu(i,j+1)=1;
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉点
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
end
end
end
end
figure,imshow(1-minu);
%%%%消除伪细节点%%%%%%%%%%%%%
detail=P;%%初始化
mark=smooth;
for i=1:height
for j=1:width
if smooth(i,j)==8
mark(i,j)=0;
else mark(i,j)=1;
end
end
end
%figure,imshow(mark)%背景与前景标志
for i=2:height-1
for j=2:width-1
%%%%注意这块的逻辑关系,括号的作用很关键的
if (cn_coding(i,j)==1||cn_coding(i,j)==3)&&mark(i,j)==1&&mark(i,j+5)*mark(i-5,j)*mark(i,j-5)*mark(i+5,j)==0
cn_coding(i,j)=0;%置为伪细节点
end
if cn_coding(i,j)==1%端点
detail(i-1,j)=1;
detail(i+1,j)=1;
detail(i,j-1)=1;
detail(i,j+1)=1;
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉点
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
end
end
end
figure,imshow(1-detail);
❽ 如何用matlab编程实现指纹图像的分割与细化
/*
财主^_^,20分也要
*/
#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
int i;
char str[255];
printf( "Please input the string:");
gets( str );
for( i = strlen( str ) - 1 ; i >= 0 ; i-- )
{
printf( "%c" , str[i] );
}
printf( "\n" );
return 0;
}
❾ 如何用matlab实现对边缘检测后的图像的边缘细化和曲线拟合
细化可以参考bwmorph函数,拟合可以在边缘跟踪提取有序节点后直接进行样条拟合等操作。
❿ 基于MATLAB的毕业设计有哪些
基于MATLAB的毕业设计有:
1、基于MATLAB的视图技术分析。
2、二值图像细化算法研究与实现。
3、基于MATLAB下的信号分析与处理。
4、基于matlab的伪彩色处理与研究。
5、matlab进行小波分析。
matlab将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
(10)matlab细化算法扩展阅读
MATLAB特点
1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;
2、具有完备的图形处理功能,实现计算结果和编程的可视化;
3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;
4、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。