OpenCV 4.12.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);

参考文献: "用于图像合成的智能剪刀" 由 Eric N. Mortensen 和 William A. Barrett 设计的算法,杨百翰大学 [202]

构造函数 & 析构函数文档

◆ 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) ->

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

注意
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 ( 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_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)

此类文档由以下文件生成