全网首发图像可视化新利器Seaborn-image保姆级教程

Posted qq_21478261

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网首发图像可视化新利器Seaborn-image保姆级教程相关的知识,希望对你有一定的参考价值。

图像可视化在计算机视觉领域 (Computer Vision, CV) 非常常见,本次分享一个非常优质的Python图像可视化工具seaborn-image,代码量非常低

Seaborn-image灵感源自Seaborn,风格如同Seaborn亲儿子🐶,强烈建议对比着Seaborn用,比如下文一直提到的Axes level/Figure level概念,多多参考👉Seaborn学会

目录

安装

二维图像可视化

图像分布可视化

RGB图像可视化

多维度图像可视化 

​多个图像集可视化

图像过滤方法一

图像过滤方法二

图像个性化设置 

小结


安装

pip install -U seaborn-image

二维图像可视化

主要使用seaborn_image.imgplot函数,Axes level方法,类似matplotlib.imshow,默认参数绘图,

import seaborn_image as isns

pol = isns.load_image("polymer") #倒入数据
ax = isns.imgplot(pol) #绘图

更多细节:为图像添加比例尺、colorbar、colormaps等等, 

import seaborn_image as isns

isns.set_context(
    "poster"
)  #设置主题,包含 ‘paper’, ‘notebook’, ‘presentation’, ‘talk’,‘poster’,默认为 “paper”.

isns.set_image(cmap="inferno", )  #配色方案设置
pol = isns.load_image("polymer")
ax = isns.imgplot(
    pol,
    describe=True,  #添加描述性统计
    cbar_label="Height(nm)",  #添加colorbar标题
    cbar_ticks=[0, 15, 40],  #设置colorbar刻度
    orientation="v",  #colorbar方向
    cbar=True,  #colorbar开启
    **
        "dx": 20,
        "units": "nm"
    ,  #添加比例尺
    despine=True,  #边框线开启
)

seaborn_image.imgplot — seaborn-image documentation

图像分布可视化

主要使用seaborn_image.imghist函数,Figure level方法,

import seaborn_image as isns

img = isns.load_image("polymer")
f = isns.imghist(
    img,
    #添加比例尺
    dx=15,
    units="nm",
    cmap="inferno",  #配色
    cbar_label="Height (nm)", 
)

 

RGB图像可视化

使用seaborn_image.rgbplot()函数,Figure level方法,将图像按图像的通道数(channels)可视化,

import seaborn_image as isns
from skimage.data import astronaut #加载示例图像

isns.set_image(origin="upper")  
g = isns.rgbplot(
    astronaut(),
    height=3.5,  #图像高度 
    aspect=1.0,  #图像间距
    cmap="inferno")

多维度图像可视化 

使用seaborn_image.ImageGrid函数,Figure level方法,支持按指定切片、沿着某个轴、步长等方式切割多维度数据后可视化,

#导入数据
import seaborn_image as isns
from skimage import exposure
cells = isns.load_image("cells") #吃网速,可单独下载

#按指定切片切割3D数据
g = isns.ImageGrid(cells, slices=[10,20,30,40,50,55],cmap="inferno")

#按切片+指定轴切割3D数据
g = isns.ImageGrid(
    cells,
    slices=[10, 20, 30, 40, 50, 55],
    axis=1,  #指定轴
    cmap="inferno",
    height=2.5,
    aspect=1,
)

#指定步长切割3D数据
g = isns.ImageGrid(
    cells,
    step=3,
    start=10,
    stop=40,
    cbar=False,
    cmap="inferno",
)

 

g = isns.ImageGrid(
    cells,
    cbar=False,
    height=1,
    col_wrap=10,#指定行显示数、图像大小
    cmap="inferno",
)

多个图像集可视化

依旧使用seaborn_image.ImageGrid函数,此时传入两个数据集,对应参数个性化传入数组即可,

import seaborn_image as isns

pl = isns.load_image("fluorescence")  #数据集1
polymer = isns.load_image("polymer")  #数据集2

