博客
关于我
图像处理系列1.skimage
阅读量:371 次
发布时间:2019-03-05

本文共 2139 字,大约阅读时间需要 7 分钟。

图像基础

黑白图像通常用二维矩阵表示,而灰度图像则使用0-1之间的数值表示。对于彩色图像,常用的表示方法是RGB或BGR三通道,数值范围在0-255之间。无论是RGB还是BGR,图像的维度都是高度×宽度×通道数(H×W×C)。在深度学习中,由于需要对各通道分别进行卷积运算,因此通道维度通常排在前面,表达为C×H×W。通过numpy的transpose函数可以轻松将图像转换为适合深度学习的格式。

在Python中,常用的数字图像处理库包括PIL/Pillow、OpenCV和scikit-image。PIL和Pillow功能相对基础,适合简单的图像处理需求;而OpenCV是一个功能强大的C++库,仅为Python提供了接口。相比之下,scikit-image基于scipy开发,专门将图像处理功能转化为numpy数组操作,使用起来更加简便。

scikit-image功能模块

scikit-image是一个功能丰富的图像处理库,其主要模块包括: - **io模块**:用于读取和写取图像。 - **data模块**:提供了一些示例图像,方便开发和测试。 - **transform模块**:包含图像变形功能,如缩放、旋转等。 - **exposure模块**:处理亮度和对比度问题。 - **filters模块**:提供多种滤波器,支持高通、低通滤波、边缘检测等操作。 - **morphology模块**:实现形态学操作,如膨胀、腐蚀等。 - **rank模块**:高级滤波和图像增强功能。 - **measure模块**:用于图像测量和分析。

2.1 io模块:读写功能

- **imread**:读取图像文件,返回3维numpy数组。灰度图像可设为as_grey=True,得到2维数组。 - **imshow**:将numpy数组显示为RGB格式的图像。 - **imsave**:保存图像文件。 - **ImageCollection**:批量读取并处理多张图片。 - **concatenate_images**:将多张图像数组合成一个更高维的数组。

2.2 data模块:示例图片

scikit-image内置了一些示例图片,开发者可以直接使用这些数据集进行测试和开发。例如,data.coffee()返回一张咖啡杯的图片数组。

2.3 transform模块:图像变形

- **resize**:调整图像大小。 - **rescale**:缩放图像。 - **pyramid_gaussian**:高斯金字塔变换。 - **rotate**:旋转图像。

2.4 exposure模块:亮度和对比度

- **adjust_gamma**:调整对比度。 - **adjust_log**:对数调整。 - **rescale_intensity**:调整亮度范围。 - **histogram**:直方图分析。 - **equalize_hist**:直方图均衡化。

2.5 filters模块:滤波器

- **高通滤波器**:用于边缘检测。 - **低通滤波器**:平滑图像,去噪。 - **边缘检测**:支持Sobel、Roberts、Scharr、Prewitt和Gabor滤波器。Canny算子在feature中特别有效。 - **平滑滤波**:GaussianFilter支持不同模糊效果。 - **阈值分割**:OTSU、Yen、LI和自适应阈值分割。

2.6 morphology模块:形态学操作

- **dilation**:图像膨胀。 - **erosion**:图像腐蚀。 - **opening**:先腐蚀再膨胀,用于去除小孔洞。 - **closing**:填充孔洞。 - **white-tophat**:保留图像中的小斑点。 - **black-tophat**:保留图像中的孔洞。 - **convex_hull_image**:计算图像凸包。

2.7 rank模块:高级滤波

- **autolevel**:自动对比度。 - **bottomhat**:下凸滤波。 - **tophat**:上凸滤波。 - **enhance_contrast**:增强对比度。 - **entropy**:熵值分析。 - **equalize**:均衡化。 - **gradient**:梯度计算。

2.8 measure模块:图像测量

- **label**:图像分割。 - **regionprops**:分析连通区域。 - **remove_small_objects**:去除小物体。

常用组合

边缘检测通常需要先进行模糊处理。例如: - **blur**:简单的算术平均模糊。 - **medianBlur**:适合数字化视频去噪。 - **GaussianBlur**:高斯滤波去噪后再进行边缘检测。 - **Laplacian**:双导数滤波器,产生明显的边缘线条。 - **Sobel**和**Scharr**滤波器:计算水平和垂直方向的梯度。 - **Canny算子**:结合高斯滤波、非最大抑制和双阈值去噪,得到更准确的边缘。

转载地址:http://umiwz.baihongyu.com/

你可能感兴趣的文章
Vue——mock模拟数据的使用
查看>>
Nginx配置反向代理与负载均衡
查看>>
高阶函数reduce
查看>>
Lionheart万汇:布林线双底形态分析技巧
查看>>
Lionheart万汇:台积电大幅提升资本开支,2021有望续创辉煌
查看>>
Lionheart万汇:新年消费结构中贵金属交易机会
查看>>
LHCM万汇:在需求上升中,美国贸易赤字创下历史新高
查看>>
Mybatis的入门01
查看>>
Vue01常见指令,axios
查看>>
Vue路由嵌套刷新后页面没有重新渲染
查看>>
Vue使用bus进行组件间、父子路由间通信
查看>>
数据库三个级别封锁协议
查看>>
类的实例
查看>>
tomcat加载部署webapps目录下的项目
查看>>
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
查看>>
方法重写
查看>>
Threading Programming Guide(多线程编程指南)
查看>>
Java求逆波兰表达式的结果(栈)
查看>>
SDWebImage--http图片加载不出来的问题
查看>>
Application received signal SIGSEGV
查看>>