0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 function pyrs = makeFeaturePyramids(img,featureType,salParams,varargin)
0027
0028
0029 colorTypes = {'Color','Hue','Skin'};
0030 if (ismember(featureType,colorTypes) && img.dims == 2)
0031
0032 fprintf(['Feature ''' featureType ''' requires a color image!\n' ...
0033 'Use a color image or remove this feature from the\n' ...
0034 'saliency parameters!\n']);
0035 error('Could not process image.');
0036 end
0037
0038 switch featureType
0039
0040 case {'Intensity','Intensities'}
0041 pyrs = makeIntensityPyramid(img,salParams.pyramidType);
0042
0043 case 'Color'
0044 pyrs(1) = makeRedGreenPyramid(img,salParams.pyramidType);
0045 pyrs(2) = makeBlueYellowPyramid(img,salParams.pyramidType);
0046
0047 case {'Orientation','Orientations'}
0048
0049 intPyr = [];
0050 if (~isempty(varargin))
0051 if (strcmp('Intensity',varargin{1}.label))
0052 intPyr = varargin{1};
0053 end
0054 end
0055 if (isempty(intPyr))
0056 intPyr = makeIntensityPyramid(img,salParams.pyramidType);
0057 end
0058
0059 if isfield(salParams,'oriComputeMode')
0060 switch salParams.oriComputeMode
0061 case 'efficient'
0062 oriLevels = salParams.levelParams.minLevel:...
0063 salParams.levelParams.maxLevel + salParams.levelParams.maxDelta;
0064 case 'full'
0065 oriLevels = 1:length(intPyr.levels);
0066 otherwise
0067 error(['Unknown oriComputeMode: ' salParams.oriComputeMode]);
0068 end
0069 else
0070 oriLevels = 1:length(intPyr.levels);
0071 end
0072
0073 for ori = 1:length(salParams.oriAngles)
0074 pyrs(ori) = makeOrientationPyramid(intPyr,...
0075 salParams.gaborParams,salParams.oriAngles(ori),oriLevels);
0076 end
0077
0078 case 'Hue'
0079
0080 if (isempty(varargin))
0081 error('varargin{1} must contain hueParams for Hue Channel');
0082 end
0083
0084 if (length(varargin >= 2))
0085 pyrs = makeHuePyramid(img,salParams.pyramidType,varargin{1},varargin{2});
0086 else
0087 pyrs = makeHuePyramid(img,salParams.pyramidType,varargin{1});
0088 end
0089
0090 case 'Skin'
0091 pyrs = makeHuePyramid(img,salParams.pyramidType,skinHueParams,'Skin');
0092
0093 case 'TopDown'
0094 if isempty(varargin)
0095 error('varargin{1} must contain a vector of TopDown maps');
0096 end
0097
0098 pyrs = varargin{1};
0099
0100 otherwise
0101 error(['Unknown feature: ' featureType]);
0102 end