我的代码地址:https://github.com/Wu-didi/dehaze-enhance-qt.git
设计背景
随着科学技术的发展,人们习惯使用图像的形式记录大千世界的绚丽多彩。图像采集设备模拟人眼成像,采用 CCD/CMOS 半导体影像传感器将外界光刺激转换成电信号,最终以某种特定的图片格式存储在内置存储器中。由于人类视觉系统具有颜色恒常性[1],在低光照条件下仍然能够分辨颜色。但是在夜间照明,室内光照不足和多云天气等情况下,光子计数与信噪比较低,物体表面反射光较弱,传感器只能记录进入镜头的光子累加的结果,使得图像采集设备拍摄的图像颜色偏差严重,从而无法有效的记录物体的真实色彩。低光照下拍摄的图像存在亮度低、对比度低以及噪声和伪影等情况,严重影响视觉感受。除此之外,在不均匀光照情况下拍摄图像同样影响成像效果。
城市化的推进和工业化的发展所造成的负面影响也愈发严重,城市区域性阴霾天气将变得越来越频繁。在阴霾环境里,由于空气中存在许多悬浮颗粒如溶胶、雾、雾霾等,导致监控摄像头捕获的图像不那么可见,对图像的视觉效果产生了极大的负面影响,图像不可避免地呈现出了很多退化特征,如对比度模糊、图像颜色失真以及图像细节丢失等。
低光照、不均匀光照以及雾霾天气条件下的拍摄图像不仅影响观看效果,而且对于其他的计算机视觉任务也有阻碍。因此,本次实验利用图像增强算法,开展图像去雾、图像增强研究,设计感知增强系统。
系统功能要求
a) 输入为静态图像,输出为增强后的图像。软件实现不良视觉条件下的视频增强算法;
b) 通过外设(摄像头)实时采集视频,实时增强,同时显示采集原始视频和增强视频。
开发环境
开发平台为Window10 VSCode,开发语言选择Python,使用Opencv 进行图像处理,使用pyqt5设计系统界面
功能设计
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] 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.
work
├── data #存放待处理的视频文件
├── input # 老师提供的数据
│ │ ├── set1
│ │ ├── set2
├── | ├── set3
├── output # 处理结果,包含原图和处理之后的结果
│ │ ├── set1
│ │ ├── set2
├── | ├── set3
├── ui # 系统界面设计代码
├── config.json # retinex算法的参数
├── dehaze.py # 去雾算法
├── main.py # 主函数,图像增强
├── retinex.py # retinex算法
├── visual # 系统界面
进行图像增强主要有两个文件分别是 main.py 和 visual.py
通过设置d和e选择去雾还是不均匀光照、低光照的增强,设置输入图片路径和输出路径
d = False # 去雾
e = True # 图像增强
# 图片路径
data_path = 'input/set3'
save_path = 'result/set3'
利用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)