当前位置:网站首页>PlantCV中文文档
PlantCV中文文档
2022-07-26 22:42:00 【咖啡不加冰和糖】
PlantCV中文文档
1. 简介
1. 欢迎来到PlantCV文档
总览
PlantCV由模块化功能组成,以便适用于多种植物类型和成像系统。在接下来的文档中我们将每个功能的用法,并提供在整个图像处理工作流中每个功能的用法的教程。PlantCV目前支持分析RGB标准彩色图像(也称“VIS”),标准灰度图像(例如,近红外,“ NIR”),热红外图像,叶绿素荧光成像系统(“ PSII”)的灰度图像和高光谱分析 (“ ENVI”)图片。 对其他图像类型的支持正在开发中。 PlantCV的开发正在进行中-我们鼓励更大的植物表象学界提供意见。 请在GitHub问题页面上发布问题和评论。
开始
可以使用菜单栏目录浏览文档,在PlantCV Namespace标题下列出了各个PlantCV功能的文档,有关安装、更新和其他问题请参见:
- 注册PlantCV
- 更新PlantCV
- 常见问题
- 使用PlantCV进行图像分析的一般方法
- 将Jupyter Notebook与PlantCV配合使用
- 输出度量和数据库结构摘要
教程
我们添加了交互式文档(该链接最多需要几分钟才能加载,因此请耐心等待),因此您可以测试工作流程,甚至可以上传自己的图像进行测试。
另请参阅我们的教程文档页面,以获取针对特定任务使用PlantCV的更多详细概述:
- VIS / RGB图像处理
- 近红外图像处理
- PSII图像处理
- VIS / NIR双重工作流程
- 多植物图像处理
- 形态包
- 热图像处理
- 高光谱图像处理
- 机器学习教程
- 并行图像处理
- 导出数据以进行下游分析
贡献
如果您有兴趣为PlantCV做出贡献,请参阅:
贡献指南
文档指南
行为守则
版本
该文档默认为PlantCV的稳定版本,该版本是PyPI和Bioconda提供的当前发行版本。 v1.1及更高版本的所有发行版文档也可通过标准阅读Docs弹出/下拉菜单(右下角)获得。 选择最新版本以获取与GitHub中当前代码相关的最新文档。
2. PlantCV Namespace
2.1 PlantCV
2.1.1 分析颜色
提取对象的颜色数据并生成伪彩色图像,可提取RGB(红色、绿色、蓝色)、HSV(色调、饱和度、值)和实验室(亮度、绿品红、蓝黄)通道的数据。
plantcv.analyze_color(rgb_img, mask, hist_plot_type=None)
返回直方图图像(hist_plot_type,否则返回对象)
- 用于从RGB,LAB和HSV颜色通道中提取颜色数据。
- 生成颜色通道数据的直方图。
2.1.2 分析近红外强度
此函数此函数计算与植物关联的每个像素的强度,并将这些值写到Outputs类。 还可以返回/绘制/打印出像素强度的直方图。
plantcv.analyze_nir_intensity(gray_img, mask, bins=256, histplot=False)
返回直方图图像(当 histplot 为 时,否则返回对象)
- 图像的遮罩区域内的近红外像素频率。
2.1.3 分析形状
形状分析输出输入对象(轮廓或分组轮廓)的数值属性,在分组轮廓上效果最佳。
plantcv.analyze_object(img, obj, mask)
- 用于输出图像的形状特征,包括高度,对象区域,凸包,凸包区域,周长,范围x,范围y,最长轴,质心x坐标,质心y坐标(以范围QC为边界)(如果对象触摸边缘 图片,已标记图片)。
2.1.4 分析热值
此函数计算与温度相关的每个像素的强度,并将这些值写到文件中。 可以选择创建像素强度的直方图。
plantcv.analyze_thermal_values(thermal_array, mask, histplot=False)
返回热直方图(如果histplot = True,否则返回None对象)
- 有关遮罩区域内图像温度的数据。
2.1.5 应用蒙版
将二进制蒙版应用于图像。
plantcv.apply_mask(img, mask, mask_color)
返回蒙版图像
- 在灰度或RGB图像上应用二进制图像蒙版可用于分离植物和背景材料。
2.1.6 自动裁切
将图像裁剪为对象,并允许用户指定图像填充(如果需要)
plantcv.auto_crop(img, obj, padding_x=0, padding_y=0, color=‘black’)
返回裁剪后的图像
2.1.7 背景去除
使用cv2.BackgroundSubtractorMOG2()从前景的背景减法创建一个二进制图像。 返回的二进制图像是一个应该主要包含前景像素的蒙版。 除了不包含感兴趣的对象外,背景图像应与前景图像具有相同的背景。
图片必须具有相同的大小和类型。 否则,将拍摄较大的图像并将其降采样为较小的图像尺寸。 如果它们是不同类型,将发生错误。
plantcv.background_subtraction(foreground_image, background_image)
返回前景蒙版
- 用于从包含对象的前景图像和不包含对象的背景图像中提取对象。
- 例如。 一个空的罐的图片和背景和植物,罐和相同背景的图片。 最好取自同一位置。
边界线工具(2.1.18~2.1.19)
2.1.8 水平边界线工具
使用边界工具设置边界线,这使用户可以找到边界线上方和下方的范围y(“高度”)以及边界线上方和下方的面积。 如果植物的花盆大小/位置保持相对恒定,则此工具将发挥最佳作用。
plantcv.analyze_bound_horizontal(img, obj, mask, line_position)
返回带有边界数据的图像
- 用于定义图像的边界线,以查找边界线上方和下方的高度以及上方和下方的区域。
2.1.9 垂直边界线工具
使用边界工具设置边界线,这使用户可以在设置边界线的右侧和左侧以及左侧和右侧找到范围x(“宽度”)。 如果植物的花盆大小/位置保持相对恒定,则此工具将发挥最佳作用。
plantcv.analyze_bound_vertical(img, obj, mask, line_position)
返回带有边界数据的图像
- 用于定义图像的边界线,以查找边界线左右两侧的宽度以及左右边界的面积。
2.1.10 Canny 边缘检测
使用skimage的Canny滤镜从RGB或灰度图像创建边缘的二进制图像。
plantcv.canny_edge_detect(img, mask=None, sigma=1.0, low_thresh=None, high_thresh=None, thickness=1, mask_color=None, use_quantiles=False)
返回二进制图像
- 使用Canny算法的边缘过滤器
2.1.11 Closing
清除图像中的暗噪声。
plantcv.closing(gray_img, kernel=None)
返回过滤的图像。
- 用于减少图像噪音,特别是小的暗点。
2.1.12 Cluster Contours(聚类轮廓)
此功能拍摄具有多个轮廓的图像,并根据用户对行和列的输入对它们进行聚类。
platncv.cluster_contours(img, roi_objects, roi_obj_hierarchy, nrow=1,ncol=1, show_grid=False)
返回分组的轮廓索引,轮廓,层次
- 根据近似的行和列数对轮廓进行聚类
2.1.13 聚类轮廓和分割图像
此函数获取聚类轮廓并将其分割为多个图像,还进行检查以确保输入的文件名数量与聚类轮廓的数量匹配。
plantcv.cluster_contour_splitimg(rgb_img, grouped_contour_indexes, contours, hierarchy, outdir=None, file=None, filenames=None)
返回输出路径,输出图片,输出掩码
- 采取聚类的轮廓并将其分成多个图像。
- 函数输入通常来自聚类轮廓函数的输出。
2.1.14 调色板
返回RGB颜色值的列表,这些颜色值在整个颜色图上均等分布。 所使用的颜色图是可配置的,并且颜色可以按顺序或随机顺序返回。
plantcv.color_palette(num, saved=False)
返回颜色
色彩空间转换(2.1.15~2.1.17)
2.1.15 RGB到灰色
将图像从RGB颜色空间转换为灰度。
plantcv.rgb2gray(rgb_img)
返回灰度图像
- 在需要一组颜色时使用。
- 请参阅:多工厂教程,形态学教程,空间聚类和分水岭分割。
- 访问Matplotlib网站以获取可用颜色图的列表。
2.1.16 RGB到LAB
将图像从RGB颜色空间转换为LAB颜色空间并分割通道。
plantcv.rgb2gray_lab(rgb_img, channel)
返回分割图像(l,a或b通道)。用于帮助区分植物和背景
- 用于帮助区分植物和背景
2.1.17 RGB到HSV
将图像从RGB颜色空间转换为HSV颜色空间并拆分通道。
plantcv.rgb2gray_hsv(rgb_img, channel)
返回分割图像(h(色相),s(饱和度)或v(值)通道)
- 用于帮助区分植物和背景
2.1.18 Crop
将图像裁剪为用户指定的坐标
plantcv.crop(img, x, y, h, w)
返回裁剪后的图像
- 分割图像
- 允许用户避免使用Python代码拼接数组,尽管Numpy数组也可以使用此方法进行裁剪。
2.1.19 裁剪和定位蒙版
采取二进制掩码并将其放置在另一个图像上。
plantcv.crop_position_mask(img, mask, x, y, v_pos=“top”, h_pos=“right”)
返回新掩码
- 此功能用于将二进制蒙版放置在另一幅图像上。 该功能还将调整遮罩的大小,使其与目标图像的大小相同。
2.1.20 膨胀
执行形态学“膨胀”过滤。 如果在内核中设置的条件为真,则在内核中心添加像素。
plantcv.dilate(gray_img, ksize, i)
返回膨胀后的图像
- 用于执行形态膨胀过滤。 帮助扩大边缘的物体,尤其是侵蚀后。
2.1.21 距离变换
对二进制图像执行距离转换。
plantcv.distance_transform(bin_img, distance_type, mask_size)
返回在0和1之间的距离转换图像
- 用于通过阈值化和标记辅助的分水岭分割来执行对象分割。
2.1.22 侵蚀
执行形态学“侵蚀”过滤。 如果在内核中设置的条件为true,则将像素保持在内核的中心,否则删除像素。
plantcv.erode(gray_img, ksize, i)
- 用于执行形态腐蚀过滤。 帮助去除孤立的噪声像素或去除对象的边界。
2.1.23 填充
识别对象并填充小于指定大小的对象
plantcv.fill(bin_img, size)
returns fill_image
- 用于减少图像噪点
2.1.24 填充孔
通过进行溢流填充来清除胡椒噪声(黑洞)
plantcv.fill_holes(bin_img)
returns fill_image
- 用于减少图像噪点
2.1.25 查找对象
在图像中查找对象。
plantcv.find_objects(img, mask)
返回对象,对象层次结构
- 用于识别图像中的对象(植物材料)。
2.1.26 翻转图像
在水平或垂直方向上翻转图像
plantcv.flip(img, direction)
returns flipped_image
- 必要时用于翻转图像
过滤器(2.1.27~2.1.29)
2.1.27 拉普拉斯滤波器
这是一种基于二阶导数的用于识别和突出显示精细边缘的过滤方法。
plantcv.laplace_filter(gray_img, ksize, scale)
返回过滤的图像
- 用于定义对象周围的边缘
2.1.28 索贝尔滤波器
这是一种用于基于一阶导数来识别和突出显示像素强度的粗略变化的过滤方法。 结果与Scharr滤波器函数相似。
plantcv.sobel_filter(gray_img, dx, dy, ksize)
返回过滤的图像
- 用于定义对象内部和周围的边缘。
- 光圈大小必须大于最大导数(ksize> = dx和ksize> = dy)才能运行
2.1.29 沙尔滤波器
这是一种使用一阶导数来识别和突出显示渐变边缘/特征的过滤方法。 通常用于独立确定沿x轴(dx = 1,dy = 0)和y轴(dx = 0,dy = 1)的梯度。 性能与Sobel滤波器非常相似。 用于检测边缘和/或像素强度的变化。
plantcv.scharr_filter(img, dx, dy, scale)
返回过滤的图像
- 这是一种使用一阶导数来识别和突出显示渐变边缘/特征的过滤方法。 通常用于独立确定沿x轴(dx = 1,dy = 0)和y轴(dx = 0,dy = 1)的梯度。 性能与Sobel滤波器非常相似。
- 导数必须加到1(dx + dy == 1)才能运行
2.1.30 高斯模糊
应用高斯模糊滤镜。 将中值应用于内核大小(ksize x ksize)内的中心像素。 该函数是OpenCV函数高斯模糊的包装器。
plantcv.gaussian_blur(img, ksize, sigma_x=0, sigma_y=None)
返回模糊的图像。用于减少图像噪点
- 用于减少图像噪点
2.1.31 获取内核
创建内核结构元素
plantcv.get_kernel(size, shape)
返回已过滤的图像
- 创建要在各种过滤器功能(即关闭和打开)中使用的内核结构元素
2.1.32 获取近红外图像
获取与VIS图像匹配的NIR图像
plantcv.get_nir(path, filename)
returns nir_path
- 此功能可能仅对具有多种相机类型的用户有用。 我们使用此功能查找与VIS图像匹配的NIR图像,该图像在同一目录中但包含多个图像(正则表达式)。 需要针对不同的文件命名结构/图像类型/文件结构进行修改。
2.1.33 直方图均衡
这是一种用于标准化图像中信号强度值分布的方法。 如果图像的对比度较低,则将更容易进行阈值处理。
plantcv.hist_equalization(gray_img)
返回归一化图像
- 用于归一化图像中信号强度的分布。
高光谱数据(2.1.34~2.1.39)
2.1.34 分析光谱指数
此函数计算光谱指数统计量,并将这些值作为观测值写到Outputs类。
plantcv.hyperspectral.analyze_index(index_array, mask, histplot=False, bins=100, min_bin=0, max_bin=1)
返回NULL
- 计算有关蒙版区域中输入索引的平均值,中位数和标准偏差的数据。
- 如果使用的索引在屏蔽后会具有负值(即PRI),则默认min_bin = 0会将像素频率数据截止为0,除非进行调整。
2.1.35 分析光谱值
此函数计算与高光谱数据立方体关联的反射频率,并将这些值写为观测值以保存。 也可以打印出平均反射强度的直方图。
plantcv.hyperspectral.analyze_spectral(array, mask, histplot=False)
返回反射直方图(如果histplot = True,否则返回None对象)
- 存储的输出数据:运行此函数时,数据(“ max_reflectance”,“ min_reflectance”,“ median_reflectance”,“ spectral_std”,“ spectral_frequencies”,“ global_mean_reflectance”,“ global_median_reflectance”,“ global_spectral_std”)会自动存储到Outputs类 。
2.1.36 校准
使用白色和深色参考图像校准原始高光谱图像。
plantcv.hyperspectral.calibrate(raw_data, white_reference, dark_reference)
返回校准的光谱数据类实例
- 用于将原始高光谱图像数据校准为反射率值。 根据TERRA-REF团队发布的校准协议,使用反射率=(原始数据-深色参考)/(白色参照-深色参考)进行校准。 根据使用的高光谱相机,此校准过程可能看起来有所不同,因此我们强烈建议PlantCV用户在PlantCV GitHub问题页面上与PlantCV开发人员/维护人员联系,以请求扩展此功能的功能以处理来自不同相机的数据。
注意: 取决于白色和深色参考图像,可能会有> 1.0的像素值,但所有<0的像素值都会被截断为0。
2.1.37 光谱指数
plantcv.spectral_index子软件包包含一些函数,这些函数可以从多通道图像数据(通常是从高光谱数据多维数据集)计算索引,而高光谱数据多维数据集是在使用mode ='envi’的pcv.readimage函数读取时创建的Spectral_data类实例。 RGB图像是某些索引的有效输入。 如果所需的波长不能用于特定的索引,还有一个参数可以提供一定的灵活性。
ARI:
使用反射率值计算花色苷反射率指数(Gitelson等,2001):
ARI = (1 / R550) - (1 / R700)
plantcv.spectral_index.ari(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
CI_REDEDGE
使用反射率值计算叶绿素指数变红(Gitelson等,2003):
CI_REDEDGE = (R800 / R700) - 1
plantcv.spectral_index.ci_rededge(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
CRI550
使用反射率值计算类胡萝卜素反射率指数550(Gitelson等,2002a):
CRI550 = (1 / R510) - (1 / R550)
plantcv.spectral_index.cri550(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
CRI700
使用反射率值计算类胡萝卜素反射率指数700(Gitelson等,2002a):
CRI700 = (1 / R510) - (1 / R700)
plantcv.spectral_index.cri700(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
EGI
使用RGB值计算多余的绿色指数(Woebbecke等,1995):
r = R / (R + G + B)
g = G / (R + G + B)
b = B / (R + G + B)
EGI = 2g - r - b
plantcv.spectral_index.egi(rgb_img)
返回计算的索引数组(Spectral_data类的实例)
EVI
使用反射率值计算增强植被指数(Huete等,1997):
EVI = (2.5 * (NIR - RED)) / (1 + NIR + (6 * RED) - (7.5 * BLUE))
在这里,我们对NIR使用〜R800,对于RED使用〜R670,对于BLUE使用〜R480:
EVI = (2.5 * (R800 - R670)) / (1 + R800 + (6 * R670) - (7.5 * R480))
plantcv.spectral_index.evi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
GDVI
使用反射率值计算绿色差异植被指数(Sripada等,2006):
GDVI = (NIR - GREEN) / (NIR + GREEN)
在这里,我们为NIR使用〜R800,为GREEN使用〜R550:
GDVI = (R800 - R550) / (R800 + R550)
plantcv.spectral_index.gdvi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
MARI
使用反射率值计算修正的花色苷反射率指数(Gitelson等,2006):
马里=((1 / R550)-(1 / R700))* R800
plantcv.spectral_index.mari(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
MCARI
使用反射率值计算修改后的叶绿素吸收反射率指数(Daughtry等,2000):
MCARI =((R700-R670)-0.2 (R700-R550))(R700 / R670)
plantcv.spectral_index.mcari(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
MTCI
使用反射率值计算MERIS陆地叶绿素指数(Dash和Curran 2004):
MTCI =(R753.75-R708.75)/(R708.75-R681.25)
返回计算的索引数组(Spectral_data类的实例)
NDRE
使用反射率值计算归一化差异红边指数(Barnes等,2000):
NDRE =(R790-R720)/(R790 + R720)
plantcv.spectral_index.ndre(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
NDVI
使用反射率值计算归一化差异植被指数(Rouse等,1974):
NDVI =(近红外-红色)/(近红外+红色)
在这里,我们为NIR使用〜R800,为RED使用〜R670:
NDVI =(R800-R670)/(R800 + R670)
plantcv.spectral_index.ndvi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PRI
使用反射率值计算光化学反射率指数(Penuelas等,1995a):
PRI =(R531-R570)/(R531 + R570)
索引范围:-1.0,1.0
plantcv.spectral_index.pri(hsi,距离= 20)
返回计算的索引数组(Spectral_data类的实例)
PSND-Chlorophyll a
使用反射率值计算叶绿素a的颜料比归一化差异(Blackburn 1998):
PSND_CHLA =(R800-R680)/(R800 + R680)
plantcv.spectral_index.psnd_chla(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSND-Chlorophyll b
使用反射率值计算叶绿素b的颜料比归一化差异(Blackburn 1998):
PSND_CHLB =(R800-R635)/(R800 + R635)
索引范围:-1.0,1.0
plantcv.spectral_index.psnd_chlb(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSND-Caroteniods
使用反射率值计算胡萝卜素的色素比色归一化差异(Blackburn 1998):
PSND_CAR = (R800 - R470) / (R800 + R470)
索引范围: -1.0, 1.0
plantcv.spectral_index.psnd_car(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSRI
使用反射率值计算植物衰老反射率指数(Merzlyak等,1999):
PSRI = (R678 - R500) / R750
索引范围:-∞, ∞
plantcv.spectral_index.psri(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSSR-Chlorophyll a
使用反射率值计算叶绿素a的颜料比简单比(Blackburn 1998):
PSSR_CHLA = R800 / R680
Index range: -1.0, 1.0
plantcv.spectral_index.pssr_chla(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSSR-Chlorophyll b
使用反射率值计算叶绿素b的颜料比简单比(Blackburn 1998):
PSSR_CHLB = R800 / R635
Index range: -1.0, 1.0
plantcv.spectral_index.pssr_chlb(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
PSSR-Caroteniods
使用反射率值计算胡萝卜素的颜料比简单比(Blackburn 1998):
PSSR_CAR = R800 / R470
Index range: -1.0, 1.0
plantcv.spectral_index.pssr_car(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
RGRI
使用反射率值计算花青素的红色:绿色比率指数(Gamon和Surfus 1999):
106/5000
RGRI =红色/绿色
在这里,我们将〜R670用于红色,将〜R560用于绿色:
RGRI = R670 / R560
索引范围:0.0,∞
plantcv.spectral_index.rgri(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
RVSI
使用反射率值计算红边植被压力指数(Merton和Huntington 1999):
RVSI = ((R714 + R752) / 2) - R733
Index range: -1.0, 1.0
plantcv.spectral_index.rvsi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
SAVI
使用反射率值计算土壤调整的植被指数(Huete 1988):
SAVI =(1.5 *(近红外-红色))/(近红外+红色+ 0.5)
在这里,我们为NIR使用〜R800,为RED使用〜R680:
SAVI =(1.5 *(R800-R680))/(R800 + R680 + 0.5)
索引范围:-1.2,1.2
plantcv.spectral_index.savi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
SIPI
使用反射率值计算结构无关的颜料指数(Penuelas等,1995b):
SIPI =(近红外-红色)/(近红外-蓝色)
在这里,我们为NIR使用〜R800,对于红色使用〜670,对于蓝色使用〜R480:
SIPI =(R800-R680)/(R800-R480)
索引范围:-∞,∞
plantcv.spectral_index.sipi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
SR
使用反射率值计算“简单比率”(Jordan 1969):
SR =近红外/红色
在这里,我们为NIR使用〜R800,为RED使用〜R670:
SR = R800 / R670
索引范围:0.0,∞
plantcv.spectral_index.sr(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
VARI
使用反射率值计算可见大气阻力指数(Gitelson等,2002b):
VARI =(绿色-红色)/(绿色+红色-蓝色)
在这里,蓝色使用〜R480,绿色使用〜R550,红色使用〜R670:
VARI =(R550-R670)/(R550 + R670-R480)
索引范围:-∞,∞
plantcv.spectral_index.vari(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
VI_GREEN
使用反射率值使用绿色带计算植被指数(Gitelson等,2002b):
VIgreen =(绿色-红色)/(绿色+红色)
在这里,我们将〜R550用于绿色,将〜R670用于红色:
VIgreen =(R550-R670)/(R550 + R670)
索引范围:-1.0,1.0
plantcv.spectral_index.vi_green(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
WI
使用反射率值计算水指数(Penuelas等,1997):
WI = R900 / R970
索引范围:0.0,∞
plantcv.spectral_index.wi(hsi, distance=20)
返回计算的索引数组(Spectral_data类的实例)
2.1.38 提取波长
此函数从高光谱数据立方体中提取最接近用户定义波长的单个反射带,该光谱是在以mode ='envi’读取pcv.readimage时创建的Spectral_data类实例。 此函数类似于pcv.spectral_index函数,该函数从高光谱数据立方体计算并输出标准光谱指数。
plantcv.hyperspectral.extract_wavelength(spectral_data, wavelength)
返回通道数组(Spectral_data类的实例)
- 此功能将打印出发现哪个波长最接近目标波长值输入。 另外,此元数据可用,因为该函数输出光谱数据类实例,该实例具有存储数组类型的方法。
2.1.39 光谱数据类
PlantCV数据对象类。
Spectral_data是用于创建用于PlantCV分析的高光谱/多光谱数据对象实例的类。 使用pcv.readimage读取高光谱数据时,会自动创建Spectral_data实例。 PlantCV高光谱子包中的函数利用plantcv.Spectral_data实例属性,该属性具有有关高光谱数据实例的元数据,以简化功能输入。 大多数元数据是从.hdr文件中收集的。 这些属性由PlantCV功能在内部使用,但也可以由用户使用。
2.1.40 图片添加
这是一种用于在图像之间执行逐像素相加的方法。 使用了numpy加法函数’+’。 这是模运算,而不是cv2.add fxn饱和运算。
plantcv.image_add(gray_img1, gray_img2)
返回两个图像之和的图像
- 用于合并/堆叠在两个图像中发现的像素级强度
2.1.41 图像减法
此函数用于从另一个灰度图像阵列中减去一个灰度图像阵列的值。 所得的灰度图像阵列的最小元素值为零。 也就是说,所有因减法得出的负值都将强制为零。
plantcv.image_subtract(gray_img1, gray_img2)
- 返回两个图像的像素值之差
2.1.42 倒置
反转二进制图像。 这是OpenCV函数的包装器bitwise_not
plantcv.invert(gray_img)
- 反转图像值。 对于反转图像蒙版很有用。
地标分析(2.1.43~2.1.47)
2.1.43 急性顶点
给定对象轮廓和用户指定的参数,对尖角执行启发式搜索。 锐角(锐角)通常与对象尖端相关。 输出满足参数中指定的条件的点的python列表。
plantcv.acute_vertex(img, obj, window, thresh, sep)
返回符合指定条件的点列表,选择了点的图像
- 用于根据焦点像素和轮廓上参考点之间的角度识别尖端。
- 数据(“ tip_coordinates”)在运行此函数时会自动存储到Outputs类。 在工作流期间始终可以访问这些数据(以下示例)。 有关数据输出的更多详细信息,请参见输出观察摘要.
2.1.44 X轴伪地标
将植物对象划分为二十个等距的箱,并根据其实际(未缩放)位置分配伪地标点。 一旦缩放了该数据,该方法就可以提供一些与形状无关的信息,而与尺寸无关。
plantcv.x_axis_pseudolandmarks(img, obj, mask)
返回地标在顶部(顶部),地标在底部(底部),地标在中心_垂直_轴(中心_V)
- 用于在水平轴上标识一组六十个等距地标。 缩放后,这些可用于形状分析。
- 运行此函数时,数据(“ top_lmk”,“ bottom_lmk”,“ center_v_lmk”)会自动存储到Outputs类。 在工作流期间始终可以访问这些数据(以下示例)。 有关数据输出的更多详细信息,请参见输出观察摘要输入对象轮廓和图像。
2.1.45 y_axis_pseudo地标
沿y轴将植物对象划分为20个等距的容器,并根据其实际(未缩放)位置分配伪地标点。 一旦缩放了该数据,该方法就可以提供一些与形状无关的信息,而与尺寸无关。
plantcv.y_axis_pseudolandmarks(img, obj, mask)
返回地标在左侧(left),地标在右侧(right),地标at_center_along_the_horizontal_axis(center_h)
- 用于在垂直轴上标识一组六十个等距地标。 缩放后,这些可用于形状分析。
- 存储的输出数据:运行此函数时,数据(“ left_lmk”,“ right_lmk”,“ center_h_lmk”)会自动存储到Outputs类。 在工作流期间始终可以访问这些数据(以下示例)。 有关数据输出的更多详细信息,请参见输出观察摘要。
2.1.46 规模特征
这是将界标点的坐标转换为通用比例(0-1.0)的功能。比例用于消除尺寸对形状参数的影响。 返回元组列表。
plantcv.scale_features(obj, mask, points, line_position)
返回重新缩放的界标点,重新缩放的质心点,重新缩放的基线点
- 用于重新缩放界标点(包括质心和边界线)的点坐标。
2.1.47 Landmark_reference_pt_dist
此功能用于测量从用户定义的点到质心的距离,以及由质心坐标沿x轴定义的点和基线坐标(锅顶部)沿y轴定义的点的功能。 在侧视图图像中计算叶尖点到植物对象的质心之间的垂直距离可以提供膨胀压力的替代度量。
plantcv.landmark_reference_pt_dist(points_r, centroid_r, bline_r)
用于估计地标点相对于形状参考地标的距离和角度(质心和罐高或基线)
逻辑操作(2.1.48~2.1.50)
2.1.48 逻辑运算-And
使用按位AND运算符合并两个图像。 图片大小必须相同。 这是Opencv函数bitwise_and的包装。
plantcv.logical_and(bin_img1, bin_img2)
- 用于合并到图像。 当组合单独设定阈值的图像通道时非常有用。
2.1.49 逻辑运算-Or
使用按位或运算符连接两个图像。 图片大小必须相同。 这是Opencv函数bitwise_or的包装。
plantcv.logical_or(bin_img1, bin_img2)
- 用于合并到图像。 当组合单独设定阈值的图像通道时非常有用。
2.1.50 逻辑运算-XOR
使用按位XOR运算符连接两个图像(两个图像之间的差异)。 图片大小必须相同。 这是Opencv函数bitwise_xor的包装。
logical_xor(bin_img1, bin_img2)
- 用于合并到图像。当组合单独设定阈值的图像通道时非常有用。
2.1.51 中位模糊
应用中值模糊滤镜。 将中值应用于内核大小内的中心像素。 该函数是SciPy函数中值滤波器的包装器。
plantcv.median_blur(gray_img, ksize)
- 用于减少图像噪点
形态功能(2.1.52~2.1.68)
2.1.52 分析茎对象
在检查植物或植物器官形态的工作流程中确定的主要或茎对象可以具有围绕骨架的茎段测量的特定特征。
plantcv.morphology.analyze_stem(rgb_img, stem_objects)
用于输出茎的形态特征,包括高度,角度和长度。
数据(“ stem_angle”,“ stem_height”和“ stem_length”)在运行此函数时会自动存储到Outputs类中。 运行print_results时,将打印出Outputs类中存储的所有数据,但是始终可以在工作流期间访问这些数据。 有关数据输出的更多详细信息,请参见输出观察摘要
2.1.53 检查圈
检查骨架化图像中的圈。
plantcv.morphology.check_cycles(skel_img)
返回调试周期图像
标识骨骼图像中的循环。
运行此函数时,数据(‘num_cycles’)自动存储到Outputs类。 在工作流期间始终可以访问这些数据(以下示例)。 有关数据输出的更多详细信息,请参见输出观察摘要。
2.1.54 填充部分
传播分段骨架的标签以填充蒙版。
plantcv.morphology.fill_segments(mask, objects)
使用分水岭算法填充传播对象标签的蒙版。
2.1.55 查找分支/交汇点
在骨架化图像中查找分支/交点。
plantcv.morphology.find_branch_pts(skel_img, mask=None)
返回分支点的二进制掩码
- 识别骨架图像中的分支/交点
- 运行此函数时,数据(‘branch_pts’)自动存储到Outputs类。 运行print_results时,将打印出Outputs类中存储的所有数据,但是始终可以在工作流期间访问这些数据。 有关数据输出的更多详细信息,请参见输出观察摘要。
2.1.56 查找端点/提示
查找骨架图像的端点。
plantcv.morphology.find_tips(skel_img, mask=None)
返回端点的二进制掩码
- 识别骨架图像中的端点/尖端
2.1.57 修剪
修剪倒刺的骨架图像,然后将骨架图像分解成单独的碎片。
plantcv.morphology.prune(skel_img, size=0, mask=None)
返回修剪的骨架图像,分割的图像,分割的对象
- 该“修剪”伪造的分支/倒钩从骨骼上移开。 该功能会修剪骨骼图像中大小为像素或更小的倒钩。 如果使用默认大小= 0,则修剪的骨架将与输入骨架图像相同。
2.1.58 测量线段角度
测量线段的角度。
plantcv.morphology.segment_angle(segmented_img, objects)
返回带标签的图像
- 通过将线性回归线拟合到每个线段来计算线段的角度(以度为单位)。 用户只能传递叶子对象(从plantcv.morphology.segment_sort返回)只能收集叶子的角度。
2.1.59 合并部分
手动组合分段骨架中的分段
plantcv.morphology.segment_combine(segment_list, objects, mask)
返回标签图像,新的段对象列表
- 具有更高复杂度的图像通常会导致plantcv.morphology子包内的函数中使用的算法出现问题。 但是,仍然可以通过诸如plantcv.morphology.segment_combine之类的手动步骤从此类图像收集准确的数据。 一个示例工作流程将使用plantcv.morphology.check_cycles来识别具有植物部分相互遮挡的图像,并通过合并被认为属于同一叶的段来进行校正。
2.1.60 段曲率
测量线段的曲率。
plantcv.morphology.segment_curvature(segmented_img, objects)
返回带标签的图像
- 通过采用测地距离(plantcv.morphology.segment_path_length)与欧氏距离plantcv.morphology.segment_euclidean_length的比值来计算分段的曲率。 二维曲折度的测量。 接近1的值表示线段是直线,而较大的值表示线段曲率更大。 用户只能传递叶子对象(从plantcv.morphology.segment_sort返回)仅收集叶子的曲率。
2.1.61 测量线段的欧几里得距离
测量线段的欧几里得距离。
plantcv.morphology.segment_euclidean_length(segmented_img, objects)
返回带标签的图像
- 计算每个线段的欧式距离。 用户只能传递叶子对象(从plantcv.morphology.segment_sort返回)仅收集叶子的长度。
2.1.62 确定细分
用ID号标记段。
plantcv.morphology.segment_id(skel_img, objects, mask=None)
返回被分割的图像,带有分割ID标记的图像
- 绘制带有细分ID的细分图像。 分割的图像输出可用于下游功能,例如plantcv.morphology.segment_angle,plantcv.morphology.segment_curvature,plantcv.morphology.segment_euclidean_length,plantcv.morphology.segment_path_length,plantcv.morphology.segment_tangent_angle。 标记的图像可以告知分析所有下游功能的段的顺序。
2.1.63 段插入角度
测量叶片插入角度。
plantcv.morphology.segment_insertion_angle(skel_img, segmented_img, leaf_objects, stem_objects, size)
返回带标签的图像
- 与茎杆角度相比,以骨架段的度数找到叶片插入点的“切线”角。 使用每片叶子的内部尺寸像素找到线性回归线,并计算插入角和茎之间的角度。
2.1.64 测量段的路径长度
测量线段的测地距离。
plantcv.morphology.segment_path_length(segmented_img, objects)
returns labeled_image
- 计算每个线段的测地线距离。 用户只能传递叶子对象(从plantcv.morphology.segment_sort返回)仅收集叶子的长度。
2.1.65 分割骨架
将骨架化的图像分割成单独的片段。
plantcv.morphology.segment_skeleton(skel_img, mask=None)
返回分段图像,分段对象
- 将骨骼分成多个部分。 当size = 0时,执行与plantcv.morphology.prune完全相同的过程。 如果执行修剪功能,则使用plantcv.morphology.segment_skeleton是多余的。
2.1.66 分类分段
将框架化图像中的片段分为两类:叶对象和其他对象。
lantcv.morphology.segment_sort(skel_img, objects, mask=None, first_stem=True)
返回次要对象,主要对象
- 将骨架线段分为两类:主要和次要线段。 如果段的两个端点都与分支点重合,则将这些段归为主要段。 如果细分的端点中至少有一个与某个提示重合,则细分为次要。 通过此示例中的分类方法,以下主要片段为茎,次要片段为叶。 次要部分的颜色为绿色,主要部分的颜色为紫红色。
2.1.67 测量线段的切线角
测量线段的切线角度以量化叶片行为。
plantcv.morphology.segment_tangent_angle(segmented_img, objects, size)
返回标记的图像
- 以骨架线段的角度查找“切线”角。 在每个线段的任一端使用大小像素查找线性回归线,并计算每个线段绘制的两条线之间的角度。 用户只能传递叶子对象(从plantcv.morphology.segment_sort返回)只能收集叶子的角度。
2.1.68 创建骨架
骨架化会保留一个蒙版,并将其缩小为1像素宽的表示形式,同时保留该结构。
plantcv.morphology.skeletonize(mask)
返回二进制骨架(1像素宽的表示形式)
- 将二进制对象缩减为1像素宽的表示形式(骨架)
2.1.69 朴素贝叶斯分类器
根据从训练集中学习到的统计信息,从彩色图像中创建一个二进制(带标签)图像。 从训练集中,我们为随机变量植物(P)和背景(B)计算概率密度函数(PDF),每个都包含随机变量色相(H),饱和度(S)和值(V)(颜色通道) )。 给定这些PDF,我们以贝叶斯定理为基础,根据随机变量P或B来计算像素的联合概率,而朴素的假设是随机变量是独立的(为方便起见)。 如果P(像素=植物)> P(像素=背景),则输出像素标记为植物(255)或背景(0)。
plantcv.naive_bayes_classifier(rgb_img, pdf_file)
- 用于帮助区分植物和背景
2.1.70 合并对象
将对象组合在一起以进行下游分析,通常在对象过滤之后进行。
plantcv.object_composition(img, contours, hierarchy)
返回分组对象,图像遮罩
- 此功能将对象组合在一起。 这对于形状特征的下游分析很重要,如果不合并植物对象,则一棵植物可能看起来是许多不同的对象。
2.1.71 Opening
过滤图像中的亮噪声。
plantcv.opening(gray_img, kernel=None)
- 用于减少图像噪音,特别是小的亮点(即“盐”)。
2.1.72 输出蒙版和原始图像
将具有相同名称的图像和遮罩写入指定的路径(如果路径中不存在,则在其中创建两个文件夹)。
plantcv.output_mask(img, mask, filename, outdir=None, mask_only=False)
返回imgpath,maskpath,analysis_images
- 编写此功能是为了更轻松地创建用于机器学习的训练集(例如,朴素贝叶斯分类器)
2.1.73 输出类
全局PlantCV输出类。
添加了Outputs类,该类自动存储由以下功能收集的测量和图像:
analyze_bound_horizontal
analyze_bound_vertical
analyze_color
analyze_nir_intensity
analyze_object
analyze_thermal_values
fluor_fvfm
hyperspectral.analyze_spectral
hyperspectral.analyze_index
report_size_marker_area
morphology.check_cycles
morphology.segment_angle
morphology.segment_curvature
morphology.euclidean_length
morphology.segment_insertion_angle
morphology.segment_path_length
morphology.segment_tangent_angle
within_frame
watershed
- 在导入时会自动将Outputs实例创建为plantcv.outputs。 函数pcv.print_results将把所有存储的测量数据打印到一个文本文件中。
光合作用功能(2.1.74~2.1.75)
2.1.74 读取CropReporter荧光图像文件
在将fdark,fmin和fmax识别并提取为单独的numpy ndarray之前,将.DAT图像数据读取到numpy ndarray中,并将帧重塑为datacube。
plantcv.photosynthesis.read_cropreporter(filename)
返回fdark,fmin,fmax
- 读取要处理的文件,并使用包含在相应的.INF文件中的元数据进行读取
- 此功能假定.DAT图像文件及其对应的.INF文件之间有特定的模式。 我们假设对于每个图像文件xx_PSD_xxx.DAT,将有一个具有相同路径的对应元数据文件,该路径名为xx_HDR_xxx.INF。
2.1.75 分析PSII信号
提取对象的Fv / Fm数据。
plantcv.photosynthesis.analyze_fvfm(fdark, fmin, fmax, mask, bins=256)
返回PSII分析图像(Fv / Fm图像,Fv / Fm直方图)
-用于提取每个识别出的植物像素的Fv / Fm或Fv’/ Fm’。
- 生成Fv / Fm数据的直方图。
- 生成Fv / Fm图像。
2.1.76 参数类
全局PlantCV参数类。
参数是存储全局PlantCV属性的类。 导入时会自动将params实例创建为plantcv.params。 更新后的PlantCV函数将导入plantcv.params实例以访问全局配置的属性。
2.1.77 打印图像
将图像写入指定的文件。 这是针对numpy数组(如大多数PlantCV函数所返回的图像)的OpenCV函数写入的包装,并且可以处理matplotlib图形(如pcv.visualize.pseudocolor返回的图形)和绘图ggplots(如返回的直方图) 在pcv.analyze_nir_intensity,pcv.analyze_color,pcv.visualize.histogram和pcv.photosynthesis.analyze_fvfm中)。
plantcv.print_image(img, filename)
- 通常用于调试新的图像处理工作流程
- 用于写出最终结果图像
2.1.78 打印测量结果
添加了一个Outputs类,该类自动存储以下功能收集的度量:
用户还可以使用pcv.outputs.add_observation方法将度量添加到Outputs类。
当运行这些函数中的任何一个(或全部)时,print_results函数将进行存储的测量结果,格式化并打印输出的.json文件以进行数据分析。
plantcv.print_results(filename)
- 打印出结果文件,其中包含处理的每个图像的工作流程中包括的功能所记录的所有测量值。
2.1.79 绘图图像
使用matplotlib在窗口中打开图像或在Jupyter笔记本中绘图。
plot_image(img, cmap=None)
- 通常用于调试新的图像处理工作流程
- 用于在Jupyter笔记本(或窗口)中查看图像
2.1.80 阅读图片
将图像读取到numpy ndarray中,并分割路径和图像文件名(*请参阅有关mode ='envi’的注释)。 使用此功能的大多数方式都是将OpenCV函数读入包装。
plantcv.readimage(filename, mode=“native”)
返回图片,路径,图像文件名
- 在大多数情况下,RGBA图像数据中的alpha通道是未使用的(当用作RGB图像数据时会引起问题),因此除非指定为mode =‘rgba’,否则pcv.readimage()函数将RGBA数据作为RGB图像读取 在默认设置下(mode =‘native’)。 但是,如果需要Alpha通道,则用户可以指定mode =‘rgba’。
可以使用mode ='csv’读取逗号分隔的数据,以便例如在下游分析中使用热数据,例如pcv.analyze_thermal_values
可以使用mode =“ envi”读取ENVI高光谱数据,其中filename参数是原始数据文件。 这种读取数据的模式需要一个filename.hdr文件,该文件用于对高光谱数据立方体进行整形并将数据的波段标记为相应的波长。 在读取数据时会创建Spectral_data类的实例,并且该实例将返回给用户,而不是在其他pcv.readimage模式下返回的常规img,路径和文件名。
2.1.81 使用拜耳马赛克读取图像
将图像读入numpy ndarray并分割路径和图像文件名。 这是OpenCV函数读取的包装。 与readimage相比,此功能专门用于读取具有Bayer马赛克像素图案的图像并返回去马赛克图像。
plantcv.readbayer(filename, bayerpattern = ‘BG’, alg = “default”)
returns img, path, image filename
-读取具有Bayer马赛克像素图案的图像文件以进行处理
2.1.82 遮罩矩形
拍摄输入图像并返回由p1和p2表示的矩形区域掩盖的二进制图像。 注意,p1 =(0,0)是左上角,右下角是p2 =(max-value(x),max-value(y))。
plantcv.rectangle_mask(img, p1, p2, color=“black”)
返回蒙版,二进制img,轮廓,层次结构
- 用于遮盖图像的矩形区域
2.1.83 报告大小标记
获取并记录大小标记的大小,或将区域设置为大小标记。
plantcv.report_size_marker_area(img, roi_contour, roi_hierarchy, marker=‘define’, objcolor=‘dark’, thresh_channel=None, thresh=None)
返回 analysis_image
- 允许用户添加尺寸标记数据,以便可以在图像/相机之间对形状数据进行标准化
2.1.84 调整大小
调整图像大小,用于调整其他图像上的蒙版。
plantcv.resize(img, resize_x, resize_y)
返回调整大小后的图像
- 调整大小
感兴趣的区域选择工具(2.1.85~2.1.92)
2.1.85 创建圆形的兴趣区(ROI)
plantcv.roi.circle(img, x, y, r)
返回 roi_contour, roi_hierarchy
- 用于定义图像中的关注区域。
2.1.86 创建一个椭圆形的感兴趣区域(ROI)
plantcv.roi.ellipse(img, x, y, r1, r2, angle)
返回 roi_contour, roi_hierarchy
- 用于定义图像中的关注区域。
2.1.87 创建一个矩形的感兴趣区域(ROI)
plantcv.roi.rectangle(img, x, y, h, w)
返回 roi_contour, roi_hierarchy
- 用于定义图像中的关注区域。
2.1.88 创建自定义多边形感兴趣区域(ROI)
plantcv.roi.custom(img, vertices)
返回 roi_contours, roi_hierarchies
- 用于定义自定义多边形感兴趣区域。 多边形可以像三角形一样简单,也可以复杂,可以与下游步骤(例如pcv.roi_objects)一起使用。 顶点输入是所需顶点的坐标列表,其中所需顶点是方括号内的元组。
2.1.89 从二进制图像创建感兴趣区域(ROI)
plantcv.roi.from_binary_image(img, bin_img)
返回 roi_contour, roi_hierarchy
- 用于定义自定义多边形感兴趣区域。
2.1.90 创建多个兴趣区域(ROI)
plantcv.roi.multi(img, coord, radius, spacing=None, nrows=None, ncols=None)
返回 roi_contours, roi_hierarchies
用于定义同一图像中的多个感兴趣区域。 用户可以指定起始坐标(坐标),行数和列数以及间距以创建ROI的网格,也可以指定坐标的自定义列表以指定ROI的中心。 提供自定义坐标列表(元组列表)对于缺少植物或不是理想网格的任何排列很有用。 返回可以在下游步骤中使用的轮廓和层次结构的列表。
2.1.91 在感兴趣区域内查找对象
在感兴趣的区域内查找对象,或者将这些对象剪切到感兴趣区域,或者包括与感兴趣区域重叠的对象。
plantcv.roi_objects(img, roi_contour, roi_hierarchy, object_contour, obj_hierarchy, roi_type=‘partial’)
返回保留的对象,对象层次结构,对象蒙版,对象区域
- 如果未执行ROI对象检测,请首先检查ROI是否完全在图像中。
- 用于查找感兴趣区域内的对象并决定保留哪些对象。
2.1.92 要遮盖的感兴趣区域
将感兴趣区域/对象轮廓转换为相同形状的二进制蒙版
plantcv.roi.roi2mask(img, contour)
返回蒙版
- img参数仅用于确定要创建的蒙版的大小。
2.1.93 新旋转
旋转图像而不更改图像尺寸。
rotate(img, rotation_deg, crop)
旋转后返回图像
- 旋转图像,有时需要旋转图像,尤其是在群集对象时。
2.1.94 移位图像
移位图像,但尺寸保持不变
plantcv.shift_img(img, number, side=‘right’)
返回移位后的图像
- 从指定方向移动图像。
2.1.95 空间聚类
根据图像彼此之间的距离分割图像特征。
plantcv.spatial_clustering(mask, algorithm=“DBSCAN”, min_cluster_size=5, max_distance=None)
返回显示所有已着色的群集的图像,每个群集的单独蒙版。
- 此功能自动将图像中的多个功能分离为单独的遮罩。 这些模板可用于下游分析。
2.1.96 标准偏差过滤器
从灰度图像创建像素标准差的灰度图像。
plantcv.stdev_filter(img, ksize, borders=‘nearest’)
返回标准差图像
注意:
此函数在计算上比其他过滤器昂贵,并且可能需要花费一些时间才能运行(如果图像很大,则需要更长的时间)。
阈值方法(2.1.97~2.1.104)
2.1.97 二进制阈值
根据阈值从灰度图像创建二进制图像。 可以将对象目标指定为暗或亮。
plantcv.threshold.binary(gray_img, threshold, max_value, object_type=“light”)
返回阈值/二进制图像
- 用于帮助区分植物和背景
2.1.98 自定义范围阈值
根据用户定义的阈值,从RGB或灰度图像创建二进制图像(蒙版)和蒙版图像。 可以使用的阈值色彩空间是灰度,RGB,HSV或LAB。
plantcv.threshold.custom_range(img, lower_thresh, upper_thresh, channel=‘RGB’)
- 用于帮助区分植物和背景
2.1.99 高斯自适应阈值
使用高斯自适应阈值法从灰度图像创建二进制图像。
plantcv.threshold.gaussian(gray_img, max_value, object_type=“light”)
返回阈值/二进制图像
- 用于帮助区分植物和背景
2.1.100 平均自适应阈值
使用均值自适应阈值方法从灰度图像创建二进制图像。
plantcv.threshold.mean(gray_img, max_value, object_type=“light”)
返回阈值/二进制图像
- 用于帮助区分植物和背景
2.1.101 Otsu自动阈值
根据阈值从灰度图像创建二进制图像。
plantcv.threshold.otsu(gray_img, max_value, object_type=“light”)
返回阈值/二进制图像
- 用于帮助区分植物和背景
2.1.102 饱和阈值
通过对饱和像素进行阈值处理,从RGB图像创建二进制图像。
plantcv.threshold.saturation(rgb_img, threshold=255, channel=“any”)
返回阈值/二进制图像
- 用于基于来自任何或所有颜色通道的像素饱和度进行阈值设置。 在进行颜色分析之前,这可能是有用的预处理步骤。
2.1.103 三角形自动阈值
使用自适应阈值处理从灰度图像创建二进制图像。
plantcv.threshold.triangle(gray_img, max_value, object_type=“light”, xstep=1)
返回阈值/二进制图像
- 用于帮助区分植物和背景
2.1.104 纹理阈值
使用skimage纹理计算为阈值从灰度图像创建二进制图像。
plantcv.threshold.texture(gray_img, ksize, threshold, offset=3, texture_method=‘dissimilarity’, borders=‘nearest’, max_value=255)
返回阈值/二进制图像
- 用于基于纹理的阈值
此函数在计算上很昂贵,并且可能需要几分钟才能运行(如果图像很大,甚至需要更长的时间)。
转换方法(2.1.105~2.1.116)
2.1.105 自动查找色卡
自动检测色卡的位置和大小。 在色卡定位在所有图像中都不恒定的工作流程中很有用。
plantcv.transform.find_color_card(rgb_img, threshold_type=‘adaptgauss’, threshvalue=125, blurry=False, background=‘dark’, record_chip_size=‘median’)
返回 df, start_coord, spacing
df-找到的所有色卡芯片的数据框。
start_coord-从x和y坐标开始的第一个芯片掩码的二元素元组。 在创建色卡遮罩功能中很有用。
spacing-芯片掩模之间的水平和垂直间距的两元素元组。 在创建色卡遮罩功能中很有用。
注意: 此功能并不完全健壮。 为了自动检测色卡,必须满足一些重要的假设:
图像中只有一张色卡。
色卡应为4x6(如X-Rite ColorChecker护照照片)。 间距计算基于4x6色卡。 尽管对于大多数色卡来说,起始坐标将很可靠,除非缺少整行或整列芯片。 缺少切屑也可能会歪斜间距,也可能会歪曲起始坐标。
色卡没有倾斜。 卡可以是垂直或水平的,但如果倾斜,则计算间距时会出错。
2.1.106 创建标签色卡
根据用户定义的位置为每个色卡创建一个唯一标记的蒙版。
plantcv.transform.create_color_card_mask((rgb_img, radius, start_coord, spacing, nrows, ncols, exclude=[])
返回掩码:
- 掩码:被标记的芯片蒙版。 第一个芯片标记为0,然后是10、20,依此类推。
2.1.107 颜色矩阵
计算由灰度蒙版表示的RGB图像中每个区域的平均R,G,B值,并将它们保存在n x 4的矩阵中,其中n =蒙版中表示的色片数。
plantcv.transform.get_color_matrix(rgb_img, mask)
返回headers, color_matrix
- color_matrix:一个n x 4矩阵,其中包含每个颜色芯片的平均红色值,平均绿色值和平均蓝色值。
- header:分别对应于color_matrix的4列的4个标头的列表。
2.1.108 摩尔-彭罗斯逆矩阵
计算摩尔-彭罗斯逆矩阵,这是计算用于校正色彩的单应性的重要步骤。
plantcv.transform.get_matrix_m(target_matrix, source_matrix)
返回matrix_a, matrix_m, matrix_b
- matrix_a:n_9的级联矩阵,其中source_matrix红色,绿色和蓝色值分别为幂1、2、3
- matrix_m:一个9 x n的Moore-Penrose逆矩阵
- matrix_b:来自target_img的线性,二次和三次RGB值的n x 9矩阵
2.1.109 转换矩阵
计算转换矩阵以应用于源图像,以将其转换为目标颜色配置文件。
plantcv.transform.calc_transformation_matrix(matrix_m, matrix_b)
返回偏差,变换矩阵
- 1-t_det-“偏离”度量源图像偏离目标图像色彩空间的程度。 具有相同色彩空间的两个图像的偏差应为〜0。
- Transformation_matrix-线性,平方和三次变换系数的9x9矩阵
2.1.110 应用变换矩阵
将变换矩阵应用于图像。
plantcv.transformation.apply_transformation_matrix(source_img, target_img, transformation_matrix)
返回corrected_img
- 将变换矩阵应用于图像。
2.1.111 正确的颜色
将源RGB图像的颜色配置纠正为目标RGB图像的颜色配置。该函数输出目标矩阵、源矩阵和转换矩阵,并将它们作为.npz文件保存到输出目录中。它也输出经过校正的img,但是存储(打印或绘图)是由调试模式决定的。
plantcv.transform.correct_color(target_img, target_mask, source_img, source_mask, output_directory)
返回目标矩阵,源矩阵,转换矩阵,纠正图像
- 每个图像必须包含一个颜色采样的参考。
2.1.112 检查色卡
我们添加了一项功能,可帮助您识别彩色芯片的问题。 可能发生的一个经常出现的问题是色卡已完全饱和,最好将其排除在分析之外。 一种检查此问题的快速方法是针对色卡中掩盖的所有色卡,将源矩阵值与目标矩阵值作图。
plantcv.transform.quick_color_check(source_matrix, target_matrix, num_chips)
返回none
2.1.113 加载矩阵
从“ .npz”文件加载矩阵。
plantcv.transform.load_matrix(filename)
返回矩阵
2.1.114 保存矩阵
从“ .npz”文件加载矩阵。
plantcv.transform.load_matrix(filename)
返回矩阵
2.1.115 非均匀光照修正
修正图像中的不均匀光照。
plantcv.nonuniform_illumination(img, ksize)
校正后返回灰度图像
- 在没有可用的背景图像进行背景减法的情况下,校正非均匀照明。 该功能通过使用指定的内核大小进行模糊处理,从原始图像创建背景图像,从而校正光线不均匀的情况。
2.1.116 重新缩放
将灰度图像重新缩放为用户输入的最小值和最大值。
plantcv.transform.rescale(gray_img, min_value=0, max_value=255)
重新缩放后返回图像
- 重新缩放灰度图像中的像素值。
可视化方法(2.1.117~2.1.122)
2.1.117 可视化所有自动阈值方法
这是一种绘制方法,用于表示PlantCV中可用的各种自动阈值方法。 这些包括高斯,三角形,均值和 Otsu。
plantcv.visualize.auto_threshold_methods(gray_img, grid_img=True, object_type=“light”)
返回标记图片
- 此函数返回创建的带有标签的二进制掩码的列表。 该列表需要是子集,以便进一步处理标记的图像。
- 除了用户定义的object_type以外,所有自动阈值功能均在默认参数下运行(例如pcv.threshold.triangle()中的xstep = 1)。
2.1.118 用聚类信息绘制图像
这是一种绘制方法,用于表示将轮廓从pcv.cluster_contours聚集到对象中的方式。
plantcv.visualize.clustered_contours(img, grouped_contour_indices, roi_objects, roi_obj_hierarchy, nrow=1, ncol=1)
返回聚类的图像
- 编写此函数是为了允许用户调试pcv.cluster_contours并确保来自同一植物的轮廓被分组在一起。
2.1.119 绘图类
这是用于对蒙版进行着色的绘图方法。
plantcv.visualize.colorize_masks(masks, colors)
返回colored_img
- 编写此函数是为了允许用户绘制由朴素贝叶斯多类返回的蒙版,但可以与任何蒙版一起使用。 遮罩的数量与颜色的数量非常匹配。
2.1.120 可视化潜在的色彩空间
这是一种绘图方法,用于检查可用PlantCV函数中的所有潜在色彩空间。
plantcv.visualize.colorspaces(rgb_img)
返回 plotting_img
2.1.121 直方图
这是一种用于检查图像内信号分布的绘图方法。
plantcv.visualize.histogram(gray_img, mask=None, bins=256, color=‘red’, title=None)
返回fig_hist
- 检查信号的分布,这可以帮助选择二进制阈值的值。
2.1.122 伪彩色灰度图像
此函数将任何灰度图像伪彩色为自定义颜色图。 可选的蒙版可以在伪彩色图像中保留背景。 另外,可以指定可选的最大值和最小值。 当pcv.params.debug ='print’时,图像将保存到pcv.params.debug_outdir,并且可以为要保存的图像设置pcv.params.dpi。 如果未更改,则matplotlib默认DPI为每英寸100像素。
plantcv.visualize.pseudocolor(gray_img, obj=None, mask=None, background=“image”, cmap=None, min_value=0, max_value=255, axes=True, colorbar=True, obj_padding=‘auto’)
返回伪彩色图像(可以使用pcv.print_image保存)
- 用于将任何灰度图像伪彩色为自定义颜色图
2.1.123 分水岭分割
此功能基于阿肯色州立大学的Suxing Liu提供的代码。 有关更多信息,请参见https://github.com/lsx1980/Leaf_count。 此功能使用分水岭算法来检测对象的边界。 需要一个遮罩文件,该文件指定对象区域为白色,背景为黑色。
plantcv.watershed_segmentation(rgb_img, mask, distance=10)
返回analysis_image
- 用于将图像分割成零件数据自动存储到Outputs类中。 用户可以使用pcv.print_results查看工作流中任何时候收集的数据,该命令会将所有存储的数据打印到.json文件中。
存储的输出数据:运行此函数时,数据(‘estimated_object_count’)自动存储到Outputs类。 在工作流期间始终可以访问这些数据(以下示例)。 有关数据输出的更多详细信息,请参见输出观察摘要。
2.1.124 白平衡
校正图像的曝光。 可以指定颜色标准。
plantcv.white_balance(img, mode=‘hist’, roi=None)
returns corrected_img
- 用于在阈值化之前标准化图像的曝光
2.1.125 检查对象是否在框架内
此功能测试对象(定义为蒙版中的非零像素)是否完全落在图像的边界内,或者是否接触到边缘。
plantcv.within_frame(mask, border_width=1)
返回in_bounds
- 此功能可用于测试植物是否已超出视野。
存储的输出数据:运行此函数时,数据(‘in_bounds’)自动存储到Outputs类。 在工作流期间始终可以访问这些数据。 有关数据输出的更多详细信息,请参见输出观察摘要
3. 教程
边栏推荐
- 基于Flink实时项目:用户行为分析(三:网站总浏览量统计(PV))
- Only hard work, hard work and hard work are the only way out C - patient entity class
- SparkSql之DataFrame
- Iptables 详解与实战案例
- Understanding of Flink interval join source code
- Flink sliding window understanding & introduction to specific business scenarios
- DataNode Decommision
- MySQL第二篇
- MySQL uses and implements ranking functions rank and deny_ Rank and row_ NUMBER
- redis——缓存雪崩、缓存穿透、缓存击穿
猜你喜欢

(Spark调优~)算子的合理选择

redis——缓存雪崩、缓存穿透、缓存击穿

MySQL index optimization: under what circumstances do you need to build an index (several situations suitable for building an index)

Logback custom messageconverter

Small programs related to a large number of digital collections off the shelves of wechat: is NFT products the future or a trap?

One of the Flink requirements - processfunction (requirement: alarm if the temperature rises continuously within 30 seconds)

李宏毅机器学习(2017版)_P3-4:回归

李宏毅机器学习(2017版)_P1-2:机器学习介绍

Tencent upgrades the live broadcast function of video Number applet. Tencent's foundation for continuous promotion of live broadcast is this technology called visual cube (mlvb)

Flink Interval Join源码理解
随机推荐
adb.exe已停止工作 弹窗问题
视频类小程序变现的最短路径:从带货到品牌营销
李宏毅机器学习(2017版)_P6-8:梯度下降
Flink checkpoint源码理解
SQL学习(3)——表的复杂查询与函数操作
The shortest way to realize video applets: from bringing goods to brand marketing
腾讯云MLVB技术如何在移动直播服务中突出重围之基础概念
Scala-模式匹配
Simple explanation of database table connection
SQL学习(2)——表的基础查询与排序
Cannot find a valid baseurl for repo: HDP-3.1-repo-1
Deep understanding of golang - closures
Redisson 工作原理-源码分析
flink需求之—ProcessFunction(需求:如果30秒内温度连续上升就报警)
使用tika 判断文件类型
Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=
小程序直播、连线直播、直播打赏:腾讯云移动直播组件MLVB多场景直播拓展
MYSQL 使用及实现排名函数RANK、DENSE_RANK和ROW_NUMBER
吴恩达深度学习系列教学视频学习笔记(一)——用于二分类的logistic回归函数
Spark源码学习——Data Serialization