mean_image — 通过平均平滑。
mean_image(Image : ImageMean : MaskWidth, MaskHeight : )
算子 mean_image carries out a linear smoothing with
the gray values of all input images (Image). The filter
matrix consists of ones (evaluated equally) and has the size
MaskHeight x MaskWidth. The result of the convolution is divided
by MaskHeight x MaskWidth. For border treatment the gray values are
reflected at the image edges.
For mean_image special optimizations are implemented that use SIMD
technology. The actual application of these special optimizations is
controlled by the system parameter 'mmx_enable'
(see set_system).
If 'mmx_enable' is set to 'true' (and the SIMD
instruction set is available), the internal calculations are performed
using SIMD technology.
Note that SIMD technology performs best on large, compact input regions.
Depending on the input region and the capabilities of the hardware the
execution of mean_image might even take significantly
more time with SIMD technology than without.
At any rate, it is advantageous for the performance of mean_image
to choose the input region of Image such that any border treatment
is avoided.
有关平滑滤波器概念的说明,请参阅 滤波器 / 平滑 一章的引言。
If even values instead of odd values are given for
MaskHeight or MaskWidth, the routine uses the
next larger odd values instead (this way the center of the filter
mask is always explicitly determined).
The mean filter value on real images is calculated internally using single precision floating point. This can lead to overflows (and thus incorrect results) if the full dynamic range is used.
mean_image can be executed on OpenCL devices for byte, int2, uint2,
int4 and real images if MaskHeight is less than twice the height
of Image. For OpenCL, the mean filter value is calculated
internally using either 32 bit signed integers (for all integer image
types) or single precision floating point (for real images). This can lead
to overflows (and thus incorrect results) if Image is either an
int4 or real image and the full dynamic range is used. Additionally, to
improve performance a full scan of each row of Image is calculated
(again using either 32 bit integer or single precision floating point
arithmetic) if MaskWidth is bigger than 9. This can also lead to
overflows with very wide images even for byte, int2, or uint2 images. In
these cases, the CPU version of mean_image should be used.
请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章
Image (输入对象) (multichannel-)image(-array) → object (byte* / int2* / uint2* / int4* / int8 / real* / vector_field) *允许用于计算设备
待平滑的图像。
ImageMean (输出对象) (multichannel-)image(-array) → object (byte / int2 / uint2 / int4 / int8 / real / vector_field)
平滑后的图像。
MaskWidth (输入控制) extent.x → (integer)
Width of filter mask.
默认值: 9
建议值: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
值范围:
1
≤
MaskWidth
最小增量: 2
建议增量: 2
限制:
odd(MaskWidth) && MaskWidth < width(Image) * 2
MaskHeight (输入控制) extent.y → (integer)
Height of filter mask.
默认值: 9
建议值: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
值范围:
1
≤
MaskHeight
最小增量: 2
建议增量: 2
限制:
odd(MaskHeight) && MaskHeight < height(Image) * 2
read_image(Image,'fabrik') mean_image(Image,Mean,3,3) dev_display(Mean)
For each pixel: O(15).
如果参数值正确,算子 mean_image 返回值 2 ( H_MSG_TRUE )。当输入为空(无可用输入图像)时可设置行为通过算子 set_system('no_object_result',<Result>)。如有必要,则抛出异常。
reduce_domain,
rectangle1_domain
binomial_filter,
gauss_filter,
smooth_image,
mean_image_shape
anisotropic_diffusion,
sigma_image,
convol_image,
gen_lowpass
基础