前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scikit-image图像处理入门

scikit-image图像处理入门

作者头像
AI算法与图像处理
发布2019-08-20 10:38:52
1.5K0
发布2019-08-20 10:38:52
举报

点击上方“AI算法与图像处理”,选择加"星标"或“置顶” 重磅干货,第一时间送达

来源:Opencv学堂

问题或建议,请公众号留言; 如果你觉得文章对你有帮助,欢迎转发支持

scikit-image概述与安装

skimage是纯python语言实现的BSD许可开源图像处理算法库,主要的优势在于:

  • 提供一套高质量易用性强的图像算法库API
  • 满足研究人员与学生学习图像处理算法的需要,算法API参数可调
  • 满足工业级应用开发需求,有实际应用价值

scikit-image主要模块如下:

官方主页

代码语言:javascript
复制
https://scikit-image.org/

安装

代码语言:javascript
复制
pip install scikit-image

代码教程

导入支持的模块

代码语言:javascript
复制
from skimage import data, io, filters, feature, segmentation
from skimage import color, exposure, measure, morphology, draw
from matplotlib import pyplot as plt
from skimage import transform as tf

从data中获取测试图像与数据并显示

代码语言:javascript
复制
image = data.chelsea()
io.imshow(image)
io.show()

这个是开源作者养的宠物猫

灰度转换

代码语言:javascript
复制
gray = color.rgb2gray(image)
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
ax = axes.ravel()

ax[0].imshow(image)
ax[0].set_title("Input RGB")
ax[1].imshow(gray, cmap=plt.cm.gray)
ax[1].set_title("gray")

fig.tight_layout()
plt.show()

通道分离操作

代码语言:javascript
复制
hsv_img = color.rgb2hsv(image)
hue_img = hsv_img[:, :, 0]
value_img = hsv_img[:, :, 2]

fig, (ax0, ax1, ax2) = plt.subplots(ncols=3, figsize=(8, 2))
ax0.imshow(image)
ax0.set_title("RGB image")
ax0.axis('off')
ax1.imshow(hue_img, cmap='hsv')
ax1.set_title("Hue channel")
ax1.axis('off')
ax2.imshow(value_img)
ax2.set_title("Value channel")
ax2.axis('off')

fig.tight_layout()
plt.show()

滤波操作

代码语言:javascript
复制
image = data.chelsea()
gray = color.rgb2gray(image)
blur = filters.gaussian(image, 15)
usm = filters.unsharp_mask(image, 3, 1.0)
sobel = filters.sobel(gray)
prewitt = filters.prewitt(gray)
eh = exposure.equalize_adapthist(gray)
lapl = filters.laplace(image, 3)
median = filters.median(gray)

图像二值化处理

代码语言:javascript
复制
image = io.imread("D:/images/dice.jpg")
gray = color.rgb2gray(image)
ret = filters.threshold_otsu(gray)
print(ret)

轮廓发现

代码语言:javascript
复制
binary = gray > ret
ax[0].imshow(gray > ret, cmap='gray')
ax[0].set_title("binary")
contours = measure.find_contours(binary, 0.8)
for n, contour in enumerate(contours):
         ax[1].plot(contour[:, 1], contour[:, 0], linewidth=2)
ax[1].set_title("contours")

Canny边缘

代码语言:javascript
复制
image = io.imread("D:/images/master.jpg")
gray = color.rgb2gray(image)
edge = feature.canny(gray, 3)

骨架提取

代码语言:javascript
复制
image = data.horse()
gray = color.rgb2gray(image)
ret = filters.threshold_otsu(gray)
binary = gray < ret
skele = morphology.skeletonize(binary)

harris角点检测

代码语言:javascript
复制
image = io.imread("D:/images/home.jpg")
gray = color.rgb2gray(image)
coords = feature.corner_peaks(feature.corner_harris(gray), min_distance=5)

BRIEF特征匹配

代码语言:javascript
复制
keypoints1 = corner_peaks(corner_harris(img1), min_distance=5)
keypoints2 = corner_peaks(corner_harris(img2), min_distance=5)
keypoints3 = corner_peaks(corner_harris(img3), min_distance=5)

extractor = BRIEF()
extractor.extract(img1, keypoints1)
keypoints1 = keypoints1[extractor.mask]
descriptors1 = extractor.descriptors

extractor.extract(img2, keypoints2)
keypoints2 = keypoints2[extractor.mask]
descriptors2 = extractor.descriptors

extractor.extract(img3, keypoints3)
keypoints3 = keypoints3[extractor.mask]
descriptors3 = extractor.descriptors

matches12 = match_descriptors(descriptors1, descriptors2, cross_check=True)
matches13 = match_descriptors(descriptors1, descriptors3, cross_check=True)

上述同时显示两张图像的相似代码

代码语言:javascript
复制
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
ax = axes.ravel()

ax[0].imshow(image)
ax[0].set_title("Input RGB")
ax[1].imshow(gray > ret, cmap='gray')
ax[1].set_title("binary")
ax[0].axis('off')
ax[1].axis('off')

fig.tight_layout()
plt.show()

完整的演示代码下载地址

https://github.com/gloomyfish1998/opencv_tutorial/blob/master/python/ski_image_demo.py

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 点击上方“AI算法与图像处理”,选择加"星标"或“置顶” 重磅干货,第一时间送达
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档