Impact Acquire SDK .NET
LUTParameters Class Referencesealed

Properties for configuring settings belonging to a certain LUT (Look Up Table) to be applied to a captured image. More...

Inheritance diagram for LUTParameters:
[legend]

Public Member Functions

IEnumerable< TgetEnumerable< T > ()
 Returns an enumerator of a certain type that iterates through the collection.
 
IEnumerator< intGetEnumerator ()
 Returns an enumerator that iterates through the collection.
 
void restoreDefault ()
 Restores the default for every component of this collection.
 

Public Attributes

readonly PropertyI directValues = new PropertyI()
 An integer property which can be used to directly define a LUT.
 
readonly PropertyF gamma = new PropertyF()
 A float property which can be used to set the gamma value.
 
readonly PropertyF gammaAlpha = new PropertyF()
 A float property which can be used to set the gammaAlpha value.
 
readonly PropertyIBoolean gammaInverter = new PropertyIBoolean()
 An enumerated integer property defining whether the calculated gamma correction function shall be inverted or not.
 
readonly EnumPropertyI< TLUTGammaModegammaMode = new EnumPropertyI<TLUTGammaMode>()
 An enumerated integer property which can be used to configure the LUT(Look Up Table) gamma mode.
 
readonly PropertyI gammaStartThreshold = new PropertyI()
 An integer property which can be used to define a start threshold above which the gamma correction formula shall be used in mv.impact.acquire.LUTParameters.gammaMode mv.impact.acquire.TLUTGammaMode.LUTgmLinearStart.
 
readonly PropertyI inputValues = new PropertyI()
 An integer property to define the input values for sampling points for interpolated LUT transformations.
 
readonly PropertyI outputValues = new PropertyI()
 An integer property to define the output values for sampling points for interpolated LUT transformations.
 
readonly PropertyI valueCount = new PropertyI()
 An integer property to define the number of sampling points for interpolated LUT transformations.
 

Properties

IEnumerable< ComponentcomponentEnumerable [get]
 Returns an enumerator that iterates through the collection.
 
IEnumerable< ComponentListcomponentListEnumerable [get]
 Returns an enumerator that iterates through all the mv.impact.acquire.ComponentList elements in the collection.
 
int hObj [get]
 Returns a unique identifier for the component collection referenced by this object.
 

Detailed Description

Properties for configuring settings belonging to a certain LUT (Look Up Table) to be applied to a captured image.

Note
Objects of this class can't be constructed directly. Its parameters can be accessed via an instance of a class derived from mv.impact.acquire.ImageProcessing.

Member Function Documentation

◆ getEnumerable< T >()

IEnumerable< T > getEnumerable< T > ( )
inlineinherited

Returns an enumerator of a certain type that iterates through the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (Property c in info.getEnumerable<Property>())
{
}
A template class to represent 32 bit integer properties and 32 bit enumerated integer properties.
Definition EnumPropertyI.cs:61
A class to query various general information about the device, its driver and other information.
Definition Info.cs:10
A base class for properties.
Definition Property.cs:109

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ GetEnumerator()

IEnumerator< int > GetEnumerator ( )
inlineinherited

Returns an enumerator that iterates through the collection.

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ restoreDefault()

void restoreDefault ( )
inlineinherited

Restores the default for every component of this collection.

Calling this function will restore the default value for every component belonging to this collection.

Note
The caller must have the right to modify the component. Otherwise an exception will be thrown.

Member Data Documentation

◆ directValues

readonly PropertyI directValues = new PropertyI()

An integer property which can be used to directly define a LUT.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmDirect.

This property will provide a complete LUT thus e.g. in a LUT mapping to a 10 bit output this property will store 2^10 (1024) values that can be accessed and modified by the user.

◆ gamma

A float property which can be used to set the gamma value.

Gamma correction is explained e.g. in this Wikipedia article: http://en.wikipedia.org/wiki/Gamma_correction.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmGamma.

The gamma value will be used to calculate the corresponding input -> output transformation LUT.

The following formula will be used:

( ( 1 + gammaAlpha ) * inputValue^(1/gamma) ) - gammaAlpha

◆ gammaAlpha

readonly PropertyF gammaAlpha = new PropertyF()

A float property which can be used to set the gammaAlpha value.

Refer to mv.impact.acquire.LUTParameters.gamma to see how this parameter affects the resulting LUT data.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmGamma.

◆ gammaInverter

An enumerated integer property defining whether the calculated gamma correction function shall be inverted or not.

Valid values for this property are defined by the enumeration mv.impact.acquire.TBoolean.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmGamma.
Attention
This property is mainly provided for compatibility reasons since the original implementation of the Impact Acquire framework and the implementation inside Balluff GmbH GenICam devices introduced later differ. The default behaviour of the Impact Acquire results in the reverse function of the gamma function inside the device firmware thus the gamma value specified here results in the same response as if applying (1/gamma value) to a device. So a gamma value of 2.2 with the inverter switched off this would result in the same response as a gamma value of 0.45 with the inverter switched on. In order not to change the default behaviour of this filter the default value for this property will be mv.impact.acquire.TBoolean.bTrue and can be set to mv.impact.acquire.TBoolean.bFalse to achieve the same behaviour as implemented for GenICam devices and specified in the SFNC (GenICam Standard Features Naming Convention).
Since
2.38.0

◆ gammaMode

An enumerated integer property which can be used to configure the LUT(Look Up Table) gamma mode.

Valid values for this property are defined by the enumeration mv.impact.acquire.TLUTGammaMode.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmGamma.

◆ gammaStartThreshold

readonly PropertyI gammaStartThreshold = new PropertyI()

An integer property which can be used to define a start threshold above which the gamma correction formula shall be used in mv.impact.acquire.LUTParameters.gammaMode mv.impact.acquire.TLUTGammaMode.LUTgmLinearStart.

Values below that threshold will be calculated using linear interpolation.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmGamma or if mv.impact.acquire.LUTParameters.gammaMode is NOT set to mv.impact.acquire.TLUTGammaMode.LUTgmLinearStart.

◆ inputValues

readonly PropertyI inputValues = new PropertyI()

An integer property to define the input values for sampling points for interpolated LUT transformations.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmInterpolated.

The number of values stored by this property can be changed by writing to the property mv.impact.acquire.LUTParameters.valueCount. The documentation of this property also provides some example values and resulting transfer characteristics.

◆ outputValues

readonly PropertyI outputValues = new PropertyI()

An integer property to define the output values for sampling points for interpolated LUT transformations.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmInterpolated.

The number of values stored by this property can be changed by writing to the property mv.impact.acquire.LUTParameters.valueCount. The documentation of this property also provides some example values and resulting transfer characteristics.

◆ valueCount

readonly PropertyI valueCount = new PropertyI()

An integer property to define the number of sampling points for interpolated LUT transformations.

Note
This property will be invisible when mv.impact.acquire.ImageProcessing.LUTEnable is set to mv.impact.acquire.TBoolean.bFalse or if mv.impact.acquire.ImageProcessing.LUTMode is NOT set to mv.impact.acquire.TLUTMode.LUTmInterpolated.

At least 2 sampling points are needed, the max. number of sampling points is defined by the bit depth of the input image, thus a 8 bit input image can have no more than 2^8 (256) sampling points. if the max. number of sampling points is used, the behaviour is the same a when working with mv.impact.acquire.ImageProcessing.LUTMode set to mv.impact.acquire.TLUTMode.LUTmDirect.

Example

Assuming 4 sampling points in mv.impact.acquire.TLUTInterpolationMode.LUTimThreshold mode for an 8 to 8 bit transformation where the following values are used:

indexinput valueoutput value
0064
1128255
21920
32550

This will result in the following transfer function characteristic:

The following code would be needed to achieve this behaviour for mono video sources:

//-----------------------------------------------------------------------------
public void fn( ImageProcessing ip, TLUTImplemention LUTImplementation )
//-----------------------------------------------------------------------------
{
ip.LUTEnable.write( TBoolean.bTrue );
ip.LUTMode.write( TLUTMode.LUTmInterpolated );
ip.LUTImplementation.write( TLUTImplemention.LUTImplementation );
ip.LUTInterpolationMode.write( TLUTInterpolationMode.LUTimThreshold );
{
case TLUTImplemention.LUTiHardware:
break;
case TLUTImplemention.LUTiSoftware:
break;
}
LUTParameters LUTAccess = ip.getLUTParameter( 0 );
LUTAccess.valueCount.write( 4 );
v.Add(0);
v.Add(128);
v.Add(192);
v.Add(255);
LUTAccess.inputValues.write( v );
v[0] = 64;
v[1] = 255;
v[2] = 0;
v[3] = 0;
LUTAccess.outputValues.write( v );
}
EnumPropertyI< T > write(T value)
Writes one value to the property.
Definition EnumPropertyI.cs:449
Base class for image processing related properties.
Definition ImageProcessing.cs:15
Properties for configuring settings belonging to a certain LUT (Look Up Table) to be applied to a cap...
Definition LUTParameters.cs:11
TBoolean
Defines a Boolean value type.
Definition mvDriverBaseEnums.cs:481
TLUTInterpolationMode
Defines valid LUT(LookUp Table) interpolation modes.
Definition mvDriverBaseEnums.cs:3841
TLUTMapping
Defines valid LUT(LookUp Table) mapping modes.
Definition mvDriverBaseEnums.cs:3853
TLUTMode
Defines valid LUT(LookUp Table) modes.
Definition mvDriverBaseEnums.cs:3879

Assuming 3 sampling points in mv.impact.acquire.TLUTInterpolationMode.LUTimLinear mode for an 8 to 8 bit transformation where the following values are used:

indexinput valueoutput value
0064
1128255
22550

This will result in the following transfer function characteristic:

Assuming 4 sampling points in mv.impact.acquire.TLUTInterpolationMode.LUTimCubic mode for an 8 to 8 bit transformation where the following values are used:

indexinput valueoutput value
000
1128255
2192192
32550

This will result in the following transfer function characteristic:

Property Documentation

◆ componentEnumerable

IEnumerable<Component> componentEnumerable
getinherited

Returns an enumerator that iterates through the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (Component c in info.componentEnumerable)
{
Console.WriteLine("{0}", c.name);
}
String name
Returns the name of the component referenced by this object.
Definition ComponentAccess.cs:167
A base class to implement access to internal driver components.
Definition Component.cs:133

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ componentListEnumerable

IEnumerable<ComponentList> componentListEnumerable
getinherited

Returns an enumerator that iterates through all the mv.impact.acquire.ComponentList elements in the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (ComponentList cl in info.componentListEnumerable)
{
Console.WriteLine("{0}", cl.name);
}
A class to provide access to component lists.
Definition ComponentList.cs:14

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ hObj

int hObj
getinherited

Returns a unique identifier for the component collection referenced by this object.

This handle will always reference an object of type mv.impact.acquire.ComponentList.

Returns
A unique identifier for the component referenced by this object.