OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::segmentation::IntelligentScissorsMB 类参考

智能剪刀图像分割。 更多…

#include <opencv2/imgproc/segmentation.hpp>

cv::segmentation::IntelligentScissorsMB 的协作图

公共成员函数

 IntelligentScissorsMB ()
 
IntelligentScissorsMBapplyImage (InputArray image)
 指定输入图像并提取图像特征。
 
IntelligentScissorsMBapplyImageFeatures (InputArray non_edge, InputArray gradient_direction, InputArray gradient_magnitude, InputArray image=noArray())
 指定输入图像的自定义特征。
 
void buildMap (const Point &sourcePt)
 为图像上给定的源点准备最佳路径映射。
 
void getContour (const Point &targetPt, OutputArray contour, bool backward=false) const
 提取图像上给定目标点的最佳轮廓。
 
IntelligentScissorsMBsetEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)
 切换边缘特征提取器以使用 Canny 边缘检测器。
 
IntelligentScissorsMBsetEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f)
 切换到“拉普拉斯零交叉”边缘特征提取器并指定其参数。
 
IntelligentScissorsMBsetGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f)
 指定梯度幅度最大值阈值。
 
IntelligentScissorsMBsetWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude)
 指定特征函数的权重。
 

详细描述

智能剪刀图像分割。

此类用于查找两点之间的路径(轮廓),可用于图像分割。

使用方法示例

tool.setEdgeFeatureCannyParameters(16, 100) // 使用 Canny() 作为边缘特征提取器
// 计算图像特征
tool.applyImage(image);
// 为指定的源点计算映射
Point source_point(200, 100);
tool.buildMap(source_point);
// 快速获取轮廓
// 用于指定的目标点和预先计算的映射(存储在内部)
Point target_point(400, 300);
std::vector<Point> pts;
tool.getContour(target_point, pts);

参考文献:"用于图像合成的智能剪刀" Brigham Young 大学 Eric N. Mortensen 和 William A. Barrett 设计的算法 [199]

构造函数和析构函数文档

◆ IntelligentScissorsMB()

cv::segmentation::IntelligentScissorsMB::IntelligentScissorsMB ( )
Python
cv.segmentation.IntelligentScissorsMB() -> <segmentation_IntelligentScissorsMB 对象>

成员函数文档

◆ applyImage()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage ( InputArray image)
Python
cv.segmentation.IntelligentScissorsMB.applyImage(image) -> retval

指定输入图像并提取图像特征。

参数
image输入图像。类型为 CV_8UC1 / CV_8UC3

◆ applyImageFeatures()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImageFeatures ( InputArray non_edge,
InputArray gradient_direction,
InputArray gradient_magnitude,
InputArray image = noArray() )
Python
cv.segmentation.IntelligentScissorsMB.applyImageFeatures(non_edge, gradient_direction, gradient_magnitude[, image]) -> retval

指定输入图像的自定义特征。

applyImage() 调用的自定义高级变体。

参数
non_edge指定非边缘像素的成本。类型为 CV_8UC1。预期值为 {0, 1}
gradient_direction指定梯度方向特征。类型为 CV_32FC2。值应被规范化:x^2 + y^2 == 1
gradient_magnitude指定梯度幅度函数的成本:类型为 CV_32FC1。值应在范围 [0, 1] 内。
image可选参数。如果指定了特征子集(未指定的特征在内部计算),则必须指定。
此函数的调用图如下所示

◆ buildMap()

void cv::segmentation::IntelligentScissorsMB::buildMap ( const Point & sourcePt)
Python
cv.segmentation.IntelligentScissorsMB.buildMap(sourcePt) -> None

为图像上给定的源点准备最佳路径映射。

注意
必须在此调用之前调用 applyImage() / applyImageFeatures()
参数
sourcePt用于查找路径的源点

◆ getContour()

void cv::segmentation::IntelligentScissorsMB::getContour ( const Point & targetPt,
OutputArray contour,
bool backward = false ) const
Python
cv.segmentation.IntelligentScissorsMB.getContour(targetPt[, contour[, backward]]) -> contour

提取图像上给定目标点的最佳轮廓。

注意
必须在此调用之前调用 buildMap()
参数
targetPt目标点
[输出]contour包含图像源点和目标点之间最佳路径的像素列表。类型为 CV_32SC2(与 std::vector<Point> 兼容)
backward指示检索像素反向顺序的标志(使用“true”值从目标点到源点获取点)

◆ setEdgeFeatureCannyParameters()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureCannyParameters ( double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false )
Python
cv.segmentation.IntelligentScissorsMB.setEdgeFeatureCannyParameters(threshold1, threshold2[, apertureSize[, L2gradient]]) -> retval

切换边缘特征提取器以使用 Canny 边缘检测器。

注意
默认使用“拉普拉斯零交叉”特征提取器(遵循原始文章)。
另请参见
Canny

◆ setEdgeFeatureZeroCrossingParameters()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureZeroCrossingParameters ( 浮点型 gradient_magnitude_min_value = 0.0f)
Python
cv.segmentation.IntelligentScissorsMB.setEdgeFeatureZeroCrossingParameters([, gradient_magnitude_min_value]) -> retval

切换到“拉普拉斯零交叉”边缘特征提取器并指定其参数。

根据文章,默认使用此特征提取器。

实现对低幅度噪声区域进行了额外的滤波。此滤波通过最小梯度幅度参数启用(使用一些较小的值,例如 4、8、16)。

注意
此特征提取器的当前实现基于灰度图像的处理(彩色图像首先转换为灰度图像)。
Canny 边缘检测器速度稍慢,但效果更好(尤其是在彩色图像上):使用 setEdgeFeatureCannyParameters()
参数
gradient_magnitude_min_value边缘像素的最小梯度幅度值(默认值:0,禁用检查)

◆ setGradientMagnitudeMaxLimit()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setGradientMagnitudeMaxLimit ( 浮点型 gradient_magnitude_threshold_max = 0.0f)
Python
cv.segmentation.IntelligentScissorsMB.setGradientMagnitudeMaxLimit([, gradient_magnitude_threshold_max]) -> retval

指定梯度幅度最大值阈值。

使用零极限值来禁用梯度幅度阈值(默认行为,如原始文章中所述)。否则,梯度幅度 >= 阈值的像素成本为零。

注意
对于具有不规则区域的图像,应使用阈值处理(避免卡在高对比度区域的参数上,例如嵌入式徽标)。
参数
gradient_magnitude_threshold_max指定梯度幅度最大值阈值(默认值:0,禁用)

◆ setWeights()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setWeights ( 浮点型 非边缘权重,
浮点型 梯度方向权重,
浮点型 weight_gradient_magnitude )
Python
cv.segmentation.IntelligentScissorsMB.setWeights(weight_non_edge, weight_gradient_direction, weight_gradient_magnitude) -> retval

指定特征函数的权重。

考虑保持权重归一化(权重总和等于 1.0)离散动态规划 (DP) 目标是最小化像素之间的成本。

参数
非边缘权重指定非边缘像素的成本(默认值:0.43f)
梯度方向权重指定梯度方向函数的成本(默认值:0.43f)
weight_gradient_magnitude指定梯度幅度函数的成本(默认值:0.14f)

此类的文档是从以下文件生成的