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

📄 buildscfpyrlevs.m

📁 纹理合成matlab源代码,非常好
💻 M
字号:
% [PYR, INDICES] = buildSCFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS)%% Recursive function for constructing levels of a steerable pyramid.  This% is called by buildSCFpyr, and is not usually called directly.% Eero Simoncelli, 5/97.% Modified by Javier Portilla in 9/97.function [pyr,pind] = buildSCFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands);if (ht <= 0)  lo0 = ifft2(ifftshift(lodft));  pyr = real(lo0(:));  pind = size(lo0);else  bands = zeros(prod(size(lodft)), nbands);  bind = zeros(nbands,2);  log_rad = log_rad + 1;  lutsize = 1024;  Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize;  % [-2*pi:pi]  order = nbands-1;  %% divide by sqrt(sum_(n=0)^(N-1)  cos(pi*n/N)^(2(N-1)) )  %% Thanks to Patrick Teo for writing this out :)  const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order));%%  Ycosn = sqrt(const) * (cos(Xcosn)).^order;%  % analityc version: only take one lobe  alfa=	mod(pi+Xcosn,2*pi)-pi;  Ycosn = 2*sqrt(const) * (cos(Xcosn).^order) .* (abs(alfa)<pi/2);  himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0);  for b = 1:nbands    anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1));    banddft = ((-i)^(nbands-1)) .* lodft .* anglemask .* himask;    band = ifft2(ifftshift(banddft));%    bands(:,b) = real(band(:));    % analytic version: full complex value    bands(:,b)=band(:);    bind(b,:)  = size(band);  end  dims = size(lodft);  ctr = ceil((dims+0.5)/2);  lodims = ceil((dims-0.5)/2);  loctr = ceil((lodims+0.5)/2);  lostart = ctr-loctr+1;  loend = lostart+lodims-1;  log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2));  angle = angle(lostart(1):loend(1),lostart(2):loend(2));  lodft = lodft(lostart(1):loend(1),lostart(2):loend(2));  YIrcos = abs(sqrt(1.0 - Yrcos.^2));  lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0);  lodft = lomask .* lodft;  [npyr,nind] = buildSCFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands);  pyr = [bands(:); npyr];  pind = [bind; nind];end

⌨️ 快捷键说明

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