智能剪刀图像分割。 更多...
#include <opencv2/imgproc/segmentation.hpp>
|
| IntelligentScissorsMB () |
|
IntelligentScissorsMB & | applyImage (InputArray image) |
| 指定输入图像并提取图像特征。
|
|
IntelligentScissorsMB & | applyImageFeatures (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 |
| 提取图像上给定目标点的最佳轮廓。
|
|
IntelligentScissorsMB & | setEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false) |
| 切换边缘特征提取器以使用 Canny 边缘检测器。
|
|
IntelligentScissorsMB & | setEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f) |
| 切换到“拉普拉斯零交叉”边缘特征提取器并指定其参数。
|
|
IntelligentScissorsMB & | setGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f) |
| 指定梯度幅度最大值阈值。
|
|
IntelligentScissorsMB & | setWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude) |
| 指定特征函数的权重。
|
|
智能剪刀图像分割。
此类用于查找两点之间的路径(轮廓),可用于图像分割。
用法示例
Point source_point(200, 100);
Point target_point(400, 300);
std::vector<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()
Python |
---|
| cv.segmentation.IntelligentScissorsMB.applyImage( | image | ) -> | retval |
◆ applyImageFeatures()
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 |
◆ 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) |
此类的文档是从以下文件生成的