gusucode.com > vision工具箱matlab源码程序 > vision/+vision/+internal/+buildable/disparityBMBuildable.m

    classdef disparityBMBuildable < coder.ExternalDependency %#codegen
    % disparityBMBuildable - encapsulate extractFeature (FREAK) implementation library
    
    % Copyright 2012-2013 The MathWorks, Inc.
    
    
    methods (Static)
        
        function name = getDescriptiveName(~)
            name = 'disparityBMBuildable';
        end
        
        function b = isSupportedContext(~)
            b = true; % supports non-host target
        end
        
        function updateBuildInfo(buildInfo, context)
            buildInfo.addIncludePaths({fullfile(matlabroot,'toolbox', ...
                'vision','builtins','src','ocv','include'), ...
                fullfile(matlabroot,'toolbox', ...
                'vision','builtins','src','ocvcg', 'opencv', 'include')} );
            buildInfo.addSourcePaths({fullfile(matlabroot,'toolbox', ...
                'vision','builtins','src','ocv')});
            buildInfo.addSourceFiles({'disparityBMCore.cpp'});
            buildInfo.addIncludeFiles({'vision_defines.h', ...
                                       'disparityBM.hpp', ...
                                       'disparityBMCore_api.hpp'}); % no need 'rtwtypes.h'   
                                   
            vision.internal.buildable.portableOpenCVBuildInfo(buildInfo, context, ...
                'disparityBM');            
        end

        %------------------------------------------------------------------
        % write all supported data-type specific function calls      
        function outDisparity = disparityBM_compute(image1_u8, image2_u8, opt)        
            
            coder.inline('always');
            coder.cinclude('disparityBMCore_api.hpp');
            
            nRows = int32(size(image1_u8, 1)); % original (before transpose)
            nCols = int32(size(image1_u8, 2)); % original (before transpose)
            outSize = [nRows nCols];
            outDisparity = coder.nullcopy(zeros(outSize,'single'));
            roi1_ = int32(opt.roi1);
            roi2_ = int32(opt.roi2);
            
            paramStruct = struct( ...
                'preFilterCap', int32(opt.preFilterCap), ...
                'SADWindowSize', int32(opt.SADWindowSize), ...
                'minDisparity', int32(opt.minDisparity), ...
                'numberOfDisparities', int32(opt.numberOfDisparities), ...
                'textureThreshold', int32(opt.textureThreshold), ...
                'uniquenessRatio', int32(opt.uniquenessRatio), ...
                'disp12MaxDiff', int32(opt.disp12MaxDiff), ...
                'roi1', roi1_, ...
                'roi2', roi2_, ...
                'preFilterType', int32(opt.preFilterType), ...
                'preFilterSize', int32(opt.preFilterSize), ...
                'speckleWindowSize', int32(opt.speckleWindowSize), ...
                'speckleRange', int32(opt.speckleRange), ...                
                'trySmallerWindows', int32(opt.trySmallerWindows));   
            
            coder.cstructname(paramStruct,'cvstDBMStruct_T');
            
            coder.ceval('disparityBM_compute',...
                    coder.ref(image1_u8), ...
                    coder.ref(image2_u8), ...
                    nRows, nCols, ... 
                    coder.ref(outDisparity), ...
                    coder.ref(paramStruct));
            
        end       
    end   
end