如何用MATLAB细化图象

如何用MATLAB细化图象,第1张

你可以把点取细一点

比如原先一个变量A=0:0.01:1

可以变成A=0:0.001:1

也就是原先0到1之间取了100个点绘图改了以后就成陆或弊取早族1000个点了图像自然团衡也就清晰了

%%%%%%%%%%%%%%%模糊聚类渗孙%%%%%%%%%%%%%%%%%%%%%%%

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

这个参数好像不用定义吧,直接设定了就可以用模搏绝。比如:bwmorph(BW, 'thin', inf)

就像这篇 http://zhidao.baidu.com/question/270597346.html 中用的方法。‘thin’这个参数就指定了对二值图像BW进行细化 *** 作,inf(无穷大)这个参数说的是对图像一直进旦姿行细化,直到图像不再发生变化为银核止。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12561476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存