郁闷了好几天,怎样求峰值呢,
昨天回去的路上才子说:可以用三个点。
晕,突然想到啦,这么弱智的问题居然困扰了我好久。
下面是求峰值的代码,可能有点乱。
求出峰值,下面的步骤就比较简单啦。
a=imread('c:oat.png');%读入图像
figure,imshow(a);%显示图像
b=a(:);
k=size(b);
%下述操作可以实现像素的显示
c=linspace(0,0,256);
fori=1:k
forj=1:256
if(b(i)==j)
c(j)=c(j)+1;
end
end
end
%以下步骤简单实现读取整个图像的峰值点

max=c(1);
maxi=0;
fori=1:256
if(c(i)>max)
max=c(i);
maxi=i;
end
end
max
maxi




%下面步骤实现对各个峰值的读取
d=c;%作为临时操作数组,以不破坏原数组
emax=linspace(0,0,256);
emaxi=linspace(0,0,256);
a=1;
forj=2:256
if(d(j)>d(j-1)&d(j)>d(j+1))
emax(a)=d(j);
emaxi(a)=j;
d(j)=d(j-1);
a=a+1;%开始没有想明白,用额外的循环变量
end
end


%下面的程序读取四个高峰值,并进行显示
fmax=linspace(0,0,4);
fmaxi=linspace(0,0,4);
b=1;
fori=1:4
fmax(b)=emax(1);
forj=2:256
if(emax(j)>fmax(b))
fmax(b)=emax(j);
fmaxi(b)=emaxi(j);
t=j;
end
end
emax(t)=0;
b=b+1;
end


fori=1:4
fmax(i)
fmaxi(i)
end


昨天回去的路上才子说:可以用三个点。
晕,突然想到啦,这么弱智的问题居然困扰了我好久。
下面是求峰值的代码,可能有点乱。
求出峰值,下面的步骤就比较简单啦。




































































