• 机器视觉作业2:感知增强系统设计(去雾、增强算法MSR、MSRCP、automatedMSRCR)


    机器视觉作业2:感知增强系统设计

    我的代码地址:https://github.com/Wu-didi/dehaze-enhance-qt.git

    感知增强系统设计

    1. 设计背景
      随着科学技术的发展,人们习惯使用图像的形式记录大千世界的绚丽多彩。图像采集设备模拟人眼成像,采用 CCD/CMOS 半导体影像传感器将外界光刺激转换成电信号,最终以某种特定的图片格式存储在内置存储器中。由于人类视觉系统具有颜色恒常性[1],在低光照条件下仍然能够分辨颜色。但是在夜间照明,室内光照不足和多云天气等情况下,光子计数与信噪比较低,物体表面反射光较弱,传感器只能记录进入镜头的光子累加的结果,使得图像采集设备拍摄的图像颜色偏差严重,从而无法有效的记录物体的真实色彩。低光照下拍摄的图像存在亮度低、对比度低以及噪声和伪影等情况,严重影响视觉感受。除此之外,在不均匀光照情况下拍摄图像同样影响成像效果。
      城市化的推进和工业化的发展所造成的负面影响也愈发严重,城市区域性阴霾天气将变得越来越频繁。在阴霾环境里,由于空气中存在许多悬浮颗粒如溶胶、雾、雾霾等,导致监控摄像头捕获的图像不那么可见,对图像的视觉效果产生了极大的负面影响,图像不可避免地呈现出了很多退化特征,如对比度模糊、图像颜色失真以及图像细节丢失等。
      低光照、不均匀光照以及雾霾天气条件下的拍摄图像不仅影响观看效果,而且对于其他的计算机视觉任务也有阻碍。因此,本次实验利用图像增强算法,开展图像去雾、图像增强研究,设计感知增强系统。

    2. 系统功能要求
      a) 输入为静态图像,输出为增强后的图像。软件实现不良视觉条件下的视频增强算法;
      b) 通过外设(摄像头)实时采集视频,实时增强,同时显示采集原始视频和增强视频。

    3. 开发环境
      开发平台为Window10 VSCode,开发语言选择Python,使用Opencv 进行图像处理,使用pyqt5设计系统界面

    4. 功能设计
      4.1 算法设计
      图像去雾任务选择暗通道去雾算法,图1为原图和处理结果对比图;
      在这里插入图片描述

    (a)
    在这里插入图片描述

    (b)
    图1 (a)为原图;(b)暗通道法去雾结果
    特殊光照,不均匀光照条件下的图像增强选择MSR(多尺度的Retinex)、MSRCP(彩色恢复多尺度Retinex), automatedMSRCR 三种算法,对比各种算法的优劣。MSR就是再多个单尺度Retinex做平均,区别是在第二步高斯模糊是选择的sigma是不同的;MSRCP是对对多尺度MSR结果做了色彩平衡,归一化,增益和偏差线性加权;automatedMSRCR算法根据根据输入的图像动态设置超参数。
    在这里插入图片描述
    (a)
    在这里插入图片描述
    (b)

    在这里插入图片描述
    (c)
    在这里插入图片描述
    (d)
    图2 (a)为原图,(b)MSR处理结果,(c)MSRCP处理结果,(d)automatedMSRCR
    在这里插入图片描述

    (a)
    在这里插入图片描述
    (b)

    在这里插入图片描述
    (c)
    在这里插入图片描述
    (d)
    图3(a)为原图,(b)MSR处理结果,(c)MSRCP处理结果,(d)automatedMSRCR
    4.2 功能实现
    a) 界面设计

    在这里插入图片描述

    图4 系统界面
    b) 离线图片增强
    选择需要处理的图像,然后点击需要对应的算法,即可完成对离线图片的增强。页面左侧为原始图像,右侧为处理后的图像。

    在这里插入图片描述

    图5 离线图片增强
    c) 离线视频增强
    离线视频增强和图像增强类似,选择对应的视频和算法,即可完成增强,左侧为原始图像,右侧为处理后的视频,同步播放。需要说明的是在实际的测试过程中,发现Retinex系列算法,运算时间过长,效率较低。因此离线视频增强部分只是选择了暗通道去雾算法,完成去雾任务。后续还需进一步完善。
    界面如图所示,所用视频来源于互联网。
    在这里插入图片描述

    图6 离线视频增强展示
    d) 实时感知增强
    由于硬件条件限制,缺少可用的外设(摄像机),因此为验证该部分功能,将个人手机(iPhone se2)拓展为摄像机进行实验。具体方法为:在手机端下载安装“IP摄像机Lite软件”,手机和电脑链接在同一局域网下,将手机相机拍摄到的画面实时传输到电脑端完成图像增强,详细内容可参照代码。(由于所处环境,实时拍摄的画面较好,不需要进行增强,因为不做展示)

    1. video=“http://admin:admin@192.168.2.34:8081/” #此处@后的ipv4 地址
    2. video_stream =cv2.VideoCapture(video)

    参考文献:
    [1] He K, Sun J, Tang X. Single image haze removal using dark channel prior[J]. IEEE transactions on pattern analysis and machine intelligence, 2010, 33(12): 2341-2353.
    [2] Petro A B, Sbert C, Morel J M. Multiscale retinex[J]. Image Processing On Line, 2014: 71-88.
    [3] Jobson D J, Rahman Z, Woodell G A. A multiscale retinex for bridging the gap between color images and the human observation of scenes[J]. IEEE Transactions on Image processing, 1997, 6(7): 965-976.
    [4] Parthasarathy S, Sankaran P. An automated multi scale retinex with color restoration for image enhancement[C]//2012 National Conference on Communications (NCC). IEEE, 2012: 1-5.

    安装

    • 打开cmd
    • 安装相应的库,
      pip install opencv-python numpy os tqdm

    文件组成

    work
    ├── data #存放待处理的视频文件
    ├── input # 老师提供的数据
    │   │   ├── set1
    │   │   ├── set2
    ├── |   ├── set3
    ├── output # 处理结果,包含原图和处理之后的结果
    │   │   ├── set1
    │   │   ├── set2
    ├── |   ├── set3
    ├── ui   # 系统界面设计代码
    ├── config.json # retinex算法的参数
    ├── dehaze.py   # 去雾算法
    ├── main.py   # 主函数,图像增强
    ├── retinex.py # retinex算法
    ├── visual     # 系统界面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    使用说明

    进行图像增强主要有两个文件分别是 main.py 和 visual.py

    main.py

    通过设置d和e选择去雾还是不均匀光照、低光照的增强,设置输入图片路径和输出路径

    d = False # 去雾
    e = True # 图像增强
    # 图片路径
    data_path = 'input/set3'
    save_path = 'result/set3'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    visual.py

    利用pyqt5写了增强界面,可进行离线图片的增强、离线视频增强以及实时增强。可实现以下功能:

    离线图片增强

    选择需要处理的图像,然后点击需要对应的算法,即可完成对离线图片的增强。页面左侧为原始图像,右侧为处理后的图像。

    离线视频增强

    离线视频增强和图像增强类似,选择对应的视频和算法,即可完成增强,左侧为原始图像,右侧为处理后的视频,同步播放。
    需要说明的是在实际的测试过程中,发现Retinex系列算法,运算时间过长,效率较低。因此离线视频增强部分只是选择了
    暗通道去雾算法,完成去雾任务。后续还需进一步完善。

    实时感知增强

    由于硬件条件限制,缺少可用的外设(摄像机),因此为验证该部分功能,将个人手机(iPhone se2)拓展为摄像机进行实验。
    具体方法为:在手机端下载安装“IP摄像机Lite软件”,手机和电脑链接在同一局域网下,将手机相机拍摄到的画面实时传输到电脑端完成图像增强,详细内容可参照代码
    IP摄像机的使用参考:使用手机摄像头做网络ip摄像头 并用opencv获取rtsp视频流

    说明:默认设置的是打开电脑的摄像头,可以设置相应的地址,利用IP摄像机app传输视频流
    可在161行更改。

    video="http://admin:admin@192.168.2.34:8081/" #此处@后的ipv4 地址
    video_stream =cv2.VideoCapture(video)
    
    • 1
    • 2
  • 相关阅读:
    基于nodemailer实现邮件发送
    setTimeout与setInterval区别
    Linux是什么,其特点是啥
    漫谈测试成长之探索——测试策略
    12.4泛型 map set
    网络安全(黑客)自学
    STM32-LTC6804方案成熟BMS方案
    qt笔记一
    java中的接口
    C语言 - 你一定能看懂的三子棋详解(万字长文,傻瓜式解析)
  • 原文地址:https://blog.csdn.net/weixin_44645198/article/details/127828430