Scipy---是一个用于数学/科学/工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。
模块名 | 应用领域 | 模块名 | 应用领域 |
scipy.cluster | 向量计算/Kmeans | scipy.odr | 正交距离回归 |
scipy.constants | 物理和数学常量 | scipy.optimize | 优化 |
scipy.fftpack | 傅立叶变换 | scipy.signal | 信号处理 |
scipy.integrate | 积分程序 | scipy.sparse | 稀疏矩阵 |
scipy.interpolate | 插值 | scipy.spatial | 空间数据结构和算法 |
scipy.io | 数据输入输出 | scipy.special | 一些特殊的数学函数 |
scipy.linalg | 线性代数程序 | scipy.stats | 统计 |
scipy.ndimage | n维图像包 |
重点学习:Scipy.ndimage---Multi-dimensional image processing(多维图像处理包)----该包包含用于多维图像处理的各种功能。其中包括以下几个模块:
- Filters:过滤器
- Fourier filters:傅里叶滤波器
- Interpolation:图像的插值、旋转以及仿射变换
- Measurements:图像相关信息的测量
- Morphology:形态学图像处理
scipy.ndimage只提供了一些基础的图像处理功能。还有一些更强大的图像处理库。例如:更大的图像处理库如下:
- Opencv:它是使用C/C++开发的计算机视觉库;
- SimpleCV:对多个计算机视觉库进行包装,提供了一套更方便、统一的Python调用接口;
- scikit-image:采用Python开发的图像处理库,高速运算部分多采用Cython编写;
- Mahotas:采用Python和C++开发的图像处理库;
后续将针对形态学图像处理进行介绍:
一、膨胀
学习地址:https://blog.csdn.net/songchunxiao1991/article/details/88310777
二、腐蚀
学习地址:https://blog.csdn.net/songchunxiao1991/article/details/88530915
三、闭运算
scipy.ndimage.binary_closing(input, structure=None, iterations=1, output=None, origin=0, mask=None, border_value=0, brute_force=False)
描述:先膨胀后腐蚀,用法和参数描述与膨胀和腐蚀是一样的;
四、开运算
scipy.ndimage.binary_opening(input, structure=None, iterations=1, output=None, origin=0, mask=None, border_value=0, brute_force=False)
描述:先腐蚀后膨胀,用法和参数描述用法与膨胀和腐蚀是一样的;
Tip1:为二进制形态运算生成二进制结构
scipy.ndimage.generate_binary_structure(rank, connectivity)
参数:
- rank:整型---np.dim返回的机构元素将应用于数组的维数;
- connectivity:整型---连接确定输出数组的哪些元素属于该结构,即被认为是中心元素的邻居。 距离中心的连接平方距离的元素被认为是邻居。 连接的范围可以从1(没有对角元素是邻居)到排名(所有元素都是邻居)。
Note:generate_binary_structure只能创建尺寸等于3的结构元素,即最小尺寸。 对于较大的结构元素,这是有用的,例如 对于侵蚀大型对象,可以使用iterate_structure,也可以直接创建具有numpy函数的自定义数组,例如numpy.ones。
五、灰度膨胀
scipy.ndimage.grey_dilation(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0)
描述:灰度膨胀是一种数学形态学运算。 对于完整且扁平的结构元素的简单情况,可以将其视为滑动窗口上的最大滤波器。(通俗理解,就是对灰度矩阵进行膨胀,即矩阵中的元素除0,1之外还有2,3...等其他的元素)
参数:
- input:灰度图像矩阵;
- size:类型:tuple of ints(整型元组)---用于灰度扩张的扁平和完整结构元素的形状。
- footprint : 类型:array of ints(整型矩阵)---用于灰度扩张的扁平结构元素的非无限元素的位置。 非零值给出中心的邻居集合,在该邻居上选择最大值;
- structure:类型:array of ints(整型矩阵)---用于灰度膨胀的结构元素。 结构可以是非平坦的结构元素;
- output:类型:array(矩阵)---可以提供用于存储扩张输出的阵列;
- mode:{'reflect','constant','nearest','mirror','wrap'}---mode参数确定如何处理数组边界,默认为:‘reflect’;
- cval:类型:scal(标量)---如果模式为“常量”,则填充输入的过去的边缘值,默认值为“0.0”;
- origin:类型:scal(标量)---origin参数控制过滤器的位置。 默认值为0;
返回值:Grayscale dilation of input.(灰度图像矩阵)
Note:与二进制的膨胀/腐蚀/开运算/闭运算相类似,灰度的膨胀/腐蚀/开运算/闭运算之间的用法及参数描述是一样的。
六、孔洞填充
学习地址:https://blog.csdn.net/songchunxiao1991/article/details/88530995
七、旋转
学习地址:https://blog.csdn.net/songchunxiao1991/article/details/88531086
八、缩放
学习地址:https://blog.csdn.net/songchunxiao1991/article/details/88531086
九、Hit和Miss
Hit和Miss是二值形态学图像处理中最基本的运算,因为几乎所有的其他的运算都可以用Hit和Miss的组合推演出来。它对图像中的每个像素周围的像素进行模式判断,如果周围像素的黑白模式符合指定的模式,将此像素设为白色,否则设置为黑色。因为,它需要同时对白色和黑色像素进行判断,因此需要指定两个结构元素。
- binary_hit_or_miss(input [structure1,structure2])
其中,structure1参数指定白色像素的结构元素,structure2参数则指定黑色像素的结构元素。