重庆微信网站,网站建设平台报价,网站的ftp账号密码,做seo网站的公司常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image… 常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image库 PIL.Image.Imagedetectron2库数据增强MaskFormerSemanticDatasetMapper类MetadataCatalog类常见属性 faiss库-聚类 yield关键字
yield关键字定义生成器函数。 生成器函数允许在迭代过程中逐步生成值而不是一次性返回所有值。 yield语句会暂停函数的执行并返回一个值给调用者。下一次调用生成器的__next()__方法函数会从暂停的地方继续执行。 生成器函数节省内存按需求生成值而不是一次性将所有值加载到内存中。
openslide库
openslide库的安装-linux
很多虚拟环境都需要额外装openslide库所以记录一下过程
cd /home/liusn/00apps
conda activate 环境名
pip install openslide_bin-4.0.0.5-py3-none-manylinux_2_27_x86_64.whl
pip install openslide-python1.3.1openslide的使用
openslide库是一个读取和操作显微镜图像的python库支持.svs.vms和.tiff等格式。支持图像金字塔格式在不同的分辨率下访问图像数据。可以从原始图像中提取特定区域不需要加载整个图像。能够访问图像的元数据如放大倍数、图像尺寸等。
import openslide
# 打开显微镜图像
slide openslide.OpenSlide(wsi_path) # 获取特定金字塔层级的图像尺寸
# level从0开始0表示最高分辨率
# w, h表示指定层级的图像宽度和高度
w, h slide.level_dimensions[level] # 获取level层的下采样比例
# 下采样比例: 特定层级的像素大小与最高分辨率像素大小的比例关系
# 如果下采样比例为(2,2), 图像的宽和高都被缩小为原来的1/2
factor slide.level_downsamples[level]
# 从显微镜图像中读取指定区域
# location: tuple, 左上角坐标; level: 金字塔层级
# size: (w, h), 要读取的区域大小; 返回一个PIL对象
image slide.read_region(location, level, size)openslide对象的常用属性
self.level_downsamples[level]获取level层的下采样比例相对于最高分辨率而言。self.level_dimension[level]level层的图像尺寸。
cv2库
import cv2 # 在图像上绘制多边形
# img: 要在其上绘制的图像; pts: 一个包含多边形顶点的ndarray;
# color: 填充的颜色, (255)表示白色
cv2.fillPoly(img, pts, color) # 在图像上绘制文本
# img: 要绘制文本的图像; text: 要绘制的文本字符串
cv2.putText(img, text)numpy库
import numpy as np
# 找到数组中满足条件的元组索引
# condition: bool数组, 返回所有为True的行, 列索引
X_idx, Y_idx np.where(condition) # 根据条件condition进行数组的元素选择和替换
# condition为True时, 返回value1, 否则返回value2 inst_map np.where(condition, value1, value2)
# 将数组按行的方向堆叠起来
# tup: 一个列表/元组, 返回一个新数组(总行数, 列数)
# 总行数 所有输入数组的行数之和 np.vstack(tup)
selected_x[..., 0:1] # ...表示前面所有的维度ASAP库-multiresolutionimageinterface库
处理金字塔类型的数据结构。处理多分辨率图像的python库适合医学图像和显微镜图像的分析。支持不同分辨率的访问与操作。
ASAP库的安装
安装ASAP linuxubuntu18.04-A6000https://www.freesion.com/article/4489476959/ 安装ASAP linuxubuntu22.04-4x3090的安装步骤 在ASAP官网下载最新版ASAP 2.2适配ubuntu2204。 安装ASAP的依赖包用sudo apt-get install 命令。apt-get install是用于命令行操作的软件包管理工具该命令是安装软件包。 离线安装ASAP的安装包dpkg -i ASAP-2.2-Ubuntu2204.deb 手动安装本地的deb文件。 看ASAP安装的位置dpkg -L asap 。 把ASAP放入PYTHONPATH然后可以import了。
PYTHONPATH/opt/ASAP/bin:${PYTHONPATH}
export PYTHONPATHASAP库的使用
ASAP库是一个C写的软件所以不能读源码。少量的python调用文档见https://academic.oup.com/gigascience/article/7/6/giy065/5026175
ASAP官网https://github.com/computationalpathologygroup/ASAP/releases
通过python 访问tif数据 将XML注释数据转换为tif图像假设注释里的多边形坐标是基于图像最高分辨率级别的。 示例代码
import multiresolutionimageinterface as mir # 创建图像接口
reader mir.MultiResolutionImageReader() # 打开和加载多分辨率图像文件
mr_image reader.open(path) # 获取level 6的图像尺寸 level2
w, h mr_image.getLevelDimensions(level)
ds mr_image.getLevelDownsample(level) # 从level 6获取一个patch, patch左上角的坐标为(0,0), 返回的tile是一个numpy对象
tile image.getUCharPatch(0, 0, w, h, 6) # 读取一个 300 像素宽、200 像素高的图像块从level2 的 (568, 732) XY 坐标开始
# ds是下采样倍数, 在level2的坐标乘以ds, 得到level0的坐标
tile image.getUCharPatch(int(568 * ds), int(732 * ds), 300, 200, level)
# 存储和管理多分辨率图像相关的注释数据
annotation_list mir.AnnotationList()
# 将注释数据转换以xml格式存储
xml_repository mir.XmlRepository(annotation_list)
# 设置or更新xml文件的源路径 xml_repository.setSource(path)
# 从xml文件加载数据 xml_repository.load()
# 将注释数据转换为二值掩码
annotation_mask mir.AnnotationToMask()
# 将提供的注释annotation_list转换为二值掩码
annotation_mask.convert(annotation_list, output_path,image_dimensions, image_spacing)concurrent.futures.ThreadPoolExecutor
管理线程池并高效地执行多线程任务可以加快I/O密集型任务的处理速度。通过提交任务来执行并发操作。
from concurrent.futures import ThreadPoolExecutor # 创建对象, max_workers指定最大线程数, 如果没有指定, python根据系统的线程数进行调整
executor ThreadPoolExecutor(max_workers3) # 使用map()提交多个任务
executor.map(task, range(5)) # 关闭线程池
executor.shutdown(waitTrue)xml.etree.ElementTree库
解析和创建xml文档用于读取、修改和生成xml。
import xml.etree.ElementTree as ET # 从指定文件中读取xml数据, 并解析为一个树结构 ElementTree对象
tree ET.parse(annot_path) # 获取根元素: xml文档最外层的元素
root tree.getroot()skimage库
import skimage # 生成多边形的像素坐标
# x: 一维数组, 多边形的列坐标; y: 一维数组, 多边形的行坐标
# shape: 指定输出坐标的图像形状
# rows, cols: 多边形内部像素的行和列坐标
# 多边形内部是指所有的多边形都被填充好了
rows, cols skimage.draw.polygon(x, y, shape)PIL.Image库 PIL.Image.Image
from PIL import Image image Image.open(path)
# 查看image的mode和channel nums
print(fImage mode: {image.mode})
print(fNumber of channels: {len(image.getbands())})
# 转换mode mask mask.convert(P)detectron2库
数据增强
允许同时增强多种数据类型如图像、边界框、掩码。允许应用一系列静态声明的增强。允许添加自定义新数据类型来增强如旋转边界框、视频剪辑。处理和操纵增强增强应用的operations。 如何在编写新的数据加载器时使用增强如何编写新的增强。
MaskFormerSemanticDatasetMapper类
从file_name读取image将几何变换应用到image和annotation查找合适的cropping将其应用于image和annotation把image和annotation变成Tensors
MetadataCatalog类常见属性
stuff_classes每个stuff类别的名称list用于语义分割和全景分割。stuff_colors每个stuff类别的预定义颜色0-255用于可视化。如果没有指定则使用随机颜色。list[tuple(r, g, b)].ignore_labelintgt中带有该类别标签的像素将在评估里被忽略用于语义和全景分割任务。
faiss库-聚类
Faiss库的使用
faiss索引包括IndexFlatL2小规模数据集、IndexIVFFlat大规模数据集、IndexHNSW高维数据。查询相似度 D, I index.search(features, k)。对每个样本查询与其他样本的相似度D是距离矩阵I是索引矩阵返回每个样本的前k个最近邻。