文章目录

  • 前言
  • 一、算法输入
  • 二、权重获得
    • 1.拉普拉斯权重
    • 2.局部对比度权重
    • 3 曝光图权重
    • 4 暴露权重
  • 基于拉普拉斯金字塔的多尺度融合

前言

本文提出了一种新的水下视频图像增强策略。基于融合原理,我们的策略仅从图像的退化版本中获取输入和权重度量。为了克服水下介质的局限性,我们定义了两种输入,分别代表原始水下图像/帧的颜色校正和对比度增强版本,以及四种权重图,目的是增加由于介质散射和吸收而退化的远处目标的可见性。我们的策略是一个单一的图像方法,不需要专门的硬件或水下条件或场景结构的知识。我们的融合框架还通过执行有效的边缘保持降噪策略来支持相邻帧之间的时间相干性。增强的图像和视频的特点是降低噪音水平,更好的暗区曝光,改善了全局对比度,而最细微的细节和边缘显著增强。此外,我们的增强技术在几个具有挑战性的应用中被证明是实用的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、算法输入

1.首先对单幅Image进行自适应白平衡算法处理得到输入一,其实是灰度世界与直方图均衡化的结合目的是增加对比度的同时,不让图片中像素点出现过大或者过小的地方;

2.对输入一进行ALB变换对L通道进行ACHLE算法处理,这个算法是自适应的,这样不在一个区域的亮度不会相互影响;

二、权重获得

1.拉普拉斯权重

拉普拉斯滤波器是依据图像像素点的变化程度来调整图像的细节和边缘,进而增强图像的对比度。

def LaplacianContrast(img):# img=cv2.CreateMat(h, w, cv2.CV_32FC3)laplacian = cv2.Laplacian(img,5) laplacian = cv2.convertScaleAbs(laplacian)return laplacian

2.局部对比度权重

可以提高图像亮处区域和暗处区域的过度部分。

def LocalContrast(img):h = [1.0 / 16.0, 4.0 / 16.0, 6.0 / 16.0, 4.0 / 16.0, 1.0 / 16.0]mask = np.ones((len(h),len(h)), img[0][0].dtype)for i in range(len(h)):for j in range(len(h)):mask[i][j]=(h[i] * h[j])localContrast = cv2.filter2D(img, 5,kernel=mask) for i in range(len(localContrast)):for j in range(len(localContrast[0])):if localContrast[i][j] > math.pi / 2.75:localContrast[i][j] = math.pi / 2.75localContrast = cv2.subtract(img, localContrast)return cv2.multiply(localContrast, localContrast)

 3.曝光图权重

采用加入曝光图保护中间色调的显著图


def Saliency(img):gfgbr = cv2.GaussianBlur(img,(3, 3), 3)LabIm = cv2.cvtColor(gfgbr, cv2.COLOR_BGR2Lab)lab = cv2.split(LabIm)l = np.float32(lab[0])a = np.float32(lab[1])b = np.float32(lab[2])lm = cv2.mean(l)[0] # cv2.mean(l).val[0]am = cv2.mean(a)[0]bm = cv2.mean(b)[0]sm = np.zeros(l.shape, l[0][1].dtype)l = cv2.subtract(l, lm)a = cv2.subtract(a, am)b = cv2.subtract(b, bm)sm = cv2.add(sm, cv2.multiply(l, l)) sm = cv2.add(sm, cv2.multiply(a, a))sm = cv2.add(sm, cv2.multiply(b, b))return sm

4、暴露权重

水下图像常常呈现出亮度不够的特点,因此把曝光度指标加入到权重计算中,来调节图像曝光度,进而改善亮度信息。曝光度权重是为亮度适中的像素点分配较大的权重,对过亮或过暗的像素点分配较小的权重。算法通过在图像Lab空间的亮度通道L上获得融合图像的曝光度权重。

def Exposedness(img):sigma = 0.25average = 0.5exposedness = np.zeros(img.shape,img[0][0].dtype)for i in range(len(img)):for j in range(len(img[0])):value = math.exp(-1.0 * math.pow(img[i, j] - average, 2.0) / (2 * math.pow(sigma, 2.0)))exposedness[i][j] = valuereturn exposedness

5、权重归一化

