File Exchange

image thumbnail

MVTec Halcon Wrapper

version 1.8 (5.05 MB) by

MVTec Halcon function mex-wrapper

4 Downloads

Updated

View License

MVTec Halcon (12) is an image processing library used in machine vision applications.
At Decom.nl we use both Halcon and Matlab together. Therefor we wrapped all Halcon operators into Matlab Mex-files (c++ code). By compiling the code (compile_cpp_code.m) you can use the Halcon operators in Matlab.
Example,
I = transpose(imread('lena.tif'));
Imedian = hMedianImage (I, 'circle', 3, 'continued');
figure, imshow(transpose(Imedian.image))
Note,
1. To use the software install Halcon Developer version. A version including temporary license can be obtained at mvtec.com
2. Please note, this wrapper is also compatible with Halcon 11, Halcon 13 ... but in that case first run "generate_cpp_code.m" followed by "generate_help_files.m" followed by "compile_cpp_code.m")

3.If you use Matlab 64-bits, install Halcon x64 and 64-bit c++ compiler.
When using Matlab 32-bits also install Halcon 32-bits.

4. Note image-data is stored row-wise in Halcon and column-wise in Matlab. Thus transpose or permute(I,[2 1 3]) an image from Matlab before using in Halcon and the other-way around

5. XLD's are currently not supported.

6. Halcon is sensitive to input datatypes, thus don't use hFunction("100") or hFunction(100), when Halcon expect an integer, then use hFunction(int32(100)). A mixed tuple equals a cell array like {"true", "red",int32(123),3.14}

Comments and Ratings (7)

Hi Dirk-Jan,
thank you for posting this great tool.

I followed your instructions: I installed Halcon 13 and executed the "generate_cpp_code.m" followed by "generate_help_files.m" followed by "compile_cpp_code.m". No errors occurred.

I compiled using Microsoft Visual Studio 2015 Compiler, and the process returned the message "MEX completed successfully".

Then, I set the Current Folder to the folder containing your wrapper, and I tried to execute your example (adapting the file name):

I = transpose(imread('cameraman.tif'));
Imedian = hMedianImage (I, 'circle', 3, 'continued');
figure, imshow(transpose(Imedian.image))

It returns this error:

Attempt to execute SCRIPT hMedianImage as a function:
Desktop\halconWrapper_version1e\hMedianImage.m

Could you pls help me understand what's wrong with my procedure?
Thank you very much in advance.

Nut

Nut (view profile)

Hi,

can this Halcon Wrapper work in MATLAB version later than R2014a?

Seth

Seth (view profile)

This is really great. It helps couple two very powerful codes and utilize some of the great features in Halcon. My two issues are:
1. Lack of examples/documentation on how to use these functions effectively in Matlab.
2. Lack of XLD support.

You can typically stumble through and figure out how to use these functions, but it is slow and can be non-obvious if you aren't intimately familiar with Halcon. For example - if a Halcon function returns a "region" - how do we best use that in Matlab space? Say we threshold an image (hDynThreshold) - how do I quickly display the results using imshow()? You can figure it out, it works - but it is not obvious at first.

Overall - very valuable toolbox and very glad this was provided on the file exchange. Some basic examples to help users understand things efficiently could go a long way.

Seth

Seth (view profile)

R.

R. (view profile)

Wont work with Halcon 10

Shaan

Shaan (view profile)

HALCONCpp/HalconCpp.h is missing.

Updates

1.8

Upgrade to Halcon 12... Also added Excpection catching and additional error information

1.7

Fixed Null Pointer issue

1.6

Added Help file generator

1.5

Halcon Exception as Matlab error.
Functions without output now first HObject input is assumed to be also the output. (Such as SetGrayVal)

1.4

Halcon Exception as Matlab error.
Functions without output now first HObject input is assumed to be also the output. (Such as SetGrayVal)

1.3

Halcon Exception as Matlab error.
Functions without output now first HObject input is assumed to be also the output. (Such as SetGrayVal)

1.2

Now wraps all Halcon Functions, only XLD's are not working yet.

1.1

Now wraps all Halcon Functions, only XLD's are not working yet.

MATLAB Release
MATLAB 8.3 (R2014a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video