img_coll = [pl, polymer]

g = isns.ImageGrid(
    img_coll,
    cmap=["magma", "inferno"],  #传入数组色度条
    cbar_label=["PL Intensity", "Height (nm)"],  #传入数组比例尺标题
    dx=[0.1, 0.015],  #传入数组比例尺
    units="um",
    height=5)

图像过滤方法一

使用seaborn_image.filterplot,Axes level方法,快速对图像做傅立叶变换,

import seaborn_image as isns

pol = isns.load_image("polymer")
ax = isns.fftplot(pol, cmap='inferno')  #快速傅立叶变换

重点介绍filt参数修改Filter算法,filt调用seaborn_image算法,

isns.implemented_filters.keys()#输出seaborn_image可用filter算法
['sobel', 'gaussian', 'median', 'max', 'diff_of_gaussians', 'gaussian_gradient_magnitude', 'gaussian_laplace', 'laplace', 'min', 'percentile', 'prewitt', 'rank', 'uniform']
import seaborn_image as isns

pol = isns.load_image("polymer")
ax = isns.filterplot(pol, filt="median", size=5, cmap='inferno')  #filt修改算法为median

filt调用skimage.filters中算法 ,

#调用skimage.filters中算法
from skimage.filters import scharr

ax = isns.filterplot(pol, filt=scharr, cmap='inferno')

图像过滤方法二

使用seaborn_image.FilterGridt函数,Figure level方法 ,多维度对图像做比较过滤,类似于seaborn中的图像分面,

import seaborn_image as isns

pol = isns.load_image("polymer")
g = isns.FilterGrid(
    pol,
    "median",
    col="size",  #按照size维度比较
    size=[1, 2, 3, 6, 7, 9],
    col_wrap=3,
    cmap='inferno')

g = isns.FilterGrid(
    pol,
    "percentile",
    row="percentile",  #同时按照percentile维度比较
    col="size",  #及按照size维度比较
    percentile=[3, 5, 7, 10],
    size=[3, 5, 7, 10],
    **
        "dx": 15,
        "units": "nm"
    ,  #比例尺
    cmap='inferno')

图像个性化设置 

共五个函数,一一说来。

seaborn_image.set_context设置图像主题、字体、外框、调用matplotlib.rcParams参数等,

import seaborn_image as isns

isns.set_context(mode="poster", fontfamily="sans-serif")  #图像主题poster,字体
isns.set_context(rc="axes.edgecolor": "red")  #外框设置为红色

 无set_context设置效果,

 set_context使用后效果 ,

seaborn_image.set_image设置图像配色等,

import seaborn_image as isns

isns.set_image(cmap="deep", interpolation="bicubic")  #设置色度条
isns.set_image(despine=True)  #设置外框关闭、默认开启

from skimage.filters import scharr

ax = isns.filterplot(pol, filt=scharr)

其它seaborn_image.set_scalebar设置colorbar、seaborn_image.set_save_context设置图像保存的时的分辨率等参数、seaborn_image.reset_defaults恢复设置为matplotlib默认参数,不一一介绍。

参考:https://github.com/SarthakJariwala/seaborn-image

小结

如果你苦于Matplotlib、选择了Seaborn,那么一定要去学一下seaborn-image,小编目前遇到最简单的图像可视化工具。

seaborn-image超详细文档.PDF下载:👇【首发】Python图像可视化新利器Seaborn-image保姆级教程

以上是关于全网首发图像可视化新利器Seaborn-image保姆级教程的主要内容,如果未能解决你的问题,请参考以下文章

全网首发:JDK绘制文字:七使用字体图像进行绘制

全网首发:JDK绘制文字:六字符对应的字体图像加载流程

全网首发:JDK绘制文字:六字符对应的字体图像加载流程

全网首发:JDK绘制文字:六字符对应的字体图像加载流程

全网首发:JDK绘制文字:八绘制函数简要分析

全网首发:JDK绘制文字:八绘制函数简要分析