projects
/
master-thesis.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Micro optimization to improve analysis speed by ~20%
[master-thesis.git]
/
Parasitemia
/
ParasitemiaCore
/
ImgTools
/
Histogram.fs
diff --git
a/Parasitemia/ParasitemiaCore/ImgTools/Histogram.fs
b/Parasitemia/ParasitemiaCore/ImgTools/Histogram.fs
index
e3a9950
..
df1ecb6
100644
(file)
--- a/
Parasitemia/ParasitemiaCore/ImgTools/Histogram.fs
+++ b/
Parasitemia/ParasitemiaCore/ImgTools/Histogram.fs
@@
-6,14
+6,16
@@
open System.Drawing
open Emgu.CV
open Emgu.CV.Structure
open Emgu.CV
open Emgu.CV.Structure
-type Histogram = {
- data: int[]
- total: int // Number of elements.
- sum: int // Sum of all intensity.
- min: float32
- max: float32 }
-
-let histogramImg (img: Image<Gray, float32>) (nbSamples: int) : Histogram =
+type Histogram =
+ {
+ data : int[]
+ total : int // Number of elements.
+ sum : int // Sum of all intensity.
+ min : float32
+ max : float32
+ }
+
+let histogramImg (img : Image<Gray, float32>) (nbSamples : int) : Histogram =
let imgData = img.Data
let min, max =
let imgData = img.Data
let min, max =
@@
-24,7
+26,7
@@
let histogramImg (img: Image<Gray, float32>) (nbSamples: int) : Histogram =
img.MinMax(min, max, minLocation, maxLocation)
float32 (!min).[0], float32 (!max).[0]
img.MinMax(min, max, minLocation, maxLocation)
float32 (!min).[0], float32 (!max).[0]
- let inline bin (x: float32) : int =
+ let inline bin (x
: float32) : int =
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p
@@
-37,7
+39,7
@@
let histogramImg (img: Image<Gray, float32>) (nbSamples: int) : Histogram =
{ data = data; total = img.Height * img.Width; sum = Array.sum data; min = min; max = max }
{ data = data; total = img.Height * img.Width; sum = Array.sum data; min = min; max = max }
-let histogramMat (mat
: Matrix<float32>) (nbSamples
: int) : Histogram =
+let histogramMat (mat
: Matrix<float32>) (nbSamples
: int) : Histogram =
let matData = mat.Data
let min, max =
let matData = mat.Data
let min, max =
@@
-48,7
+50,7
@@
let histogramMat (mat: Matrix<float32>) (nbSamples: int) : Histogram =
mat.MinMax(min, max, minLocation, maxLocation)
float32 !min, float32 !max
mat.MinMax(min, max, minLocation, maxLocation)
float32 !min, float32 !max
- let inline bin (x: float32) : int =
+ let inline bin (x
: float32) : int =
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p
@@
-61,7
+63,7
@@
let histogramMat (mat: Matrix<float32>) (nbSamples: int) : Histogram =
{ data = data; total = mat.Height * mat.Width; sum = Array.sum data; min = min; max = max }
{ data = data; total = mat.Height * mat.Width; sum = Array.sum data; min = min; max = max }
-let histogram (values
: float32 seq) (nbSamples
: int) : Histogram =
+let histogram (values
: float32 seq) (nbSamples
: int) : Histogram =
let mutable min = Single.MaxValue
let mutable max = Single.MinValue
let mutable n = 0
let mutable min = Single.MaxValue
let mutable max = Single.MinValue
let mutable n = 0
@@
-71,7
+73,7
@@
let histogram (values: float32 seq) (nbSamples: int) : Histogram =
if v < min then min <- v
if v > max then max <- v
if v < min then min <- v
if v > max then max <- v
- let inline bin (x: float32) : int =
+ let inline bin (x
: float32) : int =
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p
let p = int ((x - min) / (max - min) * float32 nbSamples)
if p >= nbSamples then nbSamples - 1 else p