Understanding the difference between fisheye and standard camera lenses for camera module FOV is essential when choosing the right optics for your Raspberry Pi, Jetson Nano, or industrial vision system. Fisheye lenses capture 180°+ field of view with strong barrel distortion, while standard lenses capture narrower angles with minimal distortion. This guide explains when to choose each lens type and the trade-offs involved.
Table of Contents
- Field of View (FOV) Basics
- Standard Lens Camera Modules
- Fisheye Lens: 160°-220° Capture
- Barrel Distortion and Correction
- Use Case Comparison
- India Options for Pi Camera Lenses
- Frequently Asked Questions
Field of View (FOV) Basics
FOV (Field of View) describes how wide an angle the camera captures. It depends on both the lens focal length and the sensor size. For the same sensor, a shorter focal length gives wider FOV:
- Telephoto (long focal length): Narrow FOV, zoomed in, less perspective distortion, better for distant objects
- Normal (standard focal length): Similar to human eye perspective, ~60-70° diagonal
- Wide angle: 80-110° diagonal, some barrel distortion
- Fisheye: 150-220° diagonal, strong barrel distortion, curvilinear image
Standard Lens Camera Modules
The Raspberry Pi Camera Module v2 and v3 ship with standard lenses (62.2° × 48.8° FOV for v2; 66° for v3). Standard lenses:
- Minimal barrel distortion — straight lines appear straight
- Good for document scanning, product photography, face recognition
- Objects at different distances remain proportional
- Limited scene capture in confined spaces
Fisheye Lens: 160°-220° Capture
Fisheye lenses use a specific optical design to capture very wide angles. Common types on Raspberry Pi-compatible modules:
- 160° FOV (M12 fisheye): Moderate fisheye effect, good for indoor wide-area monitoring, available for HQ Camera C/CS mount
- 200°-220° FOV (ultra-fisheye): Extreme distortion, circular image in full-frame mode, used for 360° panoramic stitching
- Pi NoIR Wide: 160° FOV with IR-pass filter removed — night vision wide-angle
Fisheye M12 mount lenses for the Raspberry Pi HQ Camera are available in India from ₹1,500–4,000 depending on quality and source.
Barrel Distortion and Correction
Fisheye lenses produce barrel distortion — straight lines appear curved, bowing outward from the centre. This can be corrected in OpenCV:
import cv2
import numpy as np
# Camera matrix and distortion coefficients (calibrate your lens!)
# These are example values - calibrate your specific lens
camera_matrix = np.array([[500, 0, 320],
[0, 500, 240],
[0, 0, 1]], dtype=np.float32)
dist_coeffs = np.array([-0.3, 0.1, 0, 0, 0], dtype=np.float32)
# Undistort fisheye image
def undistort_fisheye(image):
h, w = image.shape[:2]
new_camera_matrix, roi = cv2.getOptimalNewCameraMatrix(
camera_matrix, dist_coeffs, (w, h), 1, (w, h)
)
undistorted = cv2.undistort(image, camera_matrix, dist_coeffs,
None, new_camera_matrix)
x, y, w, h = roi
return undistorted[y:y+h, x:x+w]
# Calibrate using checkerboard pattern for precise coefficients
# cv2.calibrateCamera() with multiple images of a checkerboard
Use Case Comparison
| Application | Best Lens Type | Reason |
|---|---|---|
| Security camera (room) | Wide/Fisheye 120-160° | Cover maximum area from corner mount |
| Face recognition attendance | Standard 60-75° | Minimal distortion for accurate face matching |
| Robotics/self-driving (navigation) | Wide 90-120° | See obstacles in a wide arc |
| PCB/product inspection | Standard or telephoto | No distortion critical for measurement |
| 360° panorama stitching | Ultra-fisheye 180°+ | Two cameras cover full sphere |
| Bird’s-eye view (drone) | Wide 90-120° | See more ground area per frame |
India Options for Pi Camera Lenses
- Waveshare IMX219 120° module: Ready-to-use wide-angle camera for Pi 5, available at Zbotic. ₹2,000–3,000.
- Arducam OV5647 Wide: Wide-angle camera with M12 mount lens for Pi 3/4/Zero. ₹1,500–2,500.
- HQ Camera + M12/C-mount fisheye lens: HQ Camera body + fisheye lens gives maximum flexibility. ₹8,000–14,000 total.
- Aliexpress M12 lenses: 160°, 200° fisheye M12 lenses at ₹400–1,500, fit HQ Camera with M12 adapter. Quality varies — buy from reviewed sellers.
Frequently Asked Questions
Can I correct fisheye distortion in real-time on Raspberry Pi?
Yes — OpenCV’s undistort() function runs at approximately 15–25 FPS for 1080p frames on Raspberry Pi 4 when using ARM-optimised OpenCV. For lower resolutions (640×480), near-real-time correction at 30 FPS is achievable. Pre-computing the remapping matrix with cv2.initUndistortRectifyMap() and applying with cv2.remap() is 2–3× faster than the non-cached approach.
What M12 lens focal length is equivalent to 90° FOV on Raspberry Pi HQ Camera?
For the Raspberry Pi HQ Camera (IMX477, 1/2.3″ sensor), a 3.6mm focal length M12 lens gives approximately 90° diagonal FOV. A 2.8mm lens gives approximately 110° FOV. Exact FOV depends on the specific lens design and sensor size. Use an online FOV calculator (e.g., Arducam’s lens FOV calculator) with your specific sensor and focal length to calculate precisely.
Add comment