智能剪刀图像分割。 更多…
#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;
参考文献:"用于图像合成的智能剪刀" Brigham Young 大学 Eric N. Mortensen 和 William A. Barrett 设计的算法 [199]
◆ IntelligentScissorsMB()
cv::segmentation::IntelligentScissorsMB::IntelligentScissorsMB |
( |
| ) |
|
Python |
---|
| cv.segmentation.IntelligentScissorsMB( | | ) -> | <segmentation_IntelligentScissorsMB 对象> |
◆ 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 | 目标点 |
[输出] | 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) |
此类的文档是从以下文件生成的