⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedesc_getpca.m

📁 cuboid democuboid democuboid democuboid demo
💻 M
字号:
% Runs descriptor on a subset of cuboids or images to get PCA coefficients.%% INPUTS%   I               - 3D array of images or 4D array of cuboids%   imdesc          - descriptor to apply to each image or cuboid%   k               - number of PCA coefficients to use [note: k can be later reduced]% % OUTPUTS%   imdesc          - new imdesc with PCA informationfunction imdesc = imagedesc_getpca( I, imdesc, k, show )    if( nargin<4 || isempty(show))  show=[]; end;    nd=ndims(I);  inds={':'};  inds=inds(:,ones(1,nd-1));       iscuboid = imdesc.iscuboid;    if( (iscuboid && nd~=4) || (~iscuboid && nd~=3) )        error('Unsupported dimension for I'); end;    if(isfield(imdesc,'par_pca')) imdesc.par_pca=[];        warning('Removing old PCA info'); end;        % get number of bytes per descriptor / I, sample I in proportion    desc = imagedesc( I(inds{:},1), imdesc );    s1=whos('desc'); I1=I(inds{:},1); s2=whos('I1');    ratio = s1.bytes / s2.bytes;  oldn = size(I,nd);       I = randomsample( I, 80/ratio );  n=size(I,nd); %val here should reflect val in pca    if(n>k*30) rperm=randperm(n); I=I(inds{:},rperm(1:(k*30))); end; n=size(I,nd);    if( n~=oldn )         disp( ['Sampled I from ' int2str(oldn) ' to ' int2str(n) ' elements.']); end;    % get descriptors    desc = imagedesc( I, imdesc );        % ignore jitter if there is jitter.    if( size(desc,3)>1 )         desc = reshape( permute( desc, [1 3 2] ), [], size(desc,2) ); end;    % run pca	[ par_pca{1}, par_pca{2}, par_pca{3} ] = pca( desc' );         % optionally show    if( show ) figure(show); show=show+1; plot( par_pca{3} ); end;        % set k    k = min( k, size(par_pca{1},2) );     par_pca{1} = par_pca{1}(:,1:k); %save on memory	par_pca{4} = k;    imdesc.par_pca = par_pca;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -