diff options
Diffstat (limited to 'SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m')
-rwxr-xr-x | SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m new file mode 100755 index 0000000..4c00077 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m | |||
@@ -0,0 +1,37 @@ | |||
1 | % [PYR, INDICES] = buildSpyrLevs(LOIM, HEIGHT, LOFILT, BFILTS, EDGES) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSpyr, and is not usually called directly. | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function [pyr,pind] = buildSpyrLevs(lo0,ht,lofilt,bfilts,edges); | ||
9 | |||
10 | if (ht <= 0) | ||
11 | |||
12 | pyr = lo0(:); | ||
13 | pind = size(lo0); | ||
14 | |||
15 | else | ||
16 | |||
17 | % Assume square filters: | ||
18 | bfiltsz = round(sqrt(size(bfilts,1))); | ||
19 | |||
20 | bands = zeros(prod(size(lo0)),size(bfilts,2)); | ||
21 | bind = zeros(size(bfilts,2),2); | ||
22 | |||
23 | for b = 1:size(bfilts,2) | ||
24 | filt = reshape(bfilts(:,b),bfiltsz,bfiltsz); | ||
25 | band = corrDn(lo0, filt, edges); | ||
26 | bands(:,b) = band(:); | ||
27 | bind(b,:) = size(band); | ||
28 | end | ||
29 | |||
30 | lo = corrDn(lo0, lofilt, edges, [2 2], [1 1]); | ||
31 | |||
32 | [npyr,nind] = buildSpyrLevs(lo, ht-1, lofilt, bfilts, edges); | ||
33 | |||
34 | pyr = [bands(:); npyr]; | ||
35 | pind = [bind; nind]; | ||
36 | |||
37 | end | ||