필터 지우기
필터 지우기

Generating mex file from Matlab code containing regionprops

조회 수: 2 (최근 30일)
Michael
Michael 2012년 6월 12일
I'm trying to generate a mex file from Matlab code without much success.
The function I want to compile calls the function regionprops from the Image Processing Toolbox. Since this function is not supported by Matlab Coder, I am declaring it as extrinsic. My problem is declaring the output of regionprops. The output is a vector of structures with a single field of type double and variable size (1D vector always). An example of my code follows:
function outVar = MyFunction( img ) %#codegen
coder.extrinsic( 'regionprops' );
% Some kind of declaration for properties should be added here %
properties = regionprops( img, 'PixelIdxList' );
outVar = 0;
for i = 1:length( properties )
outVar = outVar + properties(i).PixelIdxList( end );
end
The question is, how to declare the variable "properties" and what kind of flags to use during compilation so that a structure with a variable sized field can be compiled.
Any help is greatly appreciated.
Michael.
  댓글 수: 2
Ashish Uthama
Ashish Uthama 2012년 6월 12일
could you say more about the full application? Why not write a function which interfaces with regionprops and declare that function extrinsic?
Michael
Michael 2012년 6월 13일
I am writing a computer vision application. I have an input image and its segmentation with a different label on each region. I use regionprops on the segmentation to calculate information on each segment, and then I use this information as features for each segment.
Your suggestion of declaring regionprops as extrinsinc is what I want to do. The problem is that I don't know how to declare the output of regionprops so that I can index it afterwards. Also some of the output in the struct returned by regionprops may be dynamic length arrays (like PixelIdxList), I am having trouble declaring these dynamic length vectors.

댓글을 달려면 로그인하십시오.

채택된 답변

Ashish Uthama
Ashish Uthama 2012년 6월 13일
Try
function outVar = myapp %#codegen
coder.extrinsic('imread');
coder.extrinsic('regionprops');
idxList = 1;
properties = struct('PixelIdxList',idxList);
coder.varsize('properties',[intmax('int32'),1]);
coder.varsize('properties(:).PixelIdxList',[intmax('int32'),1]);
BW = imread('text.png');
properties = regionprops(BW, 'PixelIdxList');
outVar = 0;
for i = 1:length( properties )
outVar = outVar + properties(i).PixelIdxList( end );
end
end

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB Coder에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by