JETの画像とカラー画像を重ねて描画

MATLABでJETの画像とカラー画像を重ねた画像をよく見るのだが,
どう作ればいいのか分からなかったので,調べたついでにメモ.

% 準備
clear;
close all;

img = im2double(imread('gundam.jpg'));
img = imresize(img, 0.1);
gimg = rgb2gray(img);
h = fspecial('log', 20, 7);
simg = filter2(h, gimg);

% jetの画像を生成 
mask = simg>0.001;
ssimg = simg;
ssimg(~mask) = 0;
jimg=ind2rgb(gray2ind(ssimg/max(ssimg(:)), 256),jet(256));
jimg(repmat(~mask,[1,1,3])) = img(repmat(~mask,[1,1,3]));

% 合成して描画
figure(1);
imshow(img);
hold on;
h=imshow(jimg);
set(h,'AlphaData', 0.5);
hold off;

figure(2);imshow(img);
figure(3);imagesc(simg);
figure(4);imshow(jimg);

結果はこのようになる.
f:id:nosyan:20120613135004p:plain

JETをどのように描画したいかは場合によるが,基本は同じ.
アルファブレンディングのところは,

imshow(0.5*img+0.5*jimg);

と書いてもいいかもしれない.