annotate DL/RLS-DLA/private/genPDF.m @ 60:ad36f80e2ccf

(none)
author idamnjanovic
date Tue, 15 Mar 2011 12:20:59 +0000
parents
children
rev   line source
idamnjanovic@60 1 function [pdf,val] = genPDF(imSize,p,pctg,distType,radius,disp)
idamnjanovic@60 2
idamnjanovic@60 3 %[pdf,val] = genPDF(imSize,p,pctg [,distType,radius,disp])
idamnjanovic@60 4 %
idamnjanovic@60 5 % generates a pdf for a 1d or 2d random sampling pattern
idamnjanovic@60 6 % with polynomial variable density sampling
idamnjanovic@60 7 %
idamnjanovic@60 8 % Input:
idamnjanovic@60 9 % imSize - size of matrix or vector
idamnjanovic@60 10 % p - power of polynomial
idamnjanovic@60 11 % pctg - partial sampling factor e.g. 0.5 for half
idamnjanovic@60 12 % distType - 1 or 2 for L1 or L2 distance measure
idamnjanovic@60 13 % radius - radius of fully sampled center
idamnjanovic@60 14 % disp - display output
idamnjanovic@60 15 %
idamnjanovic@60 16 % Output:
idamnjanovic@60 17 % pdf - the pdf
idamnjanovic@60 18 % val - min sampling density
idamnjanovic@60 19 %
idamnjanovic@60 20 %
idamnjanovic@60 21 % Example:
idamnjanovic@60 22 % [pdf,val] = genPDF([128,128],2,0.5,2,0,1);
idamnjanovic@60 23 %
idamnjanovic@60 24 % (c) Michael Lustig 2007
idamnjanovic@60 25
idamnjanovic@60 26 % This file is used with the kind permission of Michael Lustig
idamnjanovic@60 27 % (mlustig@stanford.edu), and originally appeared in the
idamnjanovic@60 28 % SparseMRI toolbox, http://www.stanford.edu/~mlustig/ .
idamnjanovic@60 29 %
idamnjanovic@60 30 % $Id: genPDF.m 1040 2008-06-26 20:29:02Z ewout78 $
idamnjanovic@60 31
idamnjanovic@60 32
idamnjanovic@60 33 if nargin < 4
idamnjanovic@60 34 distType = 2;
idamnjanovic@60 35 end
idamnjanovic@60 36
idamnjanovic@60 37 if nargin < 5
idamnjanovic@60 38 radius = 0;
idamnjanovic@60 39 end
idamnjanovic@60 40
idamnjanovic@60 41 if nargin < 6
idamnjanovic@60 42 disp = 0;
idamnjanovic@60 43 end
idamnjanovic@60 44
idamnjanovic@60 45
idamnjanovic@60 46 minval=0;
idamnjanovic@60 47 maxval=1;
idamnjanovic@60 48 val = 0.5;
idamnjanovic@60 49
idamnjanovic@60 50 if length(imSize)==1
idamnjanovic@60 51 imSize = [imSize,1];
idamnjanovic@60 52 end
idamnjanovic@60 53
idamnjanovic@60 54 sx = imSize(1);
idamnjanovic@60 55 sy = imSize(2);
idamnjanovic@60 56 PCTG = floor(pctg*sx*sy);
idamnjanovic@60 57
idamnjanovic@60 58
idamnjanovic@60 59 if sum(imSize==1)==0 % 2D
idamnjanovic@60 60 [x,y] = meshgrid(linspace(-1,1,sy),linspace(-1,1,sx));
idamnjanovic@60 61 switch distType
idamnjanovic@60 62 case 1
idamnjanovic@60 63 r = max(abs(x),abs(y));
idamnjanovic@60 64 otherwise
idamnjanovic@60 65 r = sqrt(x.^2+y.^2);
idamnjanovic@60 66 r = r/max(abs(r(:)));
idamnjanovic@60 67 end
idamnjanovic@60 68
idamnjanovic@60 69 else %1d
idamnjanovic@60 70 r = abs(linspace(-1,1,max(sx,sy)));
idamnjanovic@60 71 end
idamnjanovic@60 72
idamnjanovic@60 73
idamnjanovic@60 74
idamnjanovic@60 75
idamnjanovic@60 76 idx = find(r<radius);
idamnjanovic@60 77
idamnjanovic@60 78 pdf = (1-r).^p; pdf(idx) = 1;
idamnjanovic@60 79 if floor(sum(pdf(:))) > PCTG
idamnjanovic@60 80 error('infeasible without undersampling dc, increase p');
idamnjanovic@60 81 end
idamnjanovic@60 82
idamnjanovic@60 83 % begin bisection
idamnjanovic@60 84 while(1)
idamnjanovic@60 85 val = minval/2 + maxval/2;
idamnjanovic@60 86 pdf = (1-r).^p + val; pdf(find(pdf>1)) = 1; pdf(idx)=1;
idamnjanovic@60 87 N = floor(sum(pdf(:)));
idamnjanovic@60 88 if N > PCTG % infeasible
idamnjanovic@60 89 maxval=val;
idamnjanovic@60 90 end
idamnjanovic@60 91 if N < PCTG % feasible, but not optimal
idamnjanovic@60 92 minval=val;
idamnjanovic@60 93 end
idamnjanovic@60 94 if N==PCTG % optimal
idamnjanovic@60 95 break;
idamnjanovic@60 96 end
idamnjanovic@60 97 end
idamnjanovic@60 98
idamnjanovic@60 99 if disp
idamnjanovic@60 100 figure,
idamnjanovic@60 101 subplot(211), imshow(pdf)
idamnjanovic@60 102 if sum(imSize==1)==0
idamnjanovic@60 103 subplot(212), plot(pdf(end/2+1,:));
idamnjanovic@60 104 else
idamnjanovic@60 105 subplot(212), plot(pdf);
idamnjanovic@60 106 end
idamnjanovic@60 107 end
idamnjanovic@60 108
idamnjanovic@60 109
idamnjanovic@60 110
idamnjanovic@60 111
idamnjanovic@60 112
idamnjanovic@60 113