OpenCV 4.10.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);
智能剪刀图像分割。
定义 segmentation.hpp:31
void buildMap(const Point &sourcePt)
为图像上给定的源点准备最佳路径映射。
void getContour(const Point &targetPt, OutputArray contour, bool backward=false) const
提取图像上给定目标点的最佳轮廓。
IntelligentScissorsMB & setGradientMagnitudeMaxLimit(float gradient_magnitude_threshold_max=0.0f)
指定梯度幅度最大值阈值。
IntelligentScissorsMB & setEdgeFeatureCannyParameters(double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)
切换边缘特征提取器以使用 Canny 边缘检测器。
IntelligentScissorsMB & applyImage(InputArray image)
指定输入图像并提取图像特征。

参考:"用于图像合成的智能剪刀" 由埃里克·N·莫滕森和威廉·A·巴雷特,杨百翰大学设计的算法 [199]

构造函数和析构函数文档

◆ IntelligentScissorsMB()

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

成员函数文档

◆ 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目标点
[out]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 ( float  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 ( float  gradient_magnitude_threshold_max = 0.0f)
Python
cv.segmentation.IntelligentScissorsMB.setGradientMagnitudeMaxLimit([, gradient_magnitude_threshold_max]) -> retval

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

使用零限制值禁用梯度幅度阈值(默认行为,如原始文章中所述)。否则,具有 gradient magnitude >= threshold 的像素将具有零成本。

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

◆ setWeights()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setWeights ( float  weight_non_edge,
float  weight_gradient_direction,
float  weight_gradient_magnitude 
)
Python
cv.segmentation.IntelligentScissorsMB.setWeights(weight_non_edge, weight_gradient_direction, weight_gradient_magnitude) -> retval

指定特征函数的权重。

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

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

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