CONGRUENCYEDGE_BASE - Base function for CONGRUENCYEDGE.

Contents

Syntax

   M  = CONGRUENCYEDGE_BASE(I, nscale, norient, minWaveLength, ...
              mult, sigmaOnf, k, cutOff, g, noiseMethod);
   [M m or ft pc EO T]  = CONGRUENCYEDGE_BASE(I, nscale, norient, ...
              minWaveLength, mult, sigmaOnf, k, cutOff, g, noiseMethod);

Acknowledgement

This is just a wrapper to P.Kovesi's edge/corner detectors based on phase congruency. See the webpage: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/index.html In particular, it enables to deal with multispectral images.

See also

Ressembles: CONGRUENCYEDGE, EDGECORNER_BASE, CANNYEDGE_BASE, ROTHWELLEDGE_BASE, COMPASSEDGE_BASE, ANISOEDGE_BASE, ELDERZUCKEREDGE_BASE, KOETHEDGE_BASE, SDGDEDGE_BASE, PETROUEDGE_BASE. Requires: PHASECONG3.

Function implementation

function [M, varargout]  = ...
    congruencyedge_base(I, nscale, norient, minWaveLength, ...
    mult, sigmaOnf, k, cutOff, g, noiseMethod)

dealing with multispectral images

C = size(I,3);

if C>1
    M = zeros(size(I));
    if nargout>=2,
        varargout{1} = zeros(size(I)); % m
        if nargout>=3,
            varargout{2} = zeros(size(I)); % or
            if nargout>=4,
                varargout{3} = zeros(size(I)); % ft
                if nargout>=5,
                    varargout{4} = cell(C,1); % pc
                    if nargout>=6,
                        varargout{5} = cell(C,1); % EO
                        if nargout==7,
                            varargout{6} = zeros(size(I)); % T
                        end
                    end
                end
            end
        end
    end
    for c=1:C
        [M(:,:,c) m or ft pc EO, T]  = ...
            congruencyedge_base(I(:,:,c), nscale, norient, minWaveLength, ...
            mult, sigmaOnf, k, cutOff, g, noiseMethod);
        if nargout>=2,
            varargout{1}(:,:,c) = m;
            if nargout>=3,
                varargout{2}(:,:,c) = or;
                if nargout>=4,
                    varargout{3}(:,:,c) = ft;
                    if nargout>=5,
                        varargout{4}{c} = pc;
                        if nargout>=6,
                            varargout{5}{c} = EO;
                            if nargout==7,
                                varargout{6}(:,:,c) = T;
                            end
                        end
                    end
                end
            end
        end
    end
    return
end

main calculation: call to PHASECONG3

[M m or ft pc EO, T] = phasecong3(I, nscale, norient, minWaveLength, ...
    mult, sigmaOnf, k, cutOff, g, noiseMethod);

if nargout>=2,
    varargout{1} = m;
    if nargout>=3,
        varargout{2} = or;
        if nargout>=4,
            varargout{3} = ft;
            if nargout>=5,
                varargout{4} = pc;
                if nargout>=6,
                    varargout{5} = EO;
                    if nargout==7,
                        varargout{6} = T;
                    end
                end
            end
        end
    end
end
end % end of congruencyedge_base