Underwater Image Enhancement and Marine Robotics
Module: Computer Vision | Difficulty: Premium
Underwater Image Formation
where is attenuation coefficient, is depth, is backscatter.
Color Correction
UIQM (Underwater Image Quality Metric)
| Model | PSNR | SSIM | UCIQE | Speed | |-------|------|------|-------|-------| | CLAHE | 18.5 | 0.72 | 0.58 | Fast | | Sea-thru | 24.2 | 0.86 | 0.71 | Slow | | FUnIE | 22.1 | 0.81 | 0.65 | Fast | | Water-Net | 23.8 | 0.84 | 0.69 | Medium |
import torch
import torch.nn as nn
class WaterNet(nn.Module):
def __init__(self):
super().__init__()
self.color_branch = nn.Sequential(
nn.Conv2d(3, 64, 3, padding=1), nn.ReLU(inplace=True),
nn.Conv2d(64, 64, 3, padding=1), nn.ReLU(inplace=True),
nn.Conv2d(64, 3, 1), nn.Sigmoid(),
)
self.enhance_branch = nn.Sequential(
nn.Conv2d(3, 64, 3, padding=1), nn.ReLU(inplace=True),
nn.Conv2d(64, 64, 3, padding=1), nn.ReLU(inplace=True),
nn.Conv2d(64, 3, 1), nn.Sigmoid(),
)
def forward(self, x):
color_map = self.color_branch(x)
enhance_map = self.enhance_branch(x)
return x * color_map + enhance_map
class UnderwaterDepthEstimator(nn.Module):
def __init__(self):
super().__init__()
self.encoder = nn.Sequential(
nn.Conv2d(3, 64, 3, stride=2, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(64, 128, 3, stride=2, padding=1),
nn.ReLU(inplace=True),
)
self.decoder = nn.Sequential(
nn.Upsample(scale_factor=2, mode='bilinear',
align_corners=True),
nn.Conv2d(128, 64, 3, padding=1), nn.ReLU(inplace=True),
nn.Upsample(scale_factor=2, mode='bilinear',
align_corners=True),
nn.Conv2d(64, 1, 3, padding=1), nn.Softplus(),
)
def forward(self, x):
features = self.encoder(x)
return self.decoder(features)
Research Insight: Underwater vision faces unique challenges: wavelength-dependent absorption (reds attenuate fastest), backscatter from suspended particles, and low contrast. Sea-thru demonstrated that physics-based underwater image restoration (estimating per-pixel depth and attenuation) can recover vivid colors from single images. For marine robotics, the combination of underwater SLAM with learned feature extraction enables autonomous underwater vehicles (AUVs) to navigate complex reef environments. The key open challenge is handling the extreme dynamic range in underwater scenes with strong specular reflections.