matcher

package
v0.0.0-...-c1f540c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComplementaryMaxAngleError

func ComplementaryMaxAngleError() float64

func Compute

func Compute(probe, candidate *templates.SearchTemplate, pairing *PairingGraph, score *ScoringData)

func Crawl

func Crawl(pedges, cedges [][]*features.NeighborEdge, pairing *PairingGraph, root *MinutiaPair, queue *PriorityQueue)

func Enumerate

func Enumerate(probe *Probe, candidate *templates.SearchTemplate, roots *RootList)

func Hash

func Hash(edge *features.EdgeShape) int

func Matching

func Matching(probe *features.IndexedEdge, candidate *features.EdgeShape) bool

Types

type EdgeHashBuilder

type EdgeHashBuilder struct {
	// contains filtered or unexported fields
}

func NewEdgeHashBuilder

func NewEdgeHashBuilder(logger HashTableLogger) *EdgeHashBuilder

func (*EdgeHashBuilder) Build

func (b *EdgeHashBuilder) Build(template *templates.SearchTemplate) (map[int][]*features.IndexedEdge, error)

type HashTableLogger

type HashTableLogger interface {
	LogEdgeHash(map[int][]*features.IndexedEdge) error
}

type Matcher

type Matcher struct {
	// contains filtered or unexported fields
}

func NewMatcher

func NewMatcher(logger MatcherLogger) *Matcher

func (*Matcher) Match

func (m *Matcher) Match(ctx context.Context, probe *Probe, candidate *templates.SearchTemplate) (high float64)

type MatcherLogger

type MatcherLogger interface {
	LogRootPairs(count int, roots []*MinutiaPair) error
	LogPairing(pairing *PairingGraph) error
	LogBestPairing(pairing *PairingGraph) error
	LogScore(score *ScoringData) error
	LogBestScore(score *ScoringData) error
	LogBestMatch(int) error
}

type MatcherThread

type MatcherThread struct {
	Roots   *RootList
	Pairing *PairingGraph
	Queue   PriorityQueue
	Score   *ScoringData
}

func CurrentThread

func CurrentThread(ctx context.Context) *MatcherThread

type MinutiaPair

type MinutiaPair struct {
	Probe, Candidate, ProbeRef, CandidateRef int
	// contains filtered or unexported fields
}

type MinutiaPairPool

type MinutiaPairPool struct {
	// contains filtered or unexported fields
}

func NewMinutiaPairPool

func NewMinutiaPairPool() *MinutiaPairPool

func (*MinutiaPairPool) Allocate

func (p *MinutiaPairPool) Allocate() *MinutiaPair

func (*MinutiaPairPool) Release

func (p *MinutiaPairPool) Release(pair *MinutiaPair)

type PairingGraph

type PairingGraph struct {
	Count         int
	Tree, Support []*MinutiaPair
	// contains filtered or unexported fields
}

func NewPairingGraph

func NewPairingGraph(pool *MinutiaPairPool) *PairingGraph

func (*PairingGraph) AddPair

func (g *PairingGraph) AddPair(pair *MinutiaPair)

func (*PairingGraph) Clear

func (g *PairingGraph) Clear()

func (*PairingGraph) ReserveCandidate

func (g *PairingGraph) ReserveCandidate(candidate *templates.SearchTemplate)

func (*PairingGraph) ReserveProbe

func (g *PairingGraph) ReserveProbe(probe *Probe)

func (*PairingGraph) SupportPair

func (g *PairingGraph) SupportPair(pair *MinutiaPair)

type PriorityQueue

type PriorityQueue []*MinutiaPair

func (PriorityQueue) Len

func (pq PriorityQueue) Len() int

func (PriorityQueue) Less

func (pq PriorityQueue) Less(i, j int) bool

func (*PriorityQueue) Pop

func (pq *PriorityQueue) Pop() any

func (*PriorityQueue) Push

func (pq *PriorityQueue) Push(x any)

func (PriorityQueue) Swap

func (pq PriorityQueue) Swap(i, j int)

type Probe

type Probe struct {
	// contains filtered or unexported fields
}

func NewProbe

func NewProbe(template *templates.SearchTemplate, hash map[int][]*features.IndexedEdge) *Probe

type RootList

type RootList struct {
	// contains filtered or unexported fields
}

func NewRootList

func NewRootList(pool *MinutiaPairPool) *RootList

func (*RootList) Add

func (r *RootList) Add(pair *MinutiaPair)

func (*RootList) Discard

func (r *RootList) Discard()

type ScoringData

type ScoringData struct {
	MinutiaCount               int
	MinutiaScore               float64
	MinutiaFractionInProbe     float64
	MinutiaFractionInCandidate float64
	MinutiaFraction            float64
	MinutiaFractionScore       float64
	SupportingEdgeSum          int
	EdgeCount                  int
	EdgeScore                  float64
	SupportedMinutiaCount      int
	SupportedMinutiaScore      float64
	MinutiaTypeHits            int
	MinutiaTypeScore           float64
	DistanceErrorSum           int
	DistanceAccuracySum        int
	DistanceAccuracyScore      float64
	AngleErrorSum              float64
	AngleAccuracySum           float64
	AngleAccuracyScore         float64
	TotalScore                 float64
	ShapedScore                float64
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL