Peak Finder

Image Recognition 2012. 2. 2. 21:41
주어진 데이터를 받아서 극대점과 극소점을 찾는다. 극점은 이전 극점과 일정한 차이(delta)가 날 때만 취한다. 맨 처음과 나중에 들어오는 데이터가 극점일 때, 별도의 처리가 필요하다.

BOOL peakFinder(std::vector<double>& data, double delta, /*IN*/
                          std::vector<int>& maxPosition, /*OUT*/
                          std::vector<int>& minPosition) /*OUT*/
{
    int maxPos = -1;
    int minPos = -1;
    bool lookForMax = true;
    double maxVal = -FLT_MAX ;       
    double minVal = FLT_MAX ;
    for (int i = 0; i < data.size(); i++) {
        double currVal = data[i] ;
        if (currVal > maxVal) {
            maxVal = currVal ;
            maxPos = i;
        } else if (currVal < minVal) {
            minVal = currVal ;
            minPos = i;
        }
        //
        if (lookForMax) {
            // 극대값을 찾는 상태이고, 현재값이 maxVal보다 충분이 아래면,
            // 이 maxVal이 극대값임 & 현재위치가 극소값의 후보가 됨;
            if (currVal < (maxVal - delta)) {
                maxPosition.push_back(maxPos);
                minVal = currVal ;
                minPos = i;
                lookForMax = false; //다음번에는 최소값을 찾는다;
            }
        } else {
            // 극소값을 찾는 상태이고, 현재값이 minVal보다 충분히 위면,
            // 이 minVal이 극소점임 & 현재위치가 극대값 후보가 됨;
            if (currVal > (minVal + delta)) {
                minPosition.push_back(minPos);
                maxVal = currVal;
                maxPos = i;
                lookForMax = true; //다음번에는 최대값을 찾는다;
            }
        }
 
    }
    return TRUE;
} 

데이터 구간이 (0,255) 히스트그램:

delta = 5;

""


delta  = 10;

""

delta = 15 ;

""

  

 

'Image Recognition' 카테고리의 다른 글

Perspective Transformation  (2) 2012.02.14
Integral Image을 이용한 Adaptive Threshold  (0) 2012.02.04
Peak Finder  (1) 2012.02.02
QR-code : decoder  (0) 2012.01.26
QR-code : detector  (0) 2012.01.12
Adaboost  (0) 2010.12.28
Posted by helloktk

댓글을 달아 주세요

  1. BSH 2016.05.24 10:35  댓글주소  수정/삭제  댓글쓰기

    입력값 data 형태가 어떻게 되어야 하는거죠 ?
    만약 아래와 같은 히스토그램이라면,
    vector data = {2, 4, 3, 1, 2, ..., 1} 255개로 되는 건가요 ?


    (빈도)
    ...
    7
    6
    5
    4 *
    3 * *
    2 * * * *
    1 * * * * *  *
    0 1 2 3 4 ... 255 (영상 밝기 0-255)