| histo_to_thresh( : : Histogramm, Sigma : MinThresh, MaxThresh) histo_to_thresh从直方图中确定灰度值阈值,
 用于使用函数threshold进行分割图像。
 返回的阈值为0,直方图中最大的灰度值,直方图中提取的全部最小灰度值。
 在确定阈值之前,用高斯平滑函数对直方图进行平滑处理。
 
 
 histo_to_thresh可以处理由gray_histo返回的绝对直方图和相对直方图。
 但是请注意,这里只应该使用字节图像,因为否则返回的阈值无法轻松转换为实际图像的阈值。
 对于uint2类型的图像,直方图的计算应该使用 gray_histo_abs,
 因为这便于阈值的简单转换,只需将阈值与gray_histo_abs中选择的量化值相乘即可。
 
 
 对于uint2图像,重要的是要确保量化必须以直方图仍然包含显著信息的方式进行选择。
 例如,一个640 x 480的图像,每像素灰度值分辨率为16位,
 平均每个直方图bin只包含307200 / 65536 = 4.7个条目,
 即,直方图的填充太稀疏,无法从中获得任何有用的统计信息。
 为了能够从这样的直方图中提取有用的阈值,
 Sigma必须设置为一个非常大的值,这将导致非常高的运行时间和数值问题。
 
 
 因此,通常应该选择gray_histo_abs中的量化,使直方图最多包含1024个条目。
 因此,对于每像素大于10位的图像,必须选择大于1的量化。
 此外,gray_histo_abs返回的直方图应该被限制在包含显著信息的部分。
 例如,对于每像素12位的图像,量化值应该设置为4。
 
 只应该将计算直方图的前1024个条目(在本例中包含16384个条目)传递给column_to_thresh。
 最后,MinThresh必须乘以4(即,而MaxThresh必须乘以4并增加3(即,量子化- 1)。
 
 
 
 
 例程:
 read_image (Image, 'letters')
 get_image_size (Image, Width, Height)
 dev_close_window ()
 dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowID)
 dev_set_color ('red')
 gray_histo (Image, Image, AbsoluteHisto, RelativeHisto)
 histo_to_thresh (RelativeHisto, 8, MinThresh, MaxThresh)
 dev_set_colored (12)
 threshold (Image, Region, max(MinThresh), max(MaxThresh) )
 
 例程通过gray_histo 计算一图像的直方图,
 通过histo_to_thresh 提取直方图中阈值,
 最后通过threshold 实现图像阈值分割
 
 
 
 
 
 
 |