0001
0002
0003
0004 EllipseGaborScale = 4;
0005 load ../template_params nGaborOri nGaborScale GaborSymbol
0006 templateName = ['../result/learnedEllipsoidTemplate' num2str(EllipseGaborScale-1)];
0007 load(templateName);
0008 height = sizex; width = sizey;
0009
0010
0011 count = 0;
0012 for templateScaleInd = -2:1
0013 for rotation = 0:2:(nGaborOri-1)
0014 for rowScale = 2.^[0, 1/4]
0015 for colScale = 2.^[1/4, 0]
0016 count = count + 1;
0017 templateTransform{count} = [templateScaleInd rowScale colScale rotation];
0018 end
0019 end
0020 end
0021 end
0022 nTransformedTemplates = count;
0023
0024
0025 TransformedTemplate = cell(nTransformedTemplates,1);
0026 tmpTT = cell(nTransformedTemplates,1);
0027 maxSquareSize = 0;
0028 for iT = 1:nTransformedTemplates
0029 templateScaleInd = templateTransform{iT}(1);
0030 rowScale = templateTransform{iT}(2);
0031 colScale = templateTransform{iT}(3);
0032 rotation = templateTransform{iT}(4);
0033 tmpSelectedRow = zeros(numElement,1,'single');
0034 tmpSelectedCol = zeros(numElement,1,'single');
0035 tmpSelectedOri = zeros(numElement,1,'single');
0036 tmpSelectedScale = zeros(numElement,1,'single');
0037 for iF = 1:numElement
0038 inRow = selectedx(iF);
0039 inCol = selectedy(iF);
0040 inO = selectedOrient(iF);
0041 inS = EllipseGaborScale;
0042 [tmpSelectedRow(iF), tmpSelectedCol(iF), tmpSelectedOri(iF) tmpSelectedScale(iF)] = ...
0043 templateAffineTransform(templateScaleInd,rowScale,colScale,rotation,...
0044 inRow,inCol,inO,inS,nGaborOri);
0045 end
0046 TransformedTemplate{iT}.selectedRow = tmpSelectedRow;
0047 TransformedTemplate{iT}.selectedCol = tmpSelectedCol;
0048 TransformedTemplate{iT}.selectedOri = tmpSelectedOri;
0049 TransformedTemplate{iT}.selectedScale = tmpSelectedScale;
0050 TransformedTemplate{iT}.selectedLambda = selectedlambda;
0051 newSelectedLogZ = zeros(1,numElement);
0052 TransformedTemplate{iT}.selectedLogZ = selectedLogZ;
0053 TransformedTemplate{iT}.subsampleM1 = subsampleM1;
0054 TransformedTemplate{iT}.sym = displayTemplate( ...
0055 tmpSelectedRow,tmpSelectedCol,tmpSelectedOri, tmpSelectedScale, ones(numElement,1),...
0056 GaborSymbol,nGaborOri,subsampleM1);
0057 if size(TransformedTemplate{iT}.sym,1) > maxSquareSize
0058 maxSquareSize = size(TransformedTemplate{iT}.sym,1);
0059 end
0060 end
0061
0062
0063 for iT = 1:nTransformedTemplates
0064
0065 tmpTT{iT} = zeros(maxSquareSize,maxSquareSize);
0066 squareSize = size(TransformedTemplate{iT}.sym,1);
0067 margin = floor((maxSquareSize - squareSize)/2);
0068 tmpTT{iT}(margin+(1:squareSize),margin+(1:squareSize)) = -single(TransformedTemplate{iT}.sym);
0069 end
0070
0071 im = displayImages(tmpTT,4*2,50,50);
0072 imwrite(im,'../result/transformedTemplates.png');
0073
0074
0075
0076 load ../template_params CorrGabor
0077 subsampleS2 = 5; inhibitionThresS2 = 0;
0078 save ../result/transformedEllipsoids.mat subsampleS2 inhibitionThresS2 TransformedTemplate EllipseGaborScale subsampleM1
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139