Segmentation.h¶
Go to the source code of this file.
Segmentation是在图像中查找用户指定类别的区域的功能。
SAIGE VISION将Segmentation的检查结果作为SaigeSegmentedObject结构返回。 检测到的区域以自由形式的曲线形式表示为Contour,并表示为点数组。
推断选项¶
检查尺寸宽度, 高度¶
这是使用SaigeHandleConfig结构创建句柄时可以设置的选项之一。 与SaigeInferenceOption::batchSize一样,这是在创建句柄时影响内存设置的选项,创建句柄后无法更改。
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | |
calcMask, calcScoremap, calcObject¶
Segmentation功能不仅可以计算由类别指定的Contour区域信息SaigeSegmentedObject,还可以计算指示图像中每个像素属于哪个类别的Mask和 指示每个类别的Score值的Scoremap。
要计算这些检查结果,请设置以下选项。 此外,如果calcObject选项为true,则可以通过为每个类别应用Score和Area Threshold值来过滤检测到的对象。
Note
三个选项都不能设置为false以计算没有值。
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | |
Score, Area Thresholds¶
与Object Detection一样,Segmentation可以为每个类别设置Score和Area Threshold值。 此外,Segmentation可以设置Object Boundary Threshold值。 所有Threshold选项不能为第0个OK类设置。第0类的默认值如下。
objectBoundaryThreshold[0] = 100objectScoreThreshold[0] = 0objectAreaThreshold[0] = 0209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
// ExampleSegRuntime.cpp:211 // 추론옵션 변경 options->objectAreaThresholdPerClass[1] = 500; options->objectAreaThresholdPerClass[2] = 500; flags = SAIGE_SET_OBJECT_AREA_THRESHOLD; retval = SaigeSetInferenceOption(handle, options, flags); if (retval < 0) { std::cerr << "SaigeSetInferenceOption() failed - " << SaigeStrError(retval) << std::endl; SaigeDestroyInferenceHandle(handle); SaigeDestroyInferenceResult(result); return retval; } options->objectScoreThresholdPerClass[1] = 200.0; options->objectScoreThresholdPerClass[2] = 200.0; flags = SAIGE_SET_OBJECT_SCORE_THRESHOLD; retval = SaigeSetInferenceOption(handle, options, flags); if (retval < 0) { std::cerr << "SaigeSetInferenceOption() failed - " << SaigeStrError(retval) << std::endl; SaigeDestroyInferenceHandle(handle); SaigeDestroyInferenceResult(result); return retval; } options->objectBoundaryThresholdPerClass[1] = 150; options->objectBoundaryThresholdPerClass[2] = 150; flags = SAIGE_SET_OBJECT_BOUNDARY_THRESHOLD; retval = SaigeSetInferenceOption(handle, options, flags); if (retval < 0) { std::cerr << "SaigeSetInferenceOption() failed - " << SaigeStrError(retval) << std::endl; SaigeDestroyInferenceHandle(handle); SaigeDestroyInferenceResult(result); return retval; }
推断结果¶
Segmentation的检查结果分为Mask、Scoremap和Segmented Object。
Mask和Scoremap以unsigned char*指针变量的数组形式接收。
Segmented Object首先在int numSegObj变量中接收检测到的对象的数量,然后使用SaigeSegmentedObject结构数组接收对象信息。 在这里,我们使用C++的STL vector来处理vector中的内存分配/释放。