give us a call at +4367762339311
or
write an email to office@epina.at
Frequently Asked Questions regarding ImageLab
(The Help section as well as the Webinars page on imagelab.at are also recommended)
What is the difference of images in the 2D Imager and the Image Stack? The 2D Imager displays images based on single wavelengths or other physical properties. You can retrieve the data or even edit it in the data editor. In contrast, the image stack is solely for superimposing various pictures. So the Image Stack works with "images" (in the sense of a photo) while the 2D Imager works with data (which are displayed as images).
Why is it impossible to directly enter a specific layer number? ImageLab offers control elements throughout the entire program which allow you to enter any parameter in an intuitive way. Below the parameter window there is a gauge bar which can be used for a coarse selection. The exact value can then be adjusted by clicking the arrow buttons.
Why are cluster images always tied to their actual pixel resolution, while other images show (much nicer) interpolated colors? If there are more than two classes the interpolation of class numbers (which is equivalent to interpolating the corresponding colors) is more or less nonsense. A simple example should clarify this: suppose you have three classes which form three clusters located in a triangualar configuration. Interpolating between class one and class three will result in an interpolated class two between these two clusters - which does not reflect the actual situation. Thus it is better to stick with pixels.
If I import an image of 20 by 20 pixels, ImageLab displays only 19 by 19 pixels. Is this a bug? No it's not. Pixels are considered to be infinitesimally small support points of the surface to be measured. ImageLab uses these points and estimates the surface between the support points. Thus a grid of 20 by 20 measurements results in 19 by 19 surface elements (which can be displayed as contant-height rectangles by selecting the "pixels" option in the image setup dialog).
How can I change the default color palette for the images? Go to "Setup/Preferences" and select the default color palette in this window. The default color palette is used whenever no other palette is assigned to an image. If you experience trouble with color reception you may try to switch to the "MorgenStemning" color palette which has been designed especially for users suffering from color reception deficiencies.
Why do I have to define spectral descriptors, why not use the raw intensities? Spectral descriptors can considerably improve the performance of multivariate methods for the interpretation of hyperspectral images. We recommend to configure a set of spectral descriptors for each kind of problem and/or sample. This way the effort of selecting spectral descriptors can be minimized while the results improve significantly. For more, please read the background information on spectral descriptors.
When copying an image to the clipboard (command "Copy to Clipboard" of the context menu) the crosshair cursor is copied as well. Can this be avoided? Yes, simply move the crosshair outside the chart, then right click the window and select "Copy to Clipboard".
How can I convert my IR spectra from absorbance units to percent transmission? Open the predefined transformations dialog (command Preprocessing>Predefined Arithmetic Conversions) and select the appropriate conversion mode.
How can I add normally distributed noise to the image data? There are three ways to do so: (1) using the built-in calculator, (2) using the bulk tranform tool and (3) writing a small program in ILabPascal. See the section "How to Add Noise" for more.
How can I check if there are any remaining spikes after the spike removal tool has been used? Spikes show high variances, a fact which can be used to detect remaining spikes not discovered by the spike removal tool. Simply calculate an average spectrum of the entire image and look at the confidence band of the mean. Spikes will be indicated by an significant increase of the width of the confidence band.
What is q-normalisation? Q-normalisation is comparable to standardisation, using the median and the difference between the median and the 0.95 quantile instead of the mean and the standard deviation. Q-normalized data are less prone to outliers, since outliers would fall outside the 0.95 quantile if the number of outliers is less than 5% of all data values. See the scaling of the data for details.
I have a huge hyperspectral image (4 million spectra) and ImageLab runs into a memory overflow problem. What can I do? You have basically two options: (1) use the 64-bit version of ImageLab (see the comparison of features), or (2) resample your data. The second method is in general a better approach as the processing time of many algorithms scales with the square of the number of pixels. If you cannot resample because of the high density of information in your data, another way is to process only parts of an image.
How can I create logical combinations of pixel masks? Logical combinations of pixel masks can be calculated either by means of the mask editor or by using the ImageLab scripting engine (see the Script Library - Pixel Masks).
What about the speed of scripts. The execution speed of scripts is about 30% lower than that of native code. However, while these slowdown may seem to be a high toll, it is in fact not if you compare it to classical interpreted scripts which are typically slower by a factor of 10 or more. The high execution speed of ImageLab scripts is achieved by compiling the script code before executing it.
The generation of the PCA details is so slow. Larger matrices cause a correspondingly large report on the details page of the PCA. The cretion of this report can take several seconds. You can switch off the PCA details in the preferences dialog (set the option "Max. No. of PCA Eigenvalues in Protocol" to 20).
The color scale changes a little bit if I toggle the "Auto Color" checkbox several times. In order to provide fast response, the "Auto Color" function calculates the optimum span of the color scale by drawing a random sample of all pixels of an image. Due to the inherent random nature of this process the color scale changes slightly each time the color normalisation is performed. You can adjust the limit above which random sampling of the colors occurs in the preferences dialog (option "Sampline Limit - Color Scales").
Frequently Asked Questions regarding SDL
(The Technotes section on the official website of SDL is also recommended)
Property Does not Exist: I just installed the latest version of the SDL suite. I used the component XXXX (e.g. Rchart) in a program and although the program compiles, it will not execute - the error message reads "the property XXXX.PPPP does not exist". Is this a mistake on my part? What can I do?
The explanation for this error message is quite simple: you upgraded to a version of the SDL suite which does not support the particular property anymore. There are some components (i.e. TRChart, or TReportListView) which offer better replacements for previous properties discarding the old ones. The problem is that the DFM files of your project still contain the old property definitions. These definitions are compiled into your executable without problems (they are not checked for correctness during compilation), however, when you start the executable these unrecognized properties will generate the above mentioned error message.
In order to solve the problem, you have to simply open all forms in the IDE which contain the component showing this error. The IDE will complain about the missing property and ask you what to do. Select "ignore" and save the unit after it has been loaded. At this point the old "missing" properties will be discarded and the new ones will be included into the DFM file. Now recompile the program - that's it.
Register OLE automation server with Installshield: I want InstallShield to register my OLE automation server.
The simplest way is to make InstallShield execute the program. However there are InstallShield version around which do not support this possibility. As an alternative, you can create a registry key and show the reboot pc message. If the registry key is under the "runonce" tree and just calls regsvr, it will be registered the next time the computer is rebooted.
Creating Components Manually: I am creating a component at runtime. But when I do this the programm always raises an access violation (EInvalidOperation with message 'Control has no parent window').
If you add any component or control to a form at runtime,
you have to set the control's parent immediately after you create the control.
Usually the parent of a control is the TWincontrol, that contains it (i.e. the
form or a panel control ...).
SomeControl:=TSomeControl.Create(myForm); SomeCOntrol.Parent:=myForm;
C++ Builder:
TSomeControl* SomeControl = new TSomeControl(myForm); SomeControl->Parent = myForm;
Uninstalling Delphi Components: I'm facing troubles when installing a new release of the SDL Suite under Delphi 2005 or higher: new components are not displayed in the toolbar.
BDS (aka Delphi 2005 or higher) uses a special scheme to set the registry keys of the current user. At startup Delphi copies all registry information from the HKEY_LOCAL_MACHINE path to the HKEY_CURRENT_USER path. This copying takes place only if the key "RegMergeLevel" in HKEY_LOCAL_MACHINE is higher than in the HKEY_CURRENT_USER part of the registry. After the copying the RegMergeLevel key of HKEY_CURRENT_USER is set to the value of HKEY_LOCAL_MACHINE. Thus avoiding to copy the BDS registry path during subsequent startups.
The problem with this approach is that the uninstaller does not know about this registry copying process. It correctly decreases the RegMergeLevel key in the HKEY_LOCAL_MACHINE path but does not change it in the HKEY_CURRENT_USER path. As a consequence, the RegMergeLevel key for the installed new release is then too low to trigger the copying into the current user registry path, preventing the components to become visible in the toolbar.
In order to uninstall the SDL Suite completely you have to perform the following steps manually:
File not found: SDL_xxxxx.dcu: I have installed the entire SDL Suite (for Delphi 6). If I try to compile the example application "poldiag" the compiler/linker issues the error message: File not found: SDL_numio.dcu. This file does not exist on my computer.
The unit names of the SDL Component Suite have been changed from release 8.5 upwards by inserting the prefix "SDL_" in order to avoid name conflicts with units from other third-party developers. Thus you most probably tried to compile a sample application written for release 8.5 or higher with a SDL Suite older than release 8.5.
Solution: Either install the latest version of the SDL Suite, or remove all "SDL_" prefixes in the uses declaration of the sample application.
vUnable to open file 'SDLCHARTPACK_xxCx.LIB': I have upgraded my SDL ChartPack from Version 9.7 to Version 10.0. When I try to build an old application I get the following message: [Linker Fatal Error] Fatal: Unable to open file 'SDLCHARTPACK_97C6.LIB' I've checked the library paths, and everything seems correct.
This problem is a common problem of Borland's C++Builder which does not automatically exchange the old library entries in the project file by the new ones. So the best way to solve this problem is to open the corresponding project file (*.bpr) with a text editor and exchange any occurrence of "_97C6" by "_100C6".
For other releases of the SDL Suite and/or different compilers you have to search for substrings according to the following general scheme:
_xxxccwith 'xxx' being the release number without the decimal point (e.g. '8.5' becomes '85'), and 'cc' being either 'C5' or 'C6'.
Turbo Delphi/C++ Professional: I've upgraded from the free Turbo Delphi to Turbo Delphi Professional. The SDL Suite does not show up in the tools palette, despite the fact that I installed it.
As you know (and which is probably the reason why you upgraded), the free version of the Turbo products does not allow to install third-party components. When you install any third-party components, they show up in the Component Palette dialog, but cannot be activated. If you installed the SDL Suite (or any other third-party product) before upgrading to Turbo Delphi Professional, you simply have to activate the additional components manually.
To do so, start Turbo Delphi/C++ and click on "Component/Install Packages". Scroll down the box listing all components and tick off the SDL components in the following order:
E2015: Ambiguity Problems with C++Builder: When I try to utilize the OnImageRequest event of the class TThumbnails under C++Builder, I'm getting the following error message: E2015 Ambiguity between TBitmap and Windows::TBitmap
This is not a problem of the SDL Suite, but due to a bug in the C++Builder, which does not generate a suitable header file. The Delphi compilers are not affected by this bug. You can solve the problem by adding the following line to the header of the corresponding unit:
#define TBitmap Graphics::TBitmapThis line has to be inserted above declaration of the form:
The arrow keys do not trigger the OnKeyDown and OnKeyUp events: The OnKeyDown event works well with component XY. However the arrow keys do not trigger this event.
The problem of not getting fired the OnKeyDown event by the arrow keys is due to the top message loop which intercepts the arrow keys and diverts the corresponding message to perform navigation on the form. So the solution is quite simple: write your own message handler which prevents the navigation keys to be processed by the VCL message loop.
The following code shows how to make the arrow and tab keys fire the OnKeyDown/OnKeyUp events for a TPlot3D component. The form (instance Form1) contains a TPlot3D component (instance PL1), the OnShow event of the form is used to set the focus to the PL1 component. The message handler code is displayed in red color.
unit Unit43; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SDL_plot3d, Vcl.StdCtrls; type TForm1 = class(TForm) PL1: TPlot3D; Label1: TLabel; Label2: TLabel; procedure FormShow(Sender: TObject); procedure PL1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure PL1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private // message handler for the navigation keys procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CMDialogKey(var Message: TCMDialogKey); begin // suppress the standard processing for the arrow and tab keys if (Message.CharCode <> VK_LEFT) and (Message.CharCode <> VK_RIGHT) and (Message.CharCode <> VK_DOWN) and (Message.CharCode <> VK_UP) and (Message.CharCode <> VK_TAB) then inherited; end; procedure TForm1.FormShow(Sender: TObject); begin PL1.SetFocus; end; procedure TForm1.PL1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Label1.Caption := 'key down: '+IntToStr(Key); Label2.Caption := ''; end; procedure TForm1.PL1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Label2.Caption := 'key up'; Label1.Caption := ''; end; end.
Frequently Asked Questions regarding DataLab
(The Help section on the official website of Datalab is also recommended)
Error during update: Cannot store the updated file "(file name)". Please ensure that the directory "(directory)" is not write-protected.
If you encounter this error message this is most probably due to the fact that you are not logged in as an administrator. When updating DataLab needs to have write access rights in certain directories which are denied by Windows if you are logged in as normal user.
Solution: Either (1) login as administrator and perform the update, or (2) close DataLab and restart it by right-clicking the DataLab icon on the Windows start menu and selecting "run as administrator". Thereafter you can perform the update. When the update is finished you can work again under normal user rights.
Filling the data matrix: How can I fill the entire data matrix with a constant value?
The simplest way to fill the data matrix with a constant value is to use the built-in math interpreter. Open the math interpreter (button ) and enter the following command line (don't forget to click "Execute" after entering the command line): ALL=value
Example: ALL=3.141 fills all cells of the matrix to the value 3.141.
Number of decimal places: If I enter a number with five decimal places in the data editor, DataLab discards the decimal places after the third one.
Internally DataLab always uses double precision numbers which come down to 15 decimal places. In order to improve readability DataLab displays only a small number of decimal places (3 by default) in the data editor. You can easily adjust the number of displayed decimal places in the menu general operating preferences.