πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Underwater Image Enhancement and Marine Robotics

Computer VisionUnderwater Image Enhancement and Marine Robotics🟒 Free Lesson

Advertisement

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.

Need Expert Computer Vision Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement