123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- function [ cdata ] = imagescX ( img, cmap, clim )
- % imagesc_fixed Plot image independent of colormap used in figure
- % Usage:
- % imagesc_fixed ( img, cmap, clim )
- % INPUT:
- % img = 2D matrix of image
- % cmap = colormap, defaults to 'jet'
- % OUTPUT:
- % [] = plot the image to current axes
- % cdata = RGB matrix
- %
- % Development status: Partially functional
- % Copyleft (c) Xiaohu Mo
- % Version: 0.7
- if nargin < 2
- cmap = jet(256);
- end
- img = squeeze(img);
- if ndims(img) > 2
- cdata = [];
- return;
- end
- if isinteger(img)
- img = single(img);
- end
- cmap_len = size(cmap, 1);
- if nargin < 3
- cmin = min(img(:));
- cmax = max(img(:));
- else
- cmin = clim(1);
- cmax = clim(2);
- end
- % calculate color
- % TODO cmap_len - 1 or not? See doc caxis
- img_indexed = fix((img-cmin)/(cmax-cmin)*(cmap_len-1)) + 1;
- img_indexed(img_indexed < 1) = 1;
- img_indexed(img_indexed > cmap_len) = cmap_len;
- img_indexed(isnan(img_indexed)) = 1; % TODO when cmax == cmin
- cdata = zeros(size(img,1), size(img,2), 3);
- cdata(:,:,1) = reshape(cmap(img_indexed, 1), size(img));
- cdata(:,:,2) = reshape(cmap(img_indexed, 2), size(img));
- cdata(:,:,3) = reshape(cmap(img_indexed, 3), size(img));
- if nargout == 0
- image('CData', cdata);
- end
|