Image processing using indexing
1 次查看(过去 30 天)
显示 更早的评论
Hi. I am wondering if anyone can help me. I'm not sure wether this is possible but i will try to explain it as best I can.
I have two images with the same resolution.
Image A, a RGB image.
Image B, a Gray scale image the with only a small region of postive values the rest black (0 values).
I wish to map a jet colormap to Image B and substitute these potive pixels into image A (repleaceing the pixels from A)
I understand that a grayscale image with a colormap is of a different format to a RGB image which is (m*n*3). But is it possible.
I hope i have explained it clearly enough.
I would be gratefull for any help. Thank you
Regards Dana
0 个评论
采纳的回答
David Young
2011-12-15
The details depend on what class your images are, but here's an example that you can probably modify as needed.
% test data - an rgb image and a greyscale image the same size, with lots
% of zeros in it
A = imread('saturn.png');
p = imread('pout.tif');
B = zeros(size(A,1), size(A,2), class(p));
B(1001:1000+size(p,1), 501:500+size(p,2)) = p;
% apply the jet map to the greyscale image
if strcmp(class(B), 'double')
% assume values in range 0-1
Brgb = ind2rgb(B, jet);
else
nvals = double(intmax(class(B))) + 1;
Brgb = ind2rgb(B, nvals*jet(nvals));
end
% copy non-zero parts of B into A
ind = repmat(B ~= 0, [1 1 3]); % index array
Amod = A;
Amod(ind) = Brgb(ind);
% look at the result
imshow(Amod);
5 个评论
David Young
2011-12-15
... and I'd recommend looking at the demo that Image Analyst mentions below, though you might want to get my simpler code going first.
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Blue 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!