scikit-image图像处理入门
小白学视觉
共 2849字,需浏览 6分钟
· 2021-11-05
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
skimage是纯python语言实现的BSD许可开源图像处理算法库,主要的优势在于:
提供一套高质量易用性强的图像算法库API
满足研究人员与学生学习图像处理算法的需要,算法API参数可调
满足工业级应用开发需求,有实际应用价值
scikit-image主要模块如下:
官方主页
https://scikit-image.org/
安装
pip install scikit-image
导入支持的模块
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中获取测试图像与数据并显示
image = data.chelsea()
io.imshow(image)
io.show()
这个是开源作者养的宠物猫
灰度转换
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()
通道分离操作
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()
滤波操作
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)
图像二值化处理
image = io.imread("D:/images/dice.jpg")
gray = color.rgb2gray(image)
ret = filters.threshold_otsu(gray)
print(ret)
轮廓发现
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边缘
image = io.imread("D:/images/master.jpg")
gray = color.rgb2gray(image)
edge = feature.canny(gray, 3)
骨架提取
image = data.horse()
gray = color.rgb2gray(image)
ret = filters.threshold_otsu(gray)
binary = gray < ret
skele = morphology.skeletonize(binary)
harris角点检测
image = io.imread("D:/images/home.jpg")
gray = color.rgb2gray(image)
coords = feature.corner_peaks(feature.corner_harris(gray), min_distance=5)
BRIEF特征匹配
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)
上述同时显示两张图像的相似代码
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
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
评论
GPT的风也吹到了CV,详解自回归视觉模型的先驱! ImageGPT:使用图像序列训练图像 GPT模型
作者丨科技猛兽编辑丨极市平台导读 在 CIFAR-10 上,iGPT 使用 linear probing 实现了 96.3% 的精度,优于有监督的 Wide ResNet,并通过完全微调实现了 99.0% 的精度,匹配顶级监督预训练模型。本文目录1 自回归视觉模型的先驱 ImageGPT:
机器学习初学者
0
图像处理,计算机视觉和人工智能之间的差异
作者:Pallawi原文链接:https://medium.com/@pallawi.ds/difference-between-image-processing-computer-vision-and-artificial-intelligence-af670d65055d编译:AI算法与图像处理
机器学习初学者
10
面试官:来说说vue3是怎么处理内置的v-for、v-model等指令?
前言最近有粉丝找到我,说被面试官给问懵了。粉丝:面试官上来就问“一个vue文件是如何渲染成浏览器上面的真实DOM?”,当时还挺窃喜这题真简单。就简单说了一下先是编译成render函数、然后根据render函数生成虚拟DOM,最后就是根据虚拟DOM生成真实DOM。按照正常套路面试官接着会问vue响应式
高级前端进阶
10
C# 优雅的处理 TCP 数据
前言Tcp是一个面向连接的流数据传输协议,用人话说就是传输是一个已经建立好连接的管道,数据都在管道里像流水一样流淌到对端。那么数据必然存在几个问题,比如数据如何持续的读取,数据包的边界等。Nagle's算法Nagle 算法的核心思想是,在一个 TCP 连接上,最多只能有一个未被确认的小数据包(小于
dotNET全栈开发
10
iMeta | 重医大沈伟等发布全能序列处理工具SeqKit2
点击蓝字 关注我们SeqKit2:序列和比对数据操作的瑞士军刀iMeta主页:http://www.imeta.science方法论文● 原文链接DOI: https://doi.org/10.1002/imt2.191● 2024年4月5日,重庆医科大学附属第二医院沈伟在iMe
生信宝典
0
CVPR2024-扩散模型可解释性新探索,图像生成一致性创新高!AI视频生成新机遇?
CVPR2024-扩散模型可解释性新探索,图像生成一致性创新高!AI视频生成新机遇?1. 本文概要在本研究中,作者指出了对图像生成扩散模型的可重复性或一致性进行定量评分的重要性。本文提出了一种基于成对平均CLIP(对比语言-图像预训练)分数的语义一致性评分方法。通过将此度量应用于比较两种领先的开源图
GiantPandaCV
1
处理不平衡数据的十大 Python 库
↓推荐关注↓数据不平衡是机器学习中一个常见的挑战,其中一个类的数量明显超过其他类,这可能导致有偏见的模型和较差的泛化。有各种Python库来帮助有效地处理不平衡数据。在本文中,我们将介绍用于处理机器学习中不平衡数据的十大Python库,并为每个库提供代码片段和解释。1、imbalanced-lear
Python学习与数据挖掘
0
CPU的入门知识
不管你玩硬件还是做软件,你的世界都少不了计算机最核心的 —— CPU。01CPU是什么?CPU与计算机的关系就相当于大脑和人的关系,它是一种小型的计算机芯片,通常嵌入在电脑的主板上。CPU的构建是通过在单个计算机芯片上放置数十亿个微型晶体管来实现。这些晶体管使它能够执行运行存储在系统内存中的程序所需
机器学习算法与Python实战
10