| Maxima = 1
| Minima = 2
-let findExtremum (img : Image<Gray, 'TDepth>) (extremumType : ExtremumType) : IEnumerable<Points> =
+let inline findExtremum (img : Image<Gray, 'TDepth>) (extremumType : ExtremumType) : IEnumerable<Points> when 'TDepth : unmanaged =
let w = img.Width
let h = img.Height
let se = [| -1, 0; 0, -1; 1, 0; 0, 1 |]
let level = imgData.[ni, nj, 0]
let notSuppressed = not suppress.[ni, nj]
- if level = currentLevel && notSuppressed then
+ if notSuppressed && level = currentLevel then
suppress.[ni, nj] <- true
sameLevelToCheck.Push(Point(nj, ni))
elif (if extremumType = ExtremumType.Maxima then level > currentLevel else level < currentLevel) then
result.Select(fun l -> Points(l))
-let findMaxima (img : Image<Gray, 'TDepth>) : IEnumerable<Points> =
+let inline findMaxima (img : Image<Gray, 'TDepth>) : IEnumerable<Points> when 'TDepth : unmanaged =
findExtremum img ExtremumType.Maxima
-let findMinima (img : Image<Gray, 'TDepth>) : IEnumerable<Points> =
+let inline findMinima (img : Image<Gray, 'TDepth>) : IEnumerable<Points> when 'TDepth : unmanaged =
findExtremum img ExtremumType.Minima
type PriorityQueue () =