def calWeight(img, L):L = np.float32(np.divide(L, (255.0)))WL = np.float32(LaplacianContrast(L)) # Check this line 拉普拉斯权重WC = np.float32(LocalContrast(L))   #局部对比度权重WS = np.float32(Saliency(img))      #曝光图WE = np.float32(Exposedness(L))  #暴露权重weight = WL.copy()weight = np.add(weight, WC)weight = np.add(weight, WS)weight = np.add(weight, WE)return weightdef enhance(image, level):img1 = simplest_cb(image, 5)img1 = np.uint8(img1)LabIm1 = cv2.cvtColor(img1, cv2.COLOR_BGR2Lab)L1 = cv2.extractChannel(LabIm1, 0)# Apply CLAHEresult = applyCLAHE(LabIm1, L1)img2 = result[0]L2 = result[1]w1 = calWeight(img1, L1)w2 = calWeight(img2, L2)sumW = cv2.add(w1, w2)w1 = cv2.divide(w1, sumW)w2 = cv2.divide(w2, sumW)return fuseTwoImages(w1, img1, w2, img2, level)

三、基于拉普拉斯金字塔的多尺度融合

权重基于高斯金字塔分成。图像基于拉普拉斯金字塔融合;

def filterMask(img):h = [1.0 / 16.0, 4.0 / 16.0, 6.0 / 16.0, 4.0 / 16.0, 1.0 / 16.0]mask = numpy.zeros((len(h), len(h)), img[0][1].dtype)for i in range(len(h)):for j in range(len(h)):mask[i][j] = h[i] * h[j]return maskdef buildGaussianPyramid(img, level):gaussPyr =[]mask = filterMask(img)tmp = cv2.filter2D(img, -1, mask)gaussPyr.append(tmp.copy())tmpImg = img.copy()for i in range(1,level):cv2.resize(tmpImg, (0, 0), tmpImg, 0.5, 0.5, cv2.INTER_LINEAR) tmp = cv2.filter2D(tmpImg,-1,mask)gaussPyr.append(tmp.copy())return gaussPyrdef buildLaplacianPyramid(img, level):lapPyr = []  lapPyr.append(img.copy())tmpImg = img.copy()tmpPyr = img.copy()for i in range(1,level):cv2.resize(tmpImg, (0, 0), tmpImg, 0.5, 0.5, cv2.INTER_LINEAR)lapPyr.append(tmpImg.copy())for i in range(level - 1):cv2.resize(lapPyr[i + 1], (len(lapPyr[i][0]), len(lapPyr[i])), tmpPyr, 0, 0, cv2.INTER_LINEAR)lapPyr[i]=cv2.subtract(lapPyr[i], tmpPyr)return lapPyrdef reconstructLaplacianPyramid(pyramid):level = len(pyramid)for i in range(level - 1,0):tmpPyr = cv2.resize(pyramid[i], (len(pyramid[0][0]),len(pyramid[0])),fx= 0,fy= 0,interpolation=cv2.INTER_LINEAR)pyramid[i - 1] = cv2.add(pyramid[i - 1], tmpPyr)return pyramid[0]def fuseTwoImages(w1, img1, w2, img2, level):weight1 = buildGaussianPyramid(w1, level)weight2 = buildGaussianPyramid(w2, level)img1 = numpy.float32(img1)img2 = numpy.float32(img2)bgr = cv2.split(img1)bCnl1 = buildLaplacianPyramid(bgr[0], level)gCnl1 = buildLaplacianPyramid(bgr[1], level)rCnl1 = buildLaplacianPyramid(bgr[2], level)bgr = []bgr = cv2.split(img2)bCnl2 = buildLaplacianPyramid(bgr[0], level)gCnl2 = buildLaplacianPyramid(bgr[1], level)rCnl2 = buildLaplacianPyramid(bgr[2], level)bCnl=[]gCnl=[]rCnl=[]for i in range(level):cn = cv2.add(cv2.multiply(bCnl1[i], weight1[i]), cv2.multiply(bCnl2[i], weight2[i]))bCnl.append(cn.copy())cn = cv2.add(cv2.multiply(gCnl1[i], weight1[i]), cv2.multiply(gCnl2[i], weight2[i]))gCnl.append(cn.copy())cn = cv2.add(cv2.multiply(rCnl1[i], weight1[i]), cv2.multiply(rCnl2[i], weight2[i]))rCnl.append(cn.copy())bChannel = reconstructLaplacianPyramid(bCnl)gChannel = reconstructLaplacianPyramid(gCnl)rChannel = reconstructLaplacianPyramid(rCnl)fusion = cv2.merge((bChannel, gChannel, rChannel))return fusion

