No BSD License  

Highlights from
BOW

image thumbnail
from BOW by Vassili Pastushenko
Color/intensity contrast colormap.

MAP=bow(varargin)
function MAP=bow(varargin)
%Three  colormaps.
%
%Call:
%  MAP=bow
%  MAP=bow(N)
%  MAP=bow(mode)
%  MAP=bow(mode,N)
%  MAP=bow(N,mode)

%Input:
%       N = defines colormap length ML:
%       default N:  ML =  64
%       N=1:        ML = 127
%       N=2:        ML = 253  
%       
%       mode: type of colormap, default mode = 'bow' 
%       mode='edf' - edf colormap, EDF.M is a subfunction
%       mode = 'afm' (subfunction) close to that used 
%       by Molecular Imaging for AFM
%       bow('afm',N) has linear intensity of red, therefore conveniently
%       scales numerical data for color to value transformation. 
%       Other afm-intensities are also monotonical and defined analytically. 
%Output:
%       MAP = colormap 
% DEMO
%   shim(peaks(200));
%   colormap bow;colorbar,shg
%   colormap bow(1,'edf');colorbar,shg
%   colormap bow('afm');colorbar,shg
%   
%Vassili Pastushenko	Sep. 2004 - Mar 2006
%==============================
ARGS=varargin;
LARG=length(ARGS);
if LARG>2
    o_o
    error('too many inputs')
end

switch LARG
    case 0
        mode='bow';
    case 1
        if ischar(ARGS{1})
            mode=ARGS{1};
             else
            MUL=ARGS{1}; 
            mode='bow';
        end
    case 2
        if ischar(ARGS{1})
        mode=ARGS{1};
        MUL=ARGS{2};
        else
        mode=ARGS{2};
        MUL=ARGS{1};
        end
end

if ~ischar(mode)||length(mode)~=3
    o_o
    error('''edf'' or ''afm'' versions available')
end

if strcmp(mode,'afm')
    MAP=afm;
end
if strcmp(mode,'edf')
    MAP=edf;
end

if strcmp(mode,'bow')
  MAP=[
            0            0            0
      0.42105            0      0.15789
      0.63158            0      0.36842
      0.84211            0      0.63158
            1            0            1
      0.78947            0      0.89474
      0.63158            0      0.84211
      0.42105            0          0.8
      0.15789            0         0.87
            0            0            1
            0      0.31579      0.94737
            0      0.47368            1
            0      0.63158            1
            0      0.78947            1
            0            1            1
            0            1      0.84211
            0      0.94737      0.68421
            0      0.84211      0.52632
            0      0.78947      0.31579
            0         0.87      0.10526
            0            1            0
          0.4         0.97            0
      0.52632            1            0
      0.73684            1            0
            1            1            0
            1      0.86957            0
            1      0.69565            0
      0.95652      0.52174            0
      0.91304      0.34783            0
      0.91304      0.17391            0
            1            0            0
            1      0.36842      0.31579
            1      0.52632      0.47368
            1      0.68421      0.63158
            1      0.84211      0.78947
            1            1            1
        ];
t=31:36;
AD=interp1(t,MAP(t,:),[32.5 34.5 36]);
MAP=[MAP([1,3:31],:);AD];
MAP=doub(MAP);
RED=MAP(14:20,:);
t=(0:6)/6;
IN=interp1(t,RED,(0:5)/5);
MAP=[MAP(1:13,:);IN;MAP(21:end,:)];
MAP(14:17,:)=[.3 0 .83; .2 0  .875;0.1 0.1 .935;0 0.2 1];

end


if exist('MUL')
    MUL=round(abs(MUL));
    if ~any(MUL==(1:2))
        return
    else
    for i=1:MUL
        MAP=doub(MAP);
    end
    end
end

    
    
function  MAP=edf(MUL)
%  edf-based  COLORMAP 
%Call:
%       MAP=edf  (64 colors)
%       MAP =edf(anything): MAP=parfil(MAP), 127 colors 
%Input:
%       MUL: (default 0) defines number of colors(i.e. size(MAP,1)):
%       MULK=0:  64
%       MUL=1:  127
%       MUL=2:  253
%Output:
%		MAP = colormap
%	Vassili Pastushenko	 2005
%==============================
NAR=nargin;
if NAR
    if ~isscalar(MUL)
        o_o
        error('Enter 1 or 2 in edf()')
    end
       MUL=round(abs(MUL));
       if ~any(MUL==0:2)
           o_o
        error('Enter 1 or 2 in edf()')
       end
else
    MUL=0;
end
up=inline('(1:x)/(x+1)');
xw=(1:18);
lin=up(9);
%w=xw.*(18-xw).^2;w=1-w/max(w)*.5;
w=1-up(5)/3;ww=linspace(w(5),1,14);ww(1)=[];
w=[w,ww];
lw=[lin w];

%plot([lin,w],'.')
zers=zeros(1,18);
r=[lin,1,1-lin,zers,lw];
g=[zers,up(18),1,1-up(18),0,up(8)];
 b=[lw,1-up(9),zers,up(10)];
 
 MAP=[r; g; b]';
 switch MUL
     case 1
     MAP=doub(MAP);
     case 2
     MAP=doub(doub(MAP));
 end
 
 
 function  o_o(arg)
% sound warning       
%Call:
%       
%Input:
%       
%Output:
%			
%	Vassili Pastushenko	 2005
%==============================
if nargin
         S=bip(1);
else
    S=bip;
end
         S=[S;zeros(1200,1);flipud(S)];
         sound(S);
         pause(.2);

function  S=bip(pib)
%Sound bit
%Call:
%           bip
%Input:
%
%Output:
%
%
%Vassili Pastushenko	Jul	2004
%==============================
t=(1:.1:100)';
ONETWO=linspace(1,3,length(t))';
S=cos(t.*ONETWO)./(2+ONETWO);
if nargin>0
    S=flipud(S);
end
if nargout<1
sound(S);
clear S;
end 
 
    function M=doub(MAP)
        LMAP=size(MAP,1);
     N=2*LMAP-1;
        M=zeros(N,3);
     M(1:2:N,:)=MAP;
     M(2:2:N-1,:)=(MAP(1:LMAP-1,:)+MAP(2:LMAP,:))/2;
     
     function  M=afm
%lINEARLY SCALE RED COLOR INTENSITY
%	Vassili Pastushenko	 March 2006
%==============================
 r=linspace(.2,1,64)';
 x=linspace(0,1,64)';
 g=.7;g=((x+g)/(1+g)).^3;
 b=((x+.3)/1.3).^10; 
 M=[r g b];
 

Contact us at files@mathworks.com