let find (edges: Matrix<byte>)
- (xGradient: Image<Gray, float32>)
- (yGradient: Image<Gray, float32>)
+ (xGradient: Matrix<float32>)
+ (yGradient: Matrix<float32>)
(config: Config) : MatchingEllipses =
let r1, r2 = config.RBCRadius.Min, config.RBCRadius.Max
squaredDistance p1xf p1yf p3xf p3yf >= squaredMinimumDistance &&
squaredDistance p2xf p2yf p3xf p3yf >= squaredMinimumDistance
then
- match areVectorsValid (float32 p1xf) (float32 p1yf) (float32 p2xf) (float32 p2yf) -xDirData.[p1.Y, p1.X, 0] -yDirData.[p1.Y, p1.X, 0] -xDirData.[p2.Y, p2.X, 0] -yDirData.[p2.Y, p2.X, 0] with
+ match areVectorsValid (float32 p1xf) (float32 p1yf) (float32 p2xf) (float32 p2yf) -xDirData.[p1.Y, p1.X] -yDirData.[p1.Y, p1.X] -xDirData.[p2.Y, p2.X] -yDirData.[p2.Y, p2.X] with
| Some (m1, m2) ->
match ellipse2 p1xf p1yf (float m1) p2xf p2yf (float m2) p3xf p3yf with
| Some e when e.Cx > 0.f && e.Cx < w_f - 1.f && e.Cy > 0.f && e.Cy < h_f - 1.f &&