📄 qlsuperimage.m
字号:
function superima = QLsuperimage(C, S, iscale)%------------------------------------------------------------------------------% Creates an image that goes with a multiresolutiondecomposition that has been% made in the way of LISQ. The superimage, that is an image that comprises% all levels, is constructed as a rectangular gridfunction.%% C is a one-dimensional array that contains the coefficients of the% Quincunx Lifting Scheme (LISQ) decompositions.% S is the bookkeeping vector% iscale optional inputparameter% 1 show superimage as is (default)% 2 show superimage after removal of outliers% 3 show superimage after enhancement of contrast using% histogram equalisation (if available)%% Design and implementation by:% Dr. Paul M. de Zeeuw <Paul.de.Zeeuw@cwi.nl> http://homepages.cwi.nl/~pauldz/% Last Revision: November 24, 2003.% Copyright 2003 Stichting CWI, Amsterdam%------------------------------------------------------------------------------ if nargin == 3 iopt = iscale; elseif nargin == 2 iopt = 1; else error(' QLsuperimage - number of arguments should be either 2 or 3 '); end% [nS, mS] = size(S); if mS ~= 6 error(' QLsuperimage - unexpected dimensions of bookkeeping vector '); endlevels = S(nS,1);if mod(levels, 2) == 1 error(' QLsuperimage - only an even number of levels is accepted ');elseif levels < 1 superima = [];else%% Firstly, we determine the dimensions of the superimage to be and create the% necessary space (see LISQ/storeR.m and LISQ/QLiftRec2Nevill.m)% [Detail10, Detail01] = retrieveQ1001(1, 'd', C, S); sizeR = size(Detail10) + size(Detail01); n = sizeR(1); m = sizeR(2); nH = round((n+m+1.999)/2)+round((m+0.999)/2); nm = round((n+m+1.999)/2)+1; nV = 1; levels = S(nS,1); for k = 1:2:levels nV = nV + nm; nm = round((nm+0.999)/2); end Approx = retrieveR(levels, 'a', C, S); [nl, ml] = size(Approx); nV = nV + nl; superima = ones(nV, nH);%% Secondly, we fill the superimage with all subsequent detail coefficients % Put the details at the rotated quincunx grid (level 1) background=max(max(max(Detail10)), max(max(Detail01))); RotaDet=rota1001fill(Detail10, Detail01, background); clear Detail10 Detail01;%-----intermezzo---begin-- hgram=ones(1,64); hgram(64)=round(31.5*(n/m+m/n))+1;% hgram is a histogram that is desired to be matched by the image after% its values have been transformed by histeq, see the documentation of% histeq() in the Matlab Image Processing Toolbox.% Due to the rotation of the quincunx grid to make it visible, there% is a substantial area for padding with one colour (white or nearly% white). Here follows an overview of the quantities of pixels involved% at the rotated quincunx grid (asymptotically):% Let n and m be the dimensions of the original image.%% 2% ( n + m )% Grand total: -------% 4%% n m% Used pixels: ---% 2%% 2 2% n + m% Pixels for padding: --------% 4%% 2 2% n m n + m n m% Used:padding = --- : ------- = 63 : 31.5*( - + - )% 2 4 m n%%-----intermezzo---end---- [nl, ml] = size(RotaDet); OrigV=1; OrigH=1; superima(OrigV:(OrigV+nl-1), OrigH:(OrigH+ml-1)) = imequi(RotaDet,iopt,hgram); Detail11 = retrieveR(2, 'd', C, S); OrigV=1; OrigH=ml+1; [nr, mr] = size(Detail11); superima(OrigV:(OrigV+nr-1), OrigH:(OrigH+mr-1)) = imequi(Detail11,iopt);% Now the other levels, if any OrigV=OrigV+nl; OrigH=1; for k = 3:2:levels% Put the details at the rotated quincunx grid [Detail10, Detail01] = retrieveQ1001(k, 'd', C, S); background=max([max(max(Detail10)) max(max(Detail01))]); RotaDet = rota1001fill(Detail10, Detail01, background); clear Detail10 Detail01; [nl, ml] = size(RotaDet); superima(OrigV:(OrigV+nl-1), OrigH:(OrigH+ml-1)) = imequi(RotaDet,iopt,hgram); Detail11 = retrieveR(k+1, 'd', C, S); OrigH=ml+1; [nr, mr] = size(Detail11); superima(OrigV:(OrigV+nr-1), OrigH:(OrigH+mr-1)) = imequi(Detail11,iopt); clear Detail11; OrigV=OrigV+nl; OrigH=1; end% Thirdly, we fill the superimage with approximation coefficients. [nl, ml] = size(Approx); superima(OrigV:(OrigV+nl-1), OrigH:(OrigH+ml-1)) = imequi(Approx,iopt);end%------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -