本文主要是介绍提取峰值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
郁闷了好几天,怎样求峰值呢,昨天回去的路上才子说:可以用三个点。
晕,突然想到啦,这么弱智的问题居然困扰了我好久。
下面是求峰值的代码,可能有点乱。
求出峰值,下面的步骤就比较简单啦。
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
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
这篇关于提取峰值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!