1、生成结构化元素

这个例子展示了如何使用skimage中的函数。生成结构元素的形态学。每个图的标题表示函数的调用。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dfrom skimage.morphology import (square, rectangle, diamond, disk, cube,octahedron, ball, octagon, star)
#正方形、长方形、菱形、圆盘、立方体、八面体、球体、八角形、星形
# Generate 2D and 3D structuring elements.
struc_2d = {"square(15)": square(15),"rectangle(15, 10)": rectangle(15, 10),"diamond(7)": diamond(7),"disk(7)": disk(7),"octagon(7, 4)": octagon(7, 4),"star(5)": star(5)
}struc_3d = {"cube(11)": cube(11),"octahedron(5)": octahedron(5),"ball(5)": ball(35),
"ball(5)": ball(35),
}# Visualize the elements.
fig = plt.figure(figsize=(8, 8))idx = 1
#tems()函数以列表返回可遍历的(键值)元组数组。
'''
plt.text(x, y, string, weight="bold", color="b")
x: 注释文本内容所在位置的横坐标
y:注释文本内容所在位置的纵坐标
string:注释文本内容,struc[i, j]为数0、1
weight:注释文本内容的粗细风格
'''
for title, struc in struc_2d.items():ax = fig.add_subplot(4, 4, idx)#3行3列,位置为ax.imshow(struc, cmap="Greens", vmin=0, vmax=12)#ax参数用于限定数值的范围,只将vmin和vmax之间的值进行映射,用法如下for i in range(struc.shape[0]):for j in range(struc.shape[1]):ax.text(j, i, struc[i, j], ha="center", va="center", color="w")ax.set_axis_off()ax.set_title(title)idx += 1for title, struc in struc_3d.items():ax = fig.add_subplot(4, 4, idx, projection=Axes3D.name)ax.voxels(struc)ax.set_title(title)idx += 1fig.tight_layout()
plt.show()

2、图像/阵列上的块视图

这个例子演示了skimage.util()中的view_as_blocks的使用。当一个人想对非重叠图像块执行局部操作时,块视图是非常有用的。我们用skimage中的astronaut。数据,并将其“切分”为方方面面。然后,在每个块上,我们要么汇集该块的平均值,最大值或中值。结果显示在一起,连同一个三阶的样条插值的原始宇航员图像缩放。

