~bertrand-nouvel/pycvf-keypoints/trunk

« back to all changes in this revision

Viewing changes to nodes/gb_descriptor.py

  • Committer: tranx
  • Date: 2010-10-01 16:56:14 UTC
  • Revision ID: tranx@havane-20101001165614-u938mdd1y1fgd0o5
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
from pycvf.core import genericnode
 
3
from pycvfext.image.datatypes import image
 
4
from pycvf.datatypes import list as ldt
 
5
 
 
6
import numpy
 
7
from pycvfext.keypoints.lib.gb.compute_channels_oe_nms import compute_channels_oe_nms
 
8
from pycvfext.keypoints.lib.gb.get_descriptors import get_descriptors_at
 
9
 
 
10
class GeometricBlurDescriptors:
 
11
  def __init__(self,
 
12
                      blurRate=0.5,
 
13
                      blurBase=1,
 
14
                      sampleRadii=[0, 4, 8, 16, 32, 50],
 
15
                      numSamplePerRadius= [1, 8, 8, 10, 12, 12],
 
16
                      usePBEdges=False):
 
17
        self.usePBEdges=usePBEdges
 
18
        self.blurRate=blurRate
 
19
        self.blurBase=blurBase
 
20
        self.sampleRadii=sampleRadii
 
21
        self.numSamplePerRadius=numSamplePerRadius
 
22
  def process(self,args):
 
23
     I,keypoints=args
 
24
     if I.ndim==3:
 
25
       if (I.shape[2]>1):
 
26
         I = I.mean(axis=2)
 
27
       else:
 
28
         I=I.reshape(I.shape[:2])
 
29
    
 
30
     if not self.usePBEdges:
 
31
       fbr = compute_channels_oe_nms(I)
 
32
     else:
 
33
       assert False,"Not yet implemented"
 
34
     descrs, frames=get_descriptors_at(numpy.dstack(fbr), keypoints, self.blurRate, self.blurBase, numpy.array(self.sampleRadii), numpy.array(self.numSamplePerRadius))
 
35
     
 
36
 
 
37
Node=genericnode.pycvf_node_class(image.Datatype(),None)(GeometricBlurDescriptors)
 
38
__call__=Node
 
39