?? plotft.m
字號(hào):
function varargout=PlotFt(F,BlkSize,BlkDist,FontSize)% PlotFt Plot the image blocks in frame F, F is size NxK
% and N is prod(BlkSize)
%
% PlotFt(F,BlkSize,BlkDist,FontSize);
% Ir=PlotFt(F,BlkSize,BlkDist,FontSize);
%----------------------------------------------------------------------
% arguments:
% F The representation vectors or dictionary, size NxK.
% BlkSize The block size to use, BlockSize=[7,7]; for a 7x7 block
% BlkDist Distance between each block (in pixels)
% FontSize >0 : Display numbers below each block using FontSize
% Ir The image that is plotted, (no distance between blocks)
%----------------------------------------------------------------------
%----------------------------------------------------------------------
% Copyright (c) 2002. Karl Skretting. All rights reserved.
% Hogskolen in Stavanger (Stavanger University), Signal Processing Group
% Mail: karl.skretting@tn.his.no Homepage: http://www.ux.his.no/~karlsk/
%
% HISTORY:
% Ver. 1.0 17.01.2002 KS: made function, based on PlotF2D
% Ver. 1.1 27.11.2002 KS: moved from ..\Textures to ..\FrameTools%----------------------------------------------------------------------
Mfile='PlotFt';
% check input arguments, and assign values to arguments
if (nargin < 2);
error([Mfile,': function must have 2 input arguments, see help.']);
end
if (nargin < 3); BlkDist=0; end;
if (nargin < 4); FontSize=0; end;
[N,K]=size(F);
if N~=prod(BlkSize)
error([Mfile,': N~=prod(BlkSize).']);
end
Mb=BlkSize(1);
Nb=BlkSize(2);
y=ceil(sqrt(K));
x=ceil(K/y);
if (x*y)>K; F=[F,ones(N,x*y-K)]; end; % add some empty blocks
[N,K]=size(F); % now K is a square number
Mi=Mb*x;
Ni=Nb*y;
Ir=Reorder(F,[Mi,Ni],BlkSize,-1);
% put in distance to get the expanded image (includes space between blocks)
IrMax=max(Ir(:));
IrMin=min(Ir(:));
Ie=IrMax*ones([Mi+BlkDist*(x+1),Ni+BlkDist*(y+1)]);
for i=0:(x-1)
for j=0:(y-1)
k=i*y+j+1;
if k<=K
Ie(BlkDist+i*(Mb+BlkDist)+(1:Mb),BlkDist+j*(Nb+BlkDist)+(1:Nb))=Ir(i*Mb+(1:Mb),j*Nb+(1:Nb));
end
end
end
%
clf
IrMax=max(abs([IrMax,IrMin]));
IrMax=0.3;
imagesc(Ie,[-IrMax,IrMax]);
colormap(gray(256));
Efactor=1;
% colorbar;
axis off;
axis equal;
hold on;
if FontSize
for i=0:(x-1)
for j=0:(y-1)
k=i*y+j+1;
if k<=K
H=text(j*(Nb+BlkDist)+BlkDist+1,(i+1)*(Mb+BlkDist)+0.5,int2str(k));
set(H,'FontSize',FontSize);
set(H,'VerticalAlignment','top');
set(H,'HorizontalAlignment','left');
if Efactor > 1
% now plot boxes to indicate how blocks overlap
i1=i*(Mb+BlkDist)+BlkDist+0.5+Mb*(Efactor-1)/(2*Efactor);
i2=i*(Mb+BlkDist)+BlkDist+0.5+Mb*(Efactor+1)/(2*Efactor);
j1=j*(Mb+BlkDist)+BlkDist+0.5+Mb*(Efactor-1)/(2*Efactor);
j2=j*(Mb+BlkDist)+BlkDist+0.5+Mb*(Efactor+1)/(2*Efactor);
plot([j1,j1,j2,j2,j1],[i1,i2,i2,i1,i1],'-k');
end
end
end
end
H=text(size(Ie,2)-BlkDist,size(Ie,1)+BlkDist,[Mfile,': plot made ',datestr(now,0)]);
set(H,'FontSize',FontSize);
set(H,'VerticalAlignment','top');
set(H,'HorizontalAlignment','right');
end
hold off;
if (nargout>=1); varargout(1)={Ir}; end;
return
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -