dyn_thresholddyn_thresholdDynThresholdDynThresholddyn_threshold动态阈值(算子)

名称

dyn_thresholddyn_thresholdDynThresholdDynThresholddyn_threshold — 使用局部阈值分割图像。

签名

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

Herror dyn_threshold(const Hobject OrigImage, const Hobject ThresholdImage, Hobject* RegionDynThresh, double Offset, const char* LightDark)

Herror T_dyn_threshold(const Hobject OrigImage, const Hobject ThresholdImage, Hobject* RegionDynThresh, const Htuple Offset, const Htuple LightDark)

void DynThreshold(const HObject& OrigImage, const HObject& ThresholdImage, HObject* RegionDynThresh, const HTuple& Offset, const HTuple& LightDark)

HRegion HImage::DynThreshold(const HImage& ThresholdImage, const HTuple& Offset, const HString& LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const HString& LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const char* LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const wchar_t* LightDark) const   ( Windows only)

static void HOperatorSet.DynThreshold(HObject origImage, HObject thresholdImage, out HObject regionDynThresh, HTuple offset, HTuple lightDark)

HRegion HImage.DynThreshold(HImage thresholdImage, HTuple offset, string lightDark)

HRegion HImage.DynThreshold(HImage thresholdImage, double offset, string lightDark)

def dyn_threshold(orig_image: HObject, threshold_image: HObject, offset: Union[int, float], light_dark: str) -> HObject

描述

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold 从输入图像中选取满足阈值条件的像素区域。设 g_{o} = g_{OrigImageOrigImageOrigImageOrigImageorigImageorig_image},g_{t} = g_{ThresholdImageThresholdImageThresholdImageThresholdImagethresholdImagethreshold_image}。当 LightDarkLightDarkLightDarkLightDarklightDarklight_dark = 'light'"light""light""light""light""light" 时,条件为: LightDarkLightDarkLightDarkLightDarklightDarklight_dark = 'dark'"dark""dark""dark""dark""dark" 时,条件为: LightDarkLightDarkLightDarkLightDarklightDarklight_dark = 'equal'"equal""equal""equal""equal""equal" 时,条件为: 最后,当 LightDarkLightDarkLightDarkLightDarklightDarklight_dark = 'not_equal'"not_equal""not_equal""not_equal""not_equal""not_equal" 时,条件为:

通常,阈值图像会对原始图像进行平滑处理(例如通过应用 mean_imagemean_imageMeanImageMeanImageMeanImagemean_imagebinomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filtergauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter等滤波器)。此时 dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold 的效果类似于对经过高通滤波的原始图像应用 thresholdthresholdThresholdThresholdThresholdthreshold 阈值处理(参见 highpass_imagehighpass_imageHighpassImageHighpassImageHighpassImagehighpass_image)。

通过 dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold,可提取对象的轮廓,其中对象的尺寸(直径)由低通滤波器的掩模尺寸决定,而对象边缘的幅度则由其边缘特征决定:

选择的掩模尺寸越大,检测到的区域就越大。经验法则是掩模尺寸应约为待提取对象直径的两倍。切勿将 OffsetOffsetOffsetOffsetoffsetoffset 参数设为零,否则会检测到过多微小区域(即噪声)。取值范围在 5 至 40 之间较为实用。选择较大的 OffsetOffsetOffsetOffsetoffsetoffset 值时,提取的区域会相应变小。

输入图像中满足上述条件的全部像素点将被共同存储于一个区域内。如有需要,可通过调用 connectionconnectionConnectionConnectionConnectionconnection 获取连通分量。

注意

如果 OffsetOffsetOffsetOffsetoffsetoffset 选取范围在 -1 到 1 之间,通常会生成噪声很强的区域,需要大量存储空间。如果 OffsetOffsetOffsetOffsetoffsetoffset 选取过大(例如> 60),则可能出现所有点都不满足阈值条件的情况(即返回空区域)。如果 OffsetOffsetOffsetOffsetoffsetoffset 选取过小(例如< -60),则可能出现所有点都满足阈值条件的情况(即返回完整区域)。

执行信息

参数

OrigImageOrigImageOrigImageOrigImageorigImageorig_image (输入对象)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / int2 / uint2 / int4 / real)

输入图像。

ThresholdImageThresholdImageThresholdImageThresholdImagethresholdImagethreshold_image (输入对象)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / int2 / uint2 / int4 / real)

包含局部阈值的图像。

RegionDynThreshRegionDynThreshRegionDynThreshRegionDynThreshregionDynThreshregion_dyn_thresh (输出对象)  region(-array) objectHRegionHObjectHRegionHobject *

分割区域。

OffsetOffsetOffsetOffsetoffsetoffset (输入控制)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

应用于阈值图像的偏移量。

默认值: 5.0

建议值: 1.0, 3.0, 5.0, 7.0, 10.0, 20.0, 30.0

值范围: -255.0 ≤ Offset Offset Offset Offset offset offset ≤ 255.0 (lin)

最小增量: 0.01

建议增量: 5

LightDarkLightDarkLightDarkLightDarklightDarklight_dark (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

提取亮部、暗部或相似区域?

默认值: 'light' "light" "light" "light" "light" "light"

值列表: 'dark'"dark""dark""dark""dark""dark", 'equal'"equal""equal""equal""equal""equal", 'light'"light""light""light""light""light", 'not_equal'"not_equal""not_equal""not_equal""not_equal""not_equal"

示例(HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

示例(C)

/* Looking for regions with the diameter D */
mean_image(Image,&Mean,D*2+1,D*2+1);
dyn_threshold(Image,Mean,&Seg,5.0,"light");
connection(Seg,&Region);

示例(HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

示例(HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

示例(HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

复杂度

设 A 为输入区域的面积。则运行时间复杂度为 O(A)。

结果

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold 在所有参数正确时返回 2 (H_MSG_TRUE)。通过 set_systemset_systemSetSystemSetSystemSetSystemset_system 算子设置标志 'no_object_result'"no_object_result""no_object_result""no_object_result""no_object_result""no_object_result"'empty_region_result'"empty_region_result""empty_region_result""empty_region_result""empty_region_result""empty_region_result"'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region""store_empty_region" 的值,可确定系统对输入图像和输出区域的行为方式。如有必要,则抛出异常。

可能的前趋

mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter

可能的后继

connectionconnectionConnectionConnectionConnectionconnection, select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, select_grayselect_graySelectGraySelectGraySelectGrayselect_gray, rank_regionrank_regionRankRegionRankRegionRankRegionrank_region, dilation1dilation1Dilation1Dilation1Dilation1dilation1, openingopeningOpeningOpeningOpeningopening, erosion1erosion1Erosion1Erosion1Erosion1erosion1

替代

check_differencecheck_differenceCheckDifferenceCheckDifferenceCheckDifferencecheck_difference, thresholdthresholdThresholdThresholdThresholdthreshold

另见

highpass_imagehighpass_imageHighpassImageHighpassImageHighpassImagehighpass_image, sub_imagesub_imageSubImageSubImageSubImagesub_image

模块

基础