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

📄 qlsuperimage.m

📁 用matlab实现图像融合
💻 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 + -