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

📄 qliftrec2nevill.m

📁 用matlab实现图像融合
💻 M
字号:
function X = QLiftRec2Nevill(C, S, filtername)%-----------------------------------------------------------------------------% QLiftRec2Nevill% Multilevel 2-D reconstruction by inverting the lifting scheme and using % quincunx grids%% Calls for: NevilleR2Q, stencilR2Q, stencilCrop, stencilxgridfRVC,%            retrieveQ1001, retrieveR,%            getcolor01, getcolor10, getcolor00, getcolor11,%            putcolor01, putcolor10, putcolor00, putcolor11.        % See also: QLiftDec2 %% Design and implementation by:% Dr. Paul M. de Zeeuw <Paul.de.Zeeuw@cwi.nl>  http://homepages.cwi.nl/~pauldz/% Last Revision: May 16, 2002.% Copyright 1999-2002 Stichting CWI, Amsterdam%-----------------------------------------------------------------------------% Note: argument list of this function might be extended with an argument that%       points to another level than 1, nargin could be checked for this.%Firstly, check input data%if isempty(C)  error(' QLiftRec2Nevill - empty decomposition ');else  if isempty(S)    error(' QLiftRec2Nevill - empty bookkeeping ');  endend%switch lower(filtername) case 'neville2'  [Pa, centerPa] = NevilleR2Q(2); case 'neville4'  [Pa, centerPa] = NevilleR2Q(4); case 'neville6'  [Pa, centerPa] = NevilleR2Q(6); case 'neville8'  [Pa, centerPa] = NevilleR2Q(8); otherwise     error([' QLiftRec2Nevill - unknown filter ' filtername]);end%[nS, mS] = size(S);if mS ~= 6  error(' QLiftRec2Nevill - books do not fit ');endN = S(nS,1); if mod(N, 2) == 1  error(' QLiftRec2Nevill - only an even number of levels is accepted ');end  if N < 2    disp([' QLiftRec2Nevill - WARNING too few levels present ' ...          '-> empty reconstruction ']);    X = [];            end%%Secondly, some initializing (see also QLiftDec2)%Ua = 0.5 * Pa; centerUa = centerPa;%[Pb, centerPb] = stencilR2Q(Pa, centerPa);[Pb, centerPb] = stencilCrop(Pb, centerPb);Ub = 0.5 * Pb; centerUb = centerPb;%%Thirdly, start reconstruction%for lev=N:-2:1%%  The Inverse Scheme proceeds from rectangular grid to quincunx grid.   if lev >= N     APPROX00 = retrieveR(lev, 'a', C, S);     % "even slots"   end   DETAIL11 = retrieveR(lev, 'd', C, S);       % "odd slots"%%  Stage: undo update   sizeQ = size(APPROX00) + size(DETAIL11);   Q0011A00 = APPROX00 - ...      getcolor00(stencilxgridfRVC(putcolor11(DETAIL11, sizeQ), Ub, centerUb));   clear APPROX00;      %%  Stage: undo predict   RectApprox = putcolor00(Q0011A00, sizeQ);   Q0011A11 = DETAIL11 + getcolor11(stencilxgridfRVC(RectApprox, Pb, centerPb));   clear DETAIL11; %     %  Merge%  The union Q0011 of Q0011A00 & Q0011A11 now contains the approximation on %  the next scale (with index lev-1).%%  The Inverse Scheme proceeds from quincunx grid to rectangular grid.%%  The "even slots" are in the colours 00 and 11,%  the "odd slots"  are in the colours 10 and 01.%%  Stage: undo update   [DETAIL10, DETAIL01] = retrieveQ1001(lev-1, 'd', C, S);   sizeR = size(DETAIL10) + size(DETAIL01);   RectDetail = putcolor10(DETAIL10, sizeR) + putcolor01(DETAIL01, sizeR);   UaD = stencilxgridfRVC(RectDetail, Ua, centerUa);%  Note: the operations count is twice as much as it could be.      clear RectDetail;      Q0011A00 = Q0011A00 - getcolor00(UaD);   Q0011A11 = Q0011A11 - getcolor11(UaD);   clear UaD;%%  Stage: undo predict   RectApprox = putcolor00(Q0011A00, sizeR) + putcolor11(Q0011A11, sizeR);   PaQR = stencilxgridfRVC(RectApprox, Pa, centerPa);%  Note: the operations count is twice as much as it could be.      clear RectApprox;     Q1001A10 = DETAIL10 + getcolor10(PaQR);   Q1001A01 = DETAIL01 + getcolor01(PaQR);   clear DETAIL10 DETAIL01 PaQR;%%  Merge   APPROX00 = putcolor00(Q0011A00, sizeR) + putcolor11(Q0011A11, sizeR) + ...              putcolor10(Q1001A10, sizeR) + putcolor01(Q1001A01, sizeR);%  APPROX00 is used in the next iteration of the "for"-loop!   clear Q0011A00 Q0011A11 Q1001A10 Q1001A01;%   %  Warning: not yet verified whether sizeQ and sizeR will be consistent for all%           possible griddimensions of original image. %   if (lev-1) == 1     X = APPROX00; clear APPROX00;   endend%-----------------------------------------------------------------------------

⌨️ 快捷键说明

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