skimage模块
来源:互联网 发布:个人怎么注册域名 编辑:程序博客网 时间:2024/06/17 02:51
可以用来做图像做处理的模块有很多,不过对于使用python不熟悉,或者刚使用python做图像处理的时候,经常不知道应该选择使用哪些模块。比如,scipy中misc和ndimage中都有相应的图像处理函数,现在就介绍一下scikit-image模块吧:
1)例图:
from skimage import datadata里面会有样图,如data.camera()是一张(512, 512)的图;
2)滤波:
from skimage import filters比如高斯滤波,filters.gaussian(camera, 1)
比如边缘检测:filters.sobel(camera)
3)文件读取:
from skimage import io
io.imread(filename),其中,filename也可以是URL地址;
io.imsave(path, img).
4)数据类型转换:
from skimage import img_as_float
camera_f = img_as_float(camera)将原图uint8类型转变成[-1, 1]之间的范围;
5)颜色空间转换:
from skimage import color
color.rgb2hsvcolor.lab2rgb, etc.
关于图像预处理和增强
6)局部滤波,如filters.sobel_h(img)
7)非局部滤波,如
rom skimage import exposure
中exposure.equalize_hist(img)做直方图均衡;
8)数学形态变换
from skimage import morphology具体图形生成:比如morphology.diamond(1)生成菱形;
腐蚀操作:morphology.binary_erosion(img, selem=None)
selem表示结构元素,用于设定局部区域的形状和大小。将0值扩充到邻近像素。扩大黑色部分,减小白色部分。可用来提取骨干信息,去掉毛刺,去掉孤立的像素。
膨胀操作:morphology.binary)dilation(img, selem = None)
一般对二值图像进行操作。找到像素值为1的点,将它的邻近像素点都设置成这个值。1值表示白,0值表示黑,因此膨胀操作可以扩大白色值范围,压缩黑色值范围。一般用来扩充边缘或填充小的孔洞。
Opening: erosion + dilation在
注:该操作也适用于非二值图,即灰度图,对应的是最小滤波
(scipy.ndimage.morphology同样也有该操作)
9)图像分割
基于直方图分析的二值分割:(Otsu阈值法)如:val = filters.threshold(img)找到阈值,然后通过mask = img < val得到二值图
图像打标签:对于分割后的图像,可以给每一个区域打标签,如
from skimage import measure
all_labels = measure.label(blobs)
另外,scipy中也有相应操作;
水域分割算法(也叫分水岭算法):
from skimage.morphology import watershed
from skimage.feature import peak_local_max
from scipy import ndimage>>> distance = ndimage.distance_transform_edt(image)>>> local_maxi = peak_local_max(distance, indices=False, footprint=np.ones((3, 3)), labels=image)>>> markers = morphology.label(local_maxi)>>> labels_ws = watershed(-distance, markers, mask=image)另一个随机walker分割:
from skimage import segmentation>>> # Transform markers image so that 0-valued pixels are to>>> # be labelled, and -1-valued pixels represent background>>> markers[~image] = -1>>> labels_rw = segmentation.random_walker(image, markers)
10)测量区域属性,如面积和周长
properties = measure.regionprops(labels_rw)>>> [prop.area for prop in properties][770, 1168]>>> [prop.perimeter for prop in properties] [100.91..., 126.81...]
11)数据可视化和交互
matplotlib中提供了plt.imshow等函数,结合以上滤波、分割(segmentation.clear_border(mask))等使用
另外,skimage也提供显示图像的函数,不过也是基于matplotlib,貌似功能更强大:
from skimage import viewer>>> new_viewer = viewer.ImageViewer(coins) >>> new_viewer.show()
For more interaction, plugins can be added to the viewer:
>>> new_viewer = viewer.ImageViewer(coins) >>> from skimage.viewer.plugins import lineprofile>>> new_viewer += lineprofile.LineProfile() >>> new_viewer.show()
12)CV中的特征提取
from skimage import feature
不同角点特征:
from skimage.feature import corner_harris, corner_subpix, corner_peaks
//补充角点特征知识点
另外skimage.transform提供扭曲和仿射变换操作wrap和AffineTransform
//待补充其它特征提取函数
- skimage模块
- skimage feature canny模块不存在
- python-skimage
- python3.5 运行from skimage import morphology,feature报错ImportError: DLL load failed:找不到指定模块
- Ubuntu16.04 安装skimage
- skimage-图像基本操作
- import skimage.io ImportError: No module named skimage.io
- import skimage.io ImportError: No module named skimage.io
- digit image process --- python-skimage
- ubuntu下python-skimage install
- ubuntu14.04安装skimage-0.14
- skimage与PIL与png
- 在raspberry上安装skimage
- skimage的相关使用收藏
- python skimage 连通性区域检测
- python图像处理之skimage
- python的Image和skimage处理图片
- 用 python skimage做图像处理
- Elasticsearch增量索引
- SSM框架——详细整合教程
- Ubuntu 16.04.3 LTS部署MantisBT2.8.0
- 如何永久修改arm上linux的ip地址
- Spark的几种运行模式
- skimage模块
- sql优化日记2(join代替in)
- opencv 之图片缩放
- Elasticsearch6.0
- 微信小程序 基础语法
- 软件测试英文单词
- Glide使用详解
- 二级列表的实现
- ES6-数组的扩展-数组实例的entries(),keys()和values()