水下图像增强

简介

  本篇主要是对论文:Enhancing Underwater Images and Videos by Fusionde 的简单笔记记录。
主要是对水下拍摄图像进行图像增强。

基本实现

  1、将输入图像复制成2份:src1和src2。
    2、对src1做自动白平衡。
    3、对src2做双边滤波去噪(多帧的话,不做配准,直接使用nlm思想时间空间域块去噪)。
    4、对去噪后的src2做局域直方图增强(改善颜色和对比度),得到src3。
    5、对src1和src3使用显著图算法和lpls滤波,计算得到融合权重图W。
    6、对src1和src3根据权重图W,进行多尺度融合,得到结果图像。

结果显示

    对应的效果比较如下:
             
  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
水下图像增强算法可以采用以下几种方法: 1. 去雾:水下图像中往往存在雾化现象,可以使用去雾算法将图像中的雾去除,使图像更加清晰。 2. 白平衡:水下图像中颜色偏差较大,可以使用白平衡算法来调整图像的颜色,使其更加真实。 3. 对比度增强:水下图像中的对比度较弱,可以使用对比度增强算法来增强图像的对比度,使其更加清晰。 以下是使用Python实现的一些水下图像增强算法: 1. 去雾 ```python import cv2 import numpy as np def dehaze(img, t_min=0.1, A_max=1): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.medianBlur(gray, 5) gray = cv2.GaussianBlur(gray, (21, 21), 0) h, w = img.shape[:2] hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) v = hsv[:, :, 2] atm_light = np.percentile(v, 99) t = np.zeros((h, w)) for i in range(h): for j in range(w): if v[i, j] < t_min*atm_light: t[i, j] = 1 else: t[i, j] = 1 - A_max * (v[i, j] - t_min*atm_light) / (atm_light*(1-t_min)) t = cv2.medianBlur(t.astype(np.float32), 5) result = np.zeros(img.shape, dtype=np.float32) for i in range(3): img_i = img[:, :, i].astype(np.float32) img_i = (img_i - atm_light) / np.maximum(t, 0.1) + atm_light result[:, :, i] = np.uint8(np.clip(img_i, 0, 255)) return result ``` 2. 白平衡 ```python import cv2 import numpy as np def white_balance(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hist, bins = np.histogram(gray.flatten(), 256, [0, 256]) cdf = hist.cumsum() cdf_normalized = cdf / cdf.max() cdf_m = np.ma.masked_equal(cdf, 0) cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min()) cdf = np.ma.filled(cdf_m, 0).astype('uint8') img_eq = cdf[gray] img_eq = cv2.cvtColor(cv2.merge((hsv[:, :, 0], img_eq, hsv[:, :, 2])), cv2.COLOR_HSV2BGR) return img_eq ``` 3. 对比度增强 ```python import cv2 def contrast_stretching(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) min_val = gray.min() max_val = gray.max() a = 255 / (max_val - min_val) b = 255 - a * max_val result = cv2.convertScaleAbs(img, alpha=a, beta=b) return result ``` 以上是一些简单的水下图像增强算法的Python实现。如果需要更加高级的增强算法,建议使用专业的水下图像增强软件或者库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值