推荐星级:
- 1
- 2
- 3
- 4
- 5
利用Python语言批量对航空影像进行匀光应用
资料介绍
关 键 词】 航空影像 匀光 多任务处理
部分文件列表
文件名 | 大小 |
利用Python语言批量对航空影像进行匀光应用.pdf | 909K |
部分页面预览
(完整内容请下载后查看)第 4 期
张
禾
曹
扬
任成冕
周
扬:利用 Python 语言批量对航空影像进行匀光应用
2019 年 8 月
利用 P yt h o n 语言批量对航空影像进行匀光应用
张
禾
曹
扬
任成冕
周 扬
(贵州省第二测绘院,贵州 贵阳 030002)
摘要 本文介绍使用 MASK 匀光算法利用 Python 语言对航空影像进行批量匀光影像的方法。利用 Python 语言的跨平台
优势及灵活性,在 Python 语言上利用 OpenCV 模块的优势实现了对大批量的航空影像进行匀光匀色计算。同时笔者利用
Python 多任务处理模块,在进行批量航空影像计算过程中充分利用多 CPU 计算机的多任务处理优势,加快影像处理速度。
关键词 航空影像;匀光;多任务处理
中图分类号 P237
文献标识码 B
文章编号 ꢀ095-7319(2019)04-0095-03
0.引言
光数学表达如公式(1):
g(x)=(f x)+δ(x)
其中,g(x)为原始影像,(f x)为背景影像,ꢀ(x)为
匀光后影像,通过变换得到匀光影像如公式(2):
ꢁ(x)=g(x)-(f x)
在航空影像获取过程中,由于拍摄条件、光照情
况、拍摄地物类别、大气条件、镜头设计等因素的影
响,影像中会出现亮度分布不均匀的现象,严重的可
直接影响影像质量,对后期航空影像处理,数字正射
影像制作等工作增加了处理难度。
(1)
(2)
公式中背景影像 (f x)的计算有多种方法,有采用
低通滤波器对原始影像进行滤波处理的,也有对原始
影像进行傅里叶变换再低通滤波生成的。
目前,对于航空影像的匀光处理,一般分为两类:
一类是数学模型法,但是该方法仅适用于亮度变化缓
和的遥感影像的匀光处理;另一类是滤波法,选择出
本文主要采用低通滤波器作为背景影像进行计
算,优势是计算速度快,算法简单,使用 Python 语言容
易实现具体功能,而采用傅里叶变换方法作为低通滤
波器存在计算量大,效果针对航空影像效果并无优势
提高;因此本文采用普通低通滤波器作为 MASK 算法
中的背景影像。
[1]
合适的滤波器是这类算法的一个难题 。MASK 匀光
[2]
算法就是滤波方法的一种 ,它通过增强高频信息,抑
制低频信息,从而增强影像的细节反差,抑制影像的
异常亮度变化,达到匀光目的。
一般采用 MASK 匀光算法对航空影像进行处理
时,由于匀光参数相对固定,在进行匀光是对于特殊
航空影像不能有效进行处理,匀光效果较差,不能满
足需求;本文笔者通过使用 Python 计算语言快速读取
航空影像,通过采用 MASK 算法中不同的模糊参数进
行对比匀光效果后进行航空影像匀光计算,比传统固
定参数的匀光软件可以针对不同类型的航空影像进
行匀光参数调整以适应不同的航空影像,达到较好的
匀光效果。
通常使用的低通滤波器时,对低通滤波器参数并
无强制性规定,对于常规航空影像匀光计算,低通滤波
器参数采用总像素的 10- 30%作为低通滤波器参数均
能达到较好效果;但对于特殊情况下的航空影像,采用
经验参数并不能达到较好匀光效果;笔者为了满足不
同航空相机的匀光效果(例如多相机拼接航空影像等
数据使用传统匀光软件无法满足其匀光效果);利用
Python 语言的易开发性,针对不同航空影像采用不同
的匀光参数对影像进行匀光计算从而达到匀光效果。
2.Python 语言及 OpenCV 库
1.MASK 匀光算法
MASK 匀光法又称为模糊正像匀光方法,主要针
对影像光照不均匀提出来的一种方法,通过对影像局
部区域的不同程度光照补偿,获得光照均匀的影像。
MASK 匀光算法主要是将遥感影像作为一种亮度不
Python 既支持面向过程的编程也支持面向对象的
编程。在面向过程的语言中,程序是由过程,或者是仅
仅是可重复使用代码的函数构建起来的。在面向对象
的语言中,程序是由数据和功能组合而成的对象构建
[3]
均匀的背景影像和受光均匀影像的叠加 。MASK 匀
/ 95 /
2019 年 8 月
经
纬
天
地
第 4 期
起来的。Python 是完全面向对象的,有益于增强源代码
的复用性。语言函数、模块、数字、字符串都是对象。
Python 支持继承、重载、派生。
opencv\\baseimg1.JPG",3)
gs_blurx=301
blur=cv2.GaussianBlur(img,(gs_blurx,gs_blurx),0)
neam=int(np.mean(img))
OpenCV 是一个基于 BSD 许可(开源)发行的跨平
台计算机视觉库,可以运行在 Linux、Windows、Android
和 Mac OS 操作系统上。它轻量级而且高效—由一系
列 C 函数和少量 C++ 类构成,同时提供了 Python、
Ruby、MATLAB 等语言的接口,实现了图像处理和计
算机视觉方面的很多通用算法。OpenCV 采用 C 语言
进行优化,而且,在多核机器上面,其运行速度会更快。
它的一个目标是提供友好的机器视觉接口函数,从而
使得复杂的机器视觉产品可以加速面世。该库包含了
横跨工业产品检测、医学图像处理、安防、用户界面、摄
像头标定、三维成像、机器视觉等领域的超过 500 个接
口函数。
dodg=np.subtract(img,blur) + neam
cv2.imwrite("\\Desktop\\python_opencv\\newimg_
l.jpg",dodg)
代码中 gs_blurx 变量为高斯模糊半径,决定了匀
光处理过程中的匀光效果,半径过小匀光效果强,半径
大匀光效果弱。
采用 Python 语言的多任务处理模块进行大批量
的影像计算工作可充分利用多核计算机的性能,笔者
在配置为 I7 处理器四核八线程,32GB 内存的计算机
上,对 1000 多张 500 兆字节的航空影像进行匀光计
算,总匀光时间约为 200 分钟计算完成;如采用单任务
方式计算大约需要 1200 分钟,提高效率与 6 倍。
3.匀光效果
笔者在对航空影像进行匀光计算时需要大量使用
图像计算,使用 OpenCV 提供的影像读取与计算处理,
在航空影像进行匀光匀色计算中分为匀光和匀色两个
步骤。其中,匀光采用 MASK 算法进行计算处理,利用
Python 加 OpenCV 结合对影像进行计算操作具有实现
简单,不需要复杂的数据接口模块开发量,利用
OpenCV 提供的多种影像数据格式的支持,可轻松读
取各种类型的航空影像数据。
利用 python 语言对航空影像进行匀光计算与使
用常规商用软件匀光效果基本一致,但在处理部分特
殊多拼相机拍摄的航空影像时常规商用软件就不能很
好地对影像进行匀光;而利用笔者提出 MASK 匀光算
法测试调整不同的匀光参数后可较好地对航空影像照
度不均匀进行处理,如图 1 四拼相机在拼接处有明显
白色光带,传统商用软件无法调整匀光参数,匀光影像
无法消除白色条带;使用本文中的计算方法可有效地
解决拼接处白色条带的问题,处理后效果。
在 Python 中实现代码如下:
img=cv2.imread("\\Desktop\\python_opencv\\
160225005046.JPG",3)
base_img=cv2.imread("\\Desktop\\python_
图 1 匀光前后效果比较图
/ 96 /
全部评论(0)