Enhancing Underwater Images and Videos by Fusion相关推荐

  1. 水下图像融合增强Enhancing Underwater Images and Videos by Fusion

    这篇文章可以说结果好到令人拍案叫绝,处理后细节也好了,色偏也好了,更主要是那些评价指标仿佛都是为它设计的,一个比一个好,本文就详细地介绍一下水下图像融合算法. 1.首先先分别进行两次处理 ①对原图进行 ...

  2. 论文解读 《Enhancing Underwater Imagery using Generative Adversarial Networks》ICRA2018

    项目:http://irvlab.cs.umn.edu/enhancing-underwater-imagery-using-gans 论文: https://arxiv.org/pdf/1801.0 ...

  3. 最近下载的以及一些朋友共享的图像方面的论文备份。

    过完年以后,一直忙于各种杂事和杂务,本来可以做研究的时间被带崽和加班所占据,偶尔有闲看到一些好文章也只能先备份在那里在等日后有空了在去研究.还有就是QQ里的好友也给我提供了一些论文,我都把他放在电脑的 ...

  4. 简单理解与实验生成对抗网络GAN

    from:https://blog.csdn.net/on2way/article/details/72773771 之前 GAN网络是近两年深度学习领域的新秀,火的不行,本文旨在浅显理解传统GAN, ...

  5. Enhancing Quality for HEVC Compressed Videos

    提高HEVC压缩视频的质量 Abstract 最新的高效视频编码(HEVC)标准已越来越多地应用于在互联网上生成视频流.然而,HEVC压缩视频可能会导致严重的质量下降,尤其是在低比特率下.因此,有必要 ...

  6. DSFNet(Dynamic and Static Fusion Network for Moving Object Detection in Satellite Videos)代码调试

    帮人解决的论文代码,分享以下经验,小的安装问题就不叙述了,分析主要问题: 问题一:DCNv2的配置 运行之前还需配置好DCN,在./lib/model/DCNv2/下面因为DSFNET.py等都需要D ...

  7. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos NIPS2014 http://www.robots.ox.ac. ...

  8. L2UWE: A Framework for the Efficient Enhancement of Low-Light Underwater Images阅读札记

    L2UWE: A Framework for the Efficient Enhancement of Low-Light Underwater Images Using Local Contrast ...

  9. 译:Convolutional Two-Stream Network Fusion for Video Action Recognition

              这是双流神经网络的改进版,接下来会出他的读书笔记. 摘要:近年来,卷积神经网络(卷积神经网络)对视频中人类行为识别的应用提出了不同的解决方案,用于整合外观和运动信息.为了更好地利用 ...

  10. 译:Two-stream convolutional networks for action recognition in videos

    该篇文章为视频识别十分经典的一篇论文也是入门文章,开创了比较经典的双流(时间流+空间流)神经网络,本人发现很多大神博主翻译的论文不是特别完整,故按照原文与个人理解整理完整翻译见下. 摘要:我们研究了用 ...

最新文章

  1. PyCharm中Directory与Python package的区别
  2. 设计模式之状态模块加观察者模式
  3. 华为合作oppovivo小米鸿蒙,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙...
  4. ACM竞赛学习整理--Gauss求解POJ1166
  5. 上验证cudnn是否安装成功_windows和linux上的tensorflow安装(极简安装方法)
  6. 神奇的计算机技术 教案,神奇的笔记本教学设计
  7. 天猫上线“商家售后服务评价”功能,消费者体验将纳入商家考核指标
  8. kali 设置中文字体
  9. java获取response数据_Java中实现Http请求并获取响应数据
  10. 【POJ - 2226】Muddy Fields(匈牙利算法 或 网络流dinic,二分图匹配,最小点覆盖,矩阵中优秀的建图方式 )
  11. zabbix邮件通知,短信通知配置详解
  12. python自动化之djangoform表单验证
  13. interview material
  14. gis怎么提取水系_地形还要建模,嫌电脑不够卡!直接提取它不香吗?Sketchup不建模,地形提取......
  15. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day6-方法
  16. iOS 开发获取字体类型
  17. latex数学符号加粗_LaTex数学公式符号整理
  18. 爬虫应对银行安全控件-实践
  19. 单片机上面的继电器工作原理及其作用
  20. 《生产实习》实习日志——JAVA大数据工程师

热门文章

  1. 从fit文件中提取lick指数的matlab程序
  2. 《杀生》,胡说一下电影与思考
  3. html文件打开自动跳转至空白
  4. Vue项目中应用“策略模式”
  5. java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org
  6. logparser使用_分析您的Web服务器数据并使用LogParser和Log Parser Lizard GUI进行授权
  7. 计算机网络网关设置路由器,天翼网关(宽带)怎么连接路由器?
  8. php 对接 hotmail邮箱,php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
  9. 2台路由器串联接法(有线路由+无线路由)
  10. Android一些控件上显示的英文字母都被转为大写字母的原因分析及问题解决