median_image — 使用各种掩模计算中值滤波器。
median_image(Image : ImageMedian : MaskType, Radius, Margin : )
median_image performs a median filter on the input image
Image with a square or circular mask and returns the
filtered image in ImageMedian. The shape of the mask can
be selected with MaskType. The radius of the mask can be
selected with Radius。
Conceptually, the median filter sorts all gray values within the
mask in ascending order and then selects the median of the gray
values. The median is the “middle” one of the sorted gray values,
i.e., the gray value with rank (position) (N - 1) / 2 + 1 of the
sorted gray values, where N denotes the number of pixels covered by
the filter mask.
Here, the rank 1 corresponds to the smallest gray value and the rank N
corresponds to the largest gray value within the mask (see also
rank_image).
The filter mask is determined by Radius, defining the size, and
MaskType, defining the shape of the mask.
For latter one, the following options are available:
'circle':The mask consists of the pixel within a circle
with Radius around the pixel of the mask center.
'square':The mask consists of the pixel within a square
with an edge length of
Radius pixel.
median_image can be used, for example, to smooth images, to
suppress unwanted objects (e.g., point-like or line-like structures)
that are smaller than the mask, and can therefore be used to
estimate the background illumination for a shading correction or as
a preprocessing step for the dynamic threshold operation (see
dyn_threshold).
Several border treatments can be chosen for filtering via the
parameter Margin:
gray value: Pixels outside of the image borders are assumed to be constant (with the specified gray value).
'continued':Continuation of border pixels.
'cyclic':Cyclic continuation of image borders.
'mirrored':Reflection of pixels at the image borders.
When using the MaskType 'square' with Radius 1 or 2
(resulting in a 3x3 or 5x5 pixel filter mask) and the border treatment
'mirrored', median_image 可在 OpenCL 设备上执行。
有关平滑滤波器概念的说明,请参阅 滤波器 / 平滑 一章的引言。
median_image uses an algorithm with a runtime per pixel that
depends on the mask height 2 *
Radius + 1. Therefore, median_image is slower
than median_rect for square masks with a large mask height.
The precise mask height for which median_rect will become
faster than median_image depends on the computer
architecture (processor type, availability of SIMD instructions like
SSE2 or MMX, cache size and throughput, memory throughput).
Typically, this is the case for mask heights > 15, but can also be
the case only for larger mask sizes, e.g., if SIMD instructions are
unavailable and memory throughput is low.
Furthermore, it should be noted that median_rect uses a
recursive implementation, which internally computes the filter
response on the smallest enclosing rectangle of the domain of the
input image. Therefore, if the domain of the input image only
covers a small fraction of the smallest enclosing rectangle, it can
happen that median_image is faster than median_rect
even for larger mask heights.
Due to performance reasons, the input Image is not checked whether
it contains NaNs. Using an input image with NaNs crashes HALCON.
请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章
Image (输入对象) (multichannel-)image(-array) → object (byte* / int2* / uint2* / int4* / real*) *允许用于计算设备
Image to be filtered.
ImageMedian (输出对象) (multichannel-)image(-array) → object (byte / int2 / uint2 / int4 / real)
滤波后的图像。
MaskType (输入控制) string → (string)
Filter mask type.
默认值: 'circle'
值列表: 'circle', 'square'
List of values (for compute devices): 'square'
Radius (输入控制) integer → (integer)
Radius of the filter mask.
默认值: 1
List of values (for compute devices): 1, 2
建议值: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 15, 19, 25, 31, 39, 47, 59
值范围:
1
≤
Radius
≤
4095
最小增量: 1
建议增量: 2
Margin (输入控制) string → (string / integer / real)
Border treatment.
默认值: 'mirrored'
List of values (for compute devices): 'mirrored'
建议值: 'mirrored', 'cyclic', 'continued', 0, 30, 60, 90, 120, 150, 180, 210, 240, 255
read_image (Image, 'fabrik') median_image (Image, Median, 'circle', 3, 'continued') dev_display(Median)
For each pixel: O(2 *
Radius + 1).
如果参数值正确,算子 median_image 返回值 2 ( H_MSG_TRUE )。当输入为空(无可用输入图像)时可设置行为通过算子 set_system('no_object_result',<Result>)。如有必要,则抛出异常。
threshold,
dyn_threshold,
regiongrowing
median_rect,
rank_image,
rank_rect
gray_erosion_rect,
gray_dilation_rect,
gray_erosion_shape,
gray_dilation_shape,
gray_erosion,
gray_dilation
T.S. Huang, G.J. Yang, G.Y. Tang; “A Fast Two-Dimensional Median
Filtering Algorithm”; IEEE Transactions on Acoustics, Speech, and
Signal Processing, vol. 27, no. 1, pp. 13-18, 1979.
R. Haralick, L. Shapiro; “Computer and Robot Vision”;
Addison-Wesley, 1992, pp. 318-320.
基础