系列文章
Python+OpenCV图像处理(一)——OpenCV框架与图像插值算法
Python+OpenCV图像处理(二)——几何变换
Python+OpenCV图像处理(三)——彩色空间互换
Python+OpenCV图像处理(四)——图像滤波
Python+OpenCV图像处理(五)——图像阈值和二值化
Python+OpenCV图像处理(六)——边缘检测
目录
图像处理
图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。
一、OpenCV框架与图像插值算法
1.1 OpenCV简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
环境配置为:win7+python3.6+numpy1.14.2+opencv-python3.4.1
安装opencv-python3.4.1
首先去网站下载OpenCV对应的.whl版本压缩包,网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv本人下载的版本是:opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl 64位系统对应python3.6的
百度云链接:https://pan.baidu.com/s/10RefansrC4_0zsNehjyKTg
pip install opencv_python-3.4.1-cp36-cp36m-win_amd64.whl
导入OpenCV
import cv2
验证是否环境已配置好
print(cv2.__version__)
输出:3.4.1
1.2 图像插值算法
在图像经过空间位置变换之后,需要求取在新平面的新排列的各点像素的位置,其并不会改变映射前后的像素的像素值。这种空间位置变换通常包含缩放、平移与旋转等。
其中常见的图像插值算法有最近邻插值、双线性插值和三次样条插值。
ps:markdown格式的公式书写现在还不熟练,这里把重点放到利用opencv库对算法的调用实现上,只对算法进行简单地描述,算法原理暂时用图代替。
1.2.1 最近邻插值:
最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出。
![](https://i-blog.csdnimg.cn/blog_migrate/5c68c1c1dd941c4353d76d1201dde1b1.png#pic_center)
如上图所示,目标图像中的某点投影到原图像中的位置为点P,此时易知, f ( P ) = f ( Q 11 ) f(P) = f(Q11) f(P)=f(Q11).
一个例子:
如下图所示,将一幅3X3的图像放大到4X4,用 f ( x , y ) f(x, y) f(x,y)表示目标图像, h ( x , y ) h(x, y) h(x,y)表示原图像,我们有如下公式:
f ( d s t X , d s t Y ) = h ( d s t X s r c W i d t h d s t W i d t h , d s t Y s r c H e i g h t d s t H e i g h t ) \begin{array}{c} f(dst_{X}, dst_{Y}) = h(\frac{dst_{X}src_{Width}} {dst_{Width}}, \frac{dst_{Y}src_{Height}} {dst_{Height}}) \end{array} f(dstX,dstY)=h(dstWidthdstXsrcWidth,