请问有什么适合搜索峰值的算法吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeReamond
V2EX    问与答

请问有什么适合搜索峰值的算法吗?

  •  
  •   LeeReamond 2022-07-17 14:37:10 +08:00 2127 次点击
    这是一个创建于 1189 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个图像处理的需求是需要获取单通道峰值点,

    比如上面这张图,如果把整个分布视为一条曲线的话,假设从左到右是 0-255 ,可以看出图中有 2 个(或 3 个)峰,这张图的情况的话理论希望输出 15,240 (大概类似这个数吧,就是各峰的中心点)

    请问有什么算法能实现类似效果么?因为数据本身是离散的,本身又有随机性,如果写一个遍历,比如某个点比左高,同时比右高,就判断为中心点,这种是不行的。因为数据没有周期性,fft 似乎也是分析不出来,小波分析我看了些文章没看懂,而且感觉似乎不太适合这种情况。。

    11 条回复    2022-07-18 14:21:44 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2022-07-17 14:50:21 +08:00
    做一下平滑处理呗

    实际上是你没有想清楚"峰值"定义导致的
    biepin
        2
    biepin  
       2022-07-17 15:16:19 +08:00
    ”如果写一个遍历,比如某个点比左高,同时比右高,就判断为中心点,这种是不行的“
    如果说筛选出来的所有中心点再进行筛选一次呢?保留波动较大的点
    zcf0508
        3
    zcf0508  
       2022-07-17 15:50:06 +08:00 via Android
    从左往右遍历,先升再降的就算是一个峰值
    LeeReamond
        4
    LeeReamond  
    OP
       2022-07-17 15:55:45 +08:00 via Android
    @Jooooooooo 确实,因为概念本身比较模糊。平滑是一个方案,但不能保证平滑就一定没问题了,而且我私下里感觉平滑比较昂贵,我希望性能高一些。


    @biepin 是一个思路,很有启发,但感觉没法直接用。还有一个想法是不取最高值也行,有时候最高的点似乎也不能描述整个峰的情况,也许实际来说用一整个峰的重心位置比较合适。。。
    dayeye2006199
        5
    dayeye2006199  
       2022-07-17 16:02:22 +08:00
    先做个差分,爬坡阶段的“导数”一般都是正的(增长);下坡的“导数”一般都是负的。

    所以差分的图就是 ++++---------+++++--------- 这样的。

    然后套个隐马尔可夫,侦测一下+变-的转折点在什么地方,不知道是否可行?
    LeeReamond
        6
    LeeReamond  
    OP
       2022-07-17 18:07:29 +08:00 via Android
    @dayeye2006199 由于噪声,包括图中还有重峰,实际执行结果应该是+-++---+----+++-大概类似这样
    yesterdaysun
        7
    yesterdaysun  
       2022-07-18 09:44:46 +08:00
    试试 python 的 peakutils
    blueperson
        8
    blueperson  
       2022-07-18 11:53:03 +08:00
    @LeeReamond 那你想要的可能就是峰型拟合了(不考虑代价先). 峰型拟合的前提是, 定义峰型函数, 数据失真度不高. 做个拟合看看是不是顺眼. 不知道你这边的信号是否需要考虑峰的叠加问题, 信号叠加会导致实际呈现的峰型改变.
    lysS
        9
    lysS  
       2022-07-18 12:35:41 +08:00
    峰不就是单增变成了单减嘛
    CFM880
        10
    CFM880  
       2022-07-18 12:50:54 +08:00
    链接: https://pan.baidu.com/s/1eSIZ_d9Tmv5Hha25FsyK_A 提取码: xa8g 复制这段内容后打开百度网盘手机 App ,操作更方便哦
    --来自百度网盘超级会员 v8 的分享

    下载下来,以只读模式打开,之前的核数据处理的课程,有类似的需求
    EzekielDaun
        11
    EzekielDaun  
       2022-07-18 14:21:44 +08:00 via Android
    用过 scipy 的 find_peaks ,具体是什么算法不太清楚
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2780 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:07 PVG 15:07 LAX 00:07 JFK 03:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86