[Insight-users] ITK Image registration within Matlab -> Segmentation Violation

Patrik Brynolfsson patrik.brynolfsson at radfys.umu.se
Tue Oct 12 15:08:13 EDT 2010


Ok, this is how I compile mex files in VS2010. I know older VS have slightly
different layout, but the principle is the same.
In the solution explorer right click on your project and select
Properties/Configuration Properties and do the following:

   - In General, set target extension to .mexw32 (this might be under Linker
   properties in older VS)
   - in General, Set configuration type to Dynamic library (.dll)
   - In C/C++/General, set additional include directories to C:\Program
   Files\MATLAB\R2010a\extern\include (or wherever your matlab is installed)
   - In C/C++/Preprocessor, add MATLAB_MEX_FILE to Preprocessor definitions
   - In Linker/General, set Additional Library directories to C:\Program
   Files\MATLAB\R2010a\extern\lib\win32\microsoft  (or wherever your matlab is
   installed)
   - in Linker/Input, add libmx.lib, libmex.lib, libmat.lib to Additional
   Dependencies
   - Add a module definition file in Module definition file. Mine is called
   module.def and is just a text file with the content:

LIBRARY "name of your mex.file"
EXPORTS mexFunction

For me it is something like

LIBRARY registration.mexw32
EXPORTS mexFunction

Place your module.def file where your solution is, i.e. the same folder as
your .sln file.

That works for me, give it a try and see if it helps.
---
Patrik Brynolfsson




2010/10/12 Guillaume.Salvai at sanofi-aventis.com <
Guillaume.Salvai at sanofi-aventis.com>

> Hello,
>
> I am using Matlab 7.10.0 (R2010a).
> I tried to attach VS to the Matlab process and run my .mex32, but I don't
> have any clue ..
> The process crashes with an Access Violation (Exception ... (ITKCommon) in
> Matlab.exe ).
>
> I thought a library might missing whith Matlab, but the process wouldn't
> run at the beginning is it?
> And as for my VS settings, they are supposed to be the same as when it
> works without Matlab, but I may miss someting.
>
> Thanks for your help,
> Guillaume
>
> ________________________________
> From: patrik.brynolfsson at gmail.com [mailto:patrik.brynolfsson at gmail.com]
> On Behalf Of Patrik Brynolfsson
> Sent: Tuesday, October 12, 2010 5:42 PM
> To: Salvai, Guillaume R&D/FR
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] ITK Image registration within Matlab ->
> Segmentation Violation
>
> Your code doesn't crash for me, maybe there is something wrong with your VS
> settings? What version of Matlab are you using?
> ---
> Patrik Brynolfsson
>
>
>
>
> 2010/10/12 Patrik Brynolfsson <patrik.brynolfsson at radfys.umu.se<mailto:
> patrik.brynolfsson at radfys.umu.se>>
> You can debug the code by attatching matlab to  VS. Tools/Attatch to
> process, select matlab. Then just set a break point and run the code from
> matlab. Maybe that sheds some light to the problem... ?
> ---
> Patrik Brynolfsson
>
>
>
>
> 2010/10/12 Guitarum <guillaume.salvai at sanofi-aventis.com<mailto:
> guillaume.salvai at sanofi-aventis.com>>
>
> Hello everybody,
>
> I'am attempting to perform an image registration using ITK.
> First of all, I've done it within Visual Studio, and it works perfectly.
>
> Now, I simply want to implement this within Matlab, using mexFunction.
> I copy what I had done, with no input/output argument for the mexFunction.
> I added the useful include files and libraries, and it compiles well.
> However, I got a Segmentation Violation while running the programme .mex32
>
> Then I investigate and the problem seems to come from a
> itkImageRegistration
> object.
> Here is a code which sheds light on the problem that I didn't manage to
> handle ..  (it isn't my entire code, but the rest works well). I comment it
> explaining the tests I've done.
>
> /* BEGINNING */
>
> // MEX
> #include "mex.h"
>
> // ITK
> #include "itkTranslationTransform.h"
> #include "itkMattesMutualInformationImageToImageMetric.h"
> #include "itkImageRegistrationMethod.h"
>
>
> const      unsigned int   Dimension = 3;
> typedef   unsigned char  PixelType;
> typedef   float          InternalPixelType;
>
> typedef itk::Image< InternalPixelType, Dimension > InternalImageType;
> typedef itk::MattesMutualInformationImageToImageMetric< InternalImageType,
> InternalImageType > MetricType;
> typedef itk::TranslationTransform< double, Dimension> TransformType;
> typedef itk::ImageRegistrationMethod< InternalImageType , InternalImageType
> > RegistrationType;
>
>
>  // The program entry point
>  void mexFunction(int nlhs, mxArray *plhs[],
>                int nrhs, const mxArray *prhs[])
>  {
>
>   mexPrintf("Begin !\n");
>
>   // Test of MetricType. It exists and the function
> SetNumberOfHistogramBins works.
>   MetricType::Pointer metric = MetricType::New();
>   metric->SetNumberOfHistogramBins( 50 );
>
>   // Test of transformType. OK.
>   TransformType::Pointer transform = TransformType::New();
>   TransformType::ParametersType testTransf(3);
>   testTransf[0]=1;
>   testTransf[1]=2;
>   testTransf[2]=3;
>   transform->SetParameters(testTransf);
>
>   mexPrintf("OK1 !\n");
>
>   // That part doesn't crash. So I guess RegistrationType is correctly
> define.
>   RegistrationType::ParametersType testReg(3);
>   testReg[0]=1;
>   testReg[1]=2;
>   testReg[2]=3;
>
>   mexPrintf("OK2 !\n");
>
>   // It crashes here ! Segmentation Violation.
>   RegistrationType::Pointer reg = RegistrationType::New();
>
>  }
>
> /*END*/
>
> I found that the last code line crashes, although it is a basic object
> creation.
> Furthermore, it works for TransformType and MetricType, and those are very
> similar to Registration Type.
>
> I'm somehow a newbie with ITK, so it might be a basic mistake. But I can't
> find it, besides it works within VC++ ...
> Does anybody have an idea? I'll be very grateful for any help.
>
> Thanks very much in advance,
> Guillaume
>
> --
> View this message in context:
> http://old.nabble.com/ITK-Image-registration-within-Matlab--%3E-Segmentation-Violation-tp29940926p29940926.html
> Sent from the ITK - Users mailing list archive at Nabble.com.
>
> _____________________________________
> Powered by www.kitware.com<http://www.kitware.com>
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20101012/82d649b5/attachment.htm>


More information about the Insight-users mailing list