zoukankan      html  css  js  c++  java
  • 非极大值抑制

    1  算法原理

       非极大值抑制算法(Non-maximum suppression, NMS)抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。

      在3领域中,假设一个行向量的长度为w,从左向右,由第一个到第w个和其3领域中的数值进行比对。

      (1)情况1:如果某个i大于i+1并且小于i-1,则其为一个绝不最大值,同时也就意味着i+1不是一个局部最大值,所以将i移动2个步长,从i+2开始继续向后进行比较判断。

      (2)情形2:如果某个i不满足上述条件(1),则将i+1赋值给i,继续对新的i进行比对。当比对到最后一个w时,直接将w设置为局部最大值。算法流程如下图所示。

        

    2 3邻域情况下NMS函数的实现

     1  //求解局部最大值
     2  //输入参数a:数组a
     3 //输入参数n:数组的维数
     4 int mynms(int a[],int n)
     5 {
     6     int i = 2;
     7     while(i < n){
     8         if((a[i]>a[i+1])||(a[i]= a[i+1])){
     9             if((a[i]>a[i-1])||(a[i]= a[i-1])){
    10                 return i;
    11             }
    12             i = i + 1;
    13         }
    14         else{
    15             i = i + 2;
    16         }
    17     }
    18    //没有找到局部最大值,返回-1  
    19     return -1;
    20 }

    3 3邻域情况下NMS函数的调用示例

    int main()
    {
        //创建数组a
        int n = 6;
        int a[n] = {1,6,3,5,4,6};
        //求局部最大值的索引值
        int index = mynms(a,6);
        //找到局部最大值时打印出局部最大值
        if(index != -1){
            printf("第一个局部最大值:
        a[%d] = %d
    ",index,a[index]);
        }
        return 0;
    }

  • 相关阅读:
    jQuery Ajax同步参数导致浏览器假死怎么办
    自顶而下系统构架分析
    IEnumerable,IQueryable之前世今生
    C#执行存储过程
    JQuery iframe
    跨服务器插入查询数据
    使用游标、存储过程、pivot 三种方法导入数据
    分库分表的面试题3
    分库分表的面试题2
    分库分表的面试题1
  • 原文地址:https://www.cnblogs.com/cuizhu/p/9517196.html
Copyright © 2011-2022 走看看