How to choose an M12 lens for smart-retail cameras
Retail vision splits into two optical problems. One is coverage: see the whole floor or aisle from as few cameras as possible. The other is legibility: put enough clean pixels on a barcode, price label, or face for the model to read it. Fisheye and rectilinear lenses sit at opposite ends of that split, and most store builds use both.
Field of view versus reading detail
Coverage tasks reward wide angles. A 190° to 230° fisheye on a ceiling covers a zone that would take three or four narrow cameras, which is why people-counting and heatmap systems lean on them. Reading tasks reward the opposite. Every degree of field you add spreads the same sensor pixels over more scene, so a barcode or shelf label lands on fewer pixels. Pick the longest focal length that still frames the counter or bay, not the widest one that fits.
Distortion is a legibility spec, not a looks spec
Barrel distortion (negative TV distortion) bows straight lines outward and compresses the scale near the frame edge. For a person-counting fisheye that is fine, because the analytics run on calibrated geometry. For OCR it costs two things: local sampling drops where the field is compressed, so edge characters and barcode bars land on fewer pixels, and any stage that assumes a rectilinear image has to be calibrated or retrained. Trained detectors and calibrated decoders can work from the distorted image instead, so this is rarely a hard yes or no. Low-distortion and no-distortion designs remove the question by holding lines straight across the field. Undistorting in software is the third route: it works only as well as its calibration and adds a step to every frame. Set the residual distortion you need from a decode-rate test on your own labels.
Sensor coverage and image circle
A lens only fills a circle of light, and that image circle has to reach the corners of your sensor or they go dark. The rectilinear lenses here publish image circles from 6.8mm to 9.0mm as designed, so check the lens you pick against your own sensor diagonal rather than the group: the AR0234 (6.79mm diagonal) sits at the low end of that span, and the large-format 5.5mm (CIL056) reaches a bigger frame. The fisheyes work the other way. Their circles run 2.9mm to 4.7mm, and the round image lands whole inside the frame with dark corners around it only when the sensor short axis is wider than the circle. The AR0234 short axis is 3.60mm, so every fisheye here except the 2.9mm overfills it and the imaged field is cropped.
Low light, IR, and 24/7 operation
Entrances and stockrooms run around the clock, so aperture and IR behavior matter. A fast lens such as the 6mm at F/1.7 (CIL059) gathers more light per exposure than a slower one. Cameras that switch to near-infrared illuminators at night want an IR-corrected lens: it holds focus between visible and near-infrared, where an ordinary lens shifts focus and softens. The 190° IR-corrected fisheye (CIL215) and the IR-corrected 4.4mm (CIL046) are built for that switch.
Sealing and environment
Cold aisles, vestibules, and outdoor-facing entrances see condensation, dust, and splash. IP67-rated variants such as the CIL034 and the 6mm CIL059 are dust-tight and pass 30-minute immersion in still water under IEC 60529, for that lens variant in the mounting configuration tested. That is the whole exposure the mark certifies. Reading it across to the incidental splash a cold aisle produces is engineering judgment about the seal rather than a test result, since IPX7 is immersion alone and does not pass the separate IPX3 and IPX4 spray tests.
Two limits come with that. The rating stops at the lens barrel, so the camera body, connector, and cable exit need their own sealing before the assembly carries any rating. And directed washdown falls under the separate IPX5, IPX6, or IPX9 exposures, while condensation inside a sealed cavity is a humidity and thermal-cycling problem that no IP digit addresses.
Mount and integration
M12 is a 12mm x 0.5mm thread, also called S-mount. It is a thread specification rather than a camera-mechanics standard, so the compute platform behind the sensor settles nothing about fit. These lenses screw into M12 holders on modules from ArduCam, e-con Systems, and Leopard Imaging, including the boards that carry AR0234, IMX290, and similar sensors behind NVIDIA Jetson and Raspberry Pi. Match the holder height and back focal length so the sensor lands in the focal plane, confirm the image circle covers the sensor diagonal, check the lens chief ray angle against the sensor microlens profile, and set focus against the actual scene distance before you lock the thread.











