提取峰值

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


a = imread( ' c:oat.png');%读入图像
figure,imshow(a);%显示图像
b
= a(:);
k
= size(b);
%下述操作可以实现像素的显示
c
= linspace( 0 , 0 , 256 );
for i = 1 :k
for j = 1 : 256
if (b(i) == j)
c(j)
= c(j) + 1 ;
end
end
end
%以下步骤简单实现读取整个图像的峰值点

max
= c( 1 );
maxi
= 0 ;
for i = 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 ;
for j = 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 ;
for i = 1 : 4
fmax(b)
= emax( 1 );
for j = 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


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




你可能感兴趣的:(C++,c,C#,J#)