MATLAB: Combining 5 different bands to generate one sinlge image.

different bands

How can I cobmine 5 different multispectral bands (R,G,B, NIR, RedEdge). They all are in .tiff version?

Best Answer

Sample code:
filename = 'test5.tif';
if exist('R', 'var')
numrows = size(R,1);
numcols = size(R,2);
else
%this entire section is just creating data to write out, and the details
%do not matter. There is no significance to the 87 and 207 and so on,
%I just put them in to have distinguishable layers.
numrows = 64;
numcols = 80;
rng(12345);
R = sort(randi([0 255], numrows, numcols, 'uint8'));
G = sort(randi([0 255], numrows, numcols, 'uint8'), 2, 'descend');
B = sort(randi([0 255], numrows, numcols, 'uint8'), 1, 'descend');
NIR = max(min(G, 87), 207) - randi([0 50], numrows, numcols, 'uint8');
RedEdge = randi([50 223], numrows, numcols, 'uint8');
end
%serious code starts here
data = cat(3,R, G, B, NIR, RedEdge);
t = Tiff(filename, 'w');
setTag(t,'Photometric', Tiff.Photometric.MinIsBlack);
setTag(t,'Compression', Tiff.Compression.None);
setTag(t,'BitsPerSample', 8);
setTag(t,'SamplesPerPixel', size(data,3));
setTag(t,'SampleFormat', Tiff.SampleFormat.UInt);
setTag(t,'ExtraSamples', Tiff.ExtraSamples.Unspecified);
setTag(t,'ImageLength', numrows);
setTag(t,'ImageWidth', numcols);
setTag(t,'TileLength', 32);
setTag(t,'TileWidth', 32);
setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
write(t, data);
close(t);