import numpy as np
from scipy import ndimage as ndi
from matplotlib import pyplot as plt
import matplotlib.cm as cmfrom skimage import data
from skimage import color
from skimage.util import view_as_blocks# get astronaut from skimage.data in grayscale
l = color.rgb2gray(data.astronaut())
#img=skimage.io.imread('11.jpg',)
#l = color.rgb2gray(img)
# size of blocks
block_shape = (4,4)#将宇航员图片分为矩阵块(大小为block_shape)
view = view_as_blocks(l, block_shape)# 最后两个维度合二为一,变为数组方便操作
#img.shape[0]:图像的垂直尺寸(高度) img.shape[1]:图像的水平尺寸(宽度)
flatten_view = view.reshape(view.shape[0], view.shape[1], -1)# 通过取每个块的“均值”、“最大值”或“中值”重新采样图像。mean()函数功能:求取均值
mean_view = np.mean(flatten_view, axis=2)
max_view = np.max(flatten_view, axis=2)
median_view = np.median(flatten_view, axis=2)# 画子图,sharex和sharey:表⽰坐标轴的属性是否相同
fig, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=True, sharey=True)
ax = axes.ravel()#将多维数据展平为⼀维数据,它相当于 reshape(-1, order=order) 。'''
https://vimsky.com/examples/usage/python-scipy.ndimage.zoom.html
https://www.jianshu.com/p/909851f46411
ndi.zoom(input,zoom,output=None,order,mode='constant',cval=0.0,prefilter=True)缩放数组。使用请求顺序的样条插值对数组进行缩放。
input: 以数组形式输入图片
zoom:浮点数或数组。如果是一个浮点数,对每一个轴放缩相同的倍数。如果是一个数组,则对每一个轴分配一个值。
output:输出,默认为None
order:整型(范围0-5)样条插值的顺序,默认为3。详见后续
'''
l_resized = ndi.zoom(l, 2, order=3)
ax[0].set_title("Original rescaled with\n spline interpolation (order=3)")
ax[0].imshow(l_resized, extent=(-0.5, 128.5, 128.5, -0.5),cmap=cm.Greys_r)ax[1].set_title("Block view with\n local mean pooling")
ax[1].imshow(mean_view, cmap=cm.Greys_r)ax[2].set_title("Block view with\n local max pooling")
ax[2].imshow(max_view, cmap=cm.Greys_r)ax[3].set_title("Block view with\n local median pooling")
ax[3].imshow(median_view, cmap=cm.Greys_r)for a in ax:a.set_axis_off()fig.tight_layout()
plt.show()

3、使用简单的 NumPy 操作来处理图像

此脚本说明了如何使用基本的 NumPy 操作,例如切片、屏蔽和花式索引,以修改图像的像素值。

#使用基本的 NumPy 操作,例如切片、屏蔽和花式索引,以修改图像的像素值。
import numpy as np
from skimage import data
import matplotlib.pyplot as plt#读入,camera是ndarray的数组
camera = data.camera()
camera[:10] = 0#第0-9位设为0
mask = camera < 87#‘< ’为条件语句,只能返回“真假”。将camera中像素值<87的位置记为true,其余为false
camera[mask] = 255#再利用mask所标记的位置(true和false),将值为true的值设为255
inds_x = np.arange(len(camera))#横坐标0-511,arange(a,b,c)函数产生a~b(不包括b),间隔为c的一个数组,参511为终点,起点取0,步长取默认值1。
inds_y = (4 * inds_x) % len(camera)#生成步长为4的数组,纵坐标
camera[inds_x, inds_y] = 0 #按inds_x, inds_y的值将像素置为零
l_x, l_y = camera.shape[0], camera.shape[1]#读取矩阵长度
print(l_x,l_y)
X, Y = np.ogrid[:l_x, :l_y]#产生两个长为512的二维数组
print(X,Y)
outer_disk_mask = (X - l_x / 2)**2 + (Y - l_y / 2)**2 > (l_x / 2)**2#生成圆形的网格坐标
camera[outer_disk_mask] = 0 # 对网格坐标赋,除圆以外的都变为黑色的plt.figure(figsize=(4, 4)) # 建立figure的尺寸比例
plt.imshow(camera, cmap='gray') # 显示图像
plt.axis('off')
plt.show()

skimage学习(1)相关推荐

  1. skimage 学习第二天:ski官网示例程序总结(1)

    skimage官网的示例.总结一下,作为以后研究的基础. http://scikit-image.org/docs/stable/auto_examples/index.html#examples-g ...

  2. skimage 学习第三天:ski官网示例程序总结(2)

    13 Gabors / Primary Visual Cortex "Simple Cells" from an Image 这个很像在生物学神经视觉和深度学习计算机视觉相关的东西 ...

  3. skimage 学习笔记

    安装: conda install scikit-image img_as_ubyte转为uint8格式,0-255,转为普通图像,举例: >>> from skimage impo ...

  4. 多种方法实现CT肺实质的自动分割

    目录 一.序言 二.基于KMean的png分割肺区 2.1.代码实现 2.2.分割算法的流程及结果如下 2.3.结果展示 三.基于Dicom的Hu值的肺区分割(不区分左右) 3.1.代码实现 四.基于 ...

  5. 计算机视觉,基于skimage对图像阈值分割的学习

    @Author:Runsen 文章目录 图像分割 skimage的实现 OSTU图像分割方法 基本原理 图像分割 阈值处理是图像分割的一种,在其中更改图像的像素以使图像更易于分析.在阈值化中,将图像从 ...

  6. 【Python学习】 - skimage包

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵   2.软件容量大.一般3G以上,高版本甚至达5G以上.   3.只能做研究,不易转化成软 ...

  7. 【Python学习】 - 使用PIL, cv2, keras.preprocessing, scipy.imageio, matplotlib.image, skimage读取和保存图像的方法

    python中图像处理相关库有很多,这里简单介绍PIL.cv2.scipy.imageio .matplotlib.image.skimage等常用库,其中PIL库使用最方便,cv2库功能最强大. P ...

  8. 深度学习-skimage.transform报错的玄学问题

    背景: 将实验室工作站环境复制进公司的linux机器中,中间出现报错.错误原因是shape问题,不能将(1,112,112)转为(1,3,112,112),应该是(3,112,112),所以这里sha ...

  9. skimage函数学习

    morphology(凸包) from skimage importmorphology covex_hull_image convex_hull_image将图片中所有目标看作一个整体,计算一个最小 ...

最新文章

  1. flask uwsgi nginx 部署在 ubuntu 上
  2. Imperva开源域目录控制器,简化活动目录集成
  3. 把第三方jar包放入本地仓库
  4. jQuery模板和数据绑定
  5. 电商海报怎么设计,先告诉复古海报要设计要点(附模板)
  6. python x轴加范围_Python,Matplotlib,subplot:如何设置轴范围?
  7. 利用哈希表实现电话号码查询系统
  8. Jmeter性能测试面试基础问答
  9. 【latex论文】IEEE论文模板的使用教程
  10. 保护你的端口(转自赛迪网)
  11. XPS文件,在Windows XP下的打开查看阅读和打印方法。(多图详细讲解)
  12. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。剑指Offer(32)
  13. Vmware5.0 下安装NetWare6.5全攻略
  14. Windows下wafw00f的安装
  15. Windows10资源管理器使用
  16. protoc did not exit cleanly
  17. 计算机操作系统经典进程同步问题
  18. 计算机综合训练50题4,-计算机基础练习题-Excel部分50题.doc
  19. 矩阵的乘法(线性代数及其应用【1】)
  20. XX系统XX版本 测试报告

热门文章

  1. .NET Core Common Language Runtime (CoreCLR)
  2. 我的天哪!IT行业女程序员可以这么牛!
  3. C# winform 制作串口助手(仅需一小时手把手学会制作简单串口助手)
  4. QML 地图修改插件源码(一)解决Map使用Open Street Map(OSM)无法加载在线地图的解决办法
  5. HTTP协议是什么?详细解读HTTP看完还不懂你来找我
  6. c语言算法求e的x次方的导数,【e的x次方的导数】-e的x次方的导数-数学-宣苹谕...
  7. JS将base64图片压缩至指定大小
  8. java中的继承详解
  9. 你“球”不如她,球技更不如她!
  10. 什么是 SAP ABAP? 类型、ABAP 完整形式和含义