Machine Vision Applications#

Examples of Machine Vision Requirements

  • Visualize droplets ranging in size from 10 to 100 microns.

  • Visualize a field with 1 million drops

  • Classify 10 micron particles

Questions

  • Are the particles in motion?

  • How much time is available to capture the image?

  • Do we need a CFA or could a monochrome camera with filters be used?

  • Depth of field? Are the particles in a plane?

  • How are the illuminated?

  • What working distances?

  • Any mounting or geometrical constraints?

import math

d = 0.05 # mm
object_area = d*d*1000000
print("Field size =", object_area, "mm**2")
print("Field width = ", math.sqrt(object_area), "mm")
Field size = 2500.0000000000005 mm**2
Field width =  50.00000000000001 mm

Lenses#

Fixed focal length lenses#

A 16mm lens on a 2/3” sensor has a 30 degree angle of view, and a typical minimum object distance of 20cm which is an object field about 11cm in diameter. This is too large for the application.

A 2/3” sensor has a diagonal of 7.85mm. An object field of 2cm corresponds to a magnification of 0.4x. A magnification range of 1.0x to 0.3x would seem about right.

Macro and Variable Magnification Lenses#

Telecentric Lenses#

Tutorials and general information:

Illumination:

Sources:

Sample Calculations

import numpy as np
import math

# Sony IMX477 sensor

pixel_size = 1.55  # microns
h_pixels = 4056.
v_pixels = 3040.

h_mm = h_pixels*pixel_size/1000.
v_mm = v_pixels*pixel_size/1000.
d_mm = round(math.sqrt(h_mm**2 + v_mm**2), 3)

print(h_mm, v_mm, d_mm)

# Field of View

h_fov = 15.0 
v_fov = (v_pixels/h_pixels)*h_fov
d_fov = round(math.sqrt(h_fov**2 + v_fov**2), 3)

print(h_fov, v_fov, d_fov)

# magnification
mag =  round(d_mm/d_fov, 2)
print(mag)
6.2868 4.712 7.857
15.0 11.24260355029586 18.746
0.42

33.5mm tube diameter 50.0mm max external diameter

Sensing Design#

Raspberry Pi HQ Camera (Sony IMX477)#

Technical Drawing

30mm Optical Cage#

3D Printed Mounting plates

Arducam#

Picamera#