Skip to content

illuminateIlluminateIlluminateilluminateilluminate🔗

Short description🔗

illuminateIlluminateIlluminateilluminateilluminate — Illuminate image.

Signature🔗

illuminate( image Image, out image ImageIlluminate, extent.x MaskWidth, extent.y MaskHeight, real Factor )void Illuminate( const HObject& Image, HObject* ImageIlluminate, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Factor )static void HOperatorSet.Illuminate( HObject image, out HObject imageIlluminate, HTuple maskWidth, HTuple maskHeight, HTuple factor )def illuminate( image: HObject, mask_width: int, mask_height: int, factor: float ) -> HObject

Herror illuminate( const Hobject Image, Hobject* ImageIlluminate, const Hlong MaskWidth, const Hlong MaskHeight, double Factor )

Herror T_illuminate( const Hobject Image, Hobject* ImageIlluminate, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple Factor )

HImage HImage::Illuminate( Hlong MaskWidth, Hlong MaskHeight, double Factor ) const

HImage HImage.Illuminate( int maskWidth, int maskHeight, double factor )

Description🔗

The operator illuminateIlluminate enhances contrast. Very dark parts of the image are “illuminated” more strongly, very light ones are “darkened”. If \(orig\) is the original gray value and \(mean\) is the corresponding gray value of the low pass filtered image detected via the operators mean_imageMeanImage and filter size MaskHeightmaskHeightmask_height x MaskWidthmaskWidthmask_width. For byte-images val equals 127, for int2-images and uint2-images val equals the median value. The resulting gray value is \(new\): new = round ( (val - mean) * Factor + orig ). The low pass should have rather large dimensions (30 x 30 to 200 x 200). Reasonable parameter combinations might be:

     Height Width  Factor
     ---------------------
      40     40     0.55
     100    100     0.7
     150    150     0.8

i.e. the larger the low pass mask is chosen, the larger Factorfactorfactor should be as well.

The following “spotlight effect” should be noted: If, for example, a dark object is in front of a light wall the object as well as the wall, which is already light in the immediate proximity of the object contours, are lightened by the operator illuminateIlluminate. This corresponds roughly to the effect that is produced when the object is illuminated by a strong spotlight. The same applies to light objects in front of a darker background. In this case, however, the fictitious “spotlight” darkens objects.

Attention🔗

Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on tuple level.

  • Automatically parallelized on channel level.

  • Automatically parallelized on internal data level.

Parameters🔗

Imageimageimage (input_object) (multichannel-)image(-array) → object (byte / int2 / uint2)HObject (byte / int2 / uint2)HImage (byte / int2 / uint2)HObject (byte / int2 / uint2)Hobject (byte / int2 / uint2)

Image to be enhanced.

ImageIlluminateimageIlluminateimage_illuminate (output_object) (multichannel-)image(-array) → object (byte / int2 / uint2)HObject (byte / int2 / uint2)HImage (byte / int2 / uint2)HObject (byte / int2 / uint2)Hobject * (byte / int2 / uint2)

“Illuminated” image.

MaskWidthmaskWidthmask_width (input_control) extent.x → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Width of low pass mask.

Default: 101101
Suggested values: 31, 41, 51, 71, 101, 121, 151, 20131, 41, 51, 71, 101, 121, 151, 201
Minimum increment: 2
Recommended increment: 10
Restriction: MaskWidth < width(Image) * 2

MaskHeightmaskHeightmask_height (input_control) extent.y → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Height of low pass mask.

Default: 101101
Suggested values: 31, 41, 51, 71, 101, 121, 151, 20131, 41, 51, 71, 101, 121, 151, 201
Minimum increment: 2
Recommended increment: 10
Restriction: MaskHeight < height(Image) * 2

Factorfactorfactor (input_control) real → (real)HTuple (double)HTuple (double)floatHtuple (double)

Scales the “correction gray value” added to the original gray values.

Default: 0.70.7
Suggested values: 0.3, 0.5, 0.7, 1.0, 1.5, 2.0, 3.0, 5.00.3, 0.5, 0.7, 1.0, 1.5, 2.0, 3.0, 5.0
Value range: 0.0 ≤ Factor
Minimum increment: 0.01
Recommended increment: 0.2

Example🔗

(HDevelop)

read_image(Image,'fabrik')
dev_display (Image)
illuminate(Image,Better,40,40,0.55)
dev_display (Better)
(C)
read_image(&Image,"fabrik")\;
disp_image(Image,WindowHandle)\;
illuminate(Image,&Better,40,40,0.55)\;
disp_image(Better,WindowHandle)\; 

Result🔗

If the parameter values are correct the operator illuminateIlluminate returns the value 2 (H_MSG_TRUE) The behavior in case of empty input (no input images available) is set via the operator set_system(::'no_object_result',<Result>:). If necessary an exception is raised.

Combinations with other operators🔗

Combinations

Possible successors

disp_imageDispImage

Alternatives

scale_image_maxScaleImageMax, equ_histo_imageEquHistoImage, equ_histo_image_rectEquHistoImageRect, mean_imageMeanImage, sub_imageSubImage

See also

emphasizeEmphasize, gray_histoGrayHisto

Module🔗

Foundation