Image processing using indexing
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
David Young
am 15 Dez. 2011
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 Kommentare
David Young
am 15 Dez. 2011
... and I'd recommend looking at the demo that Image Analyst mentions below, though you might want to get my simpler code going first.
Weitere Antworten (1)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!