Combining 5 different bands to generate one sinlge image.
4 views (last 30 days)
Show older comments
Amit Bhasin
on 20 Jan 2019
Commented: Amit Bhasin
on 20 Feb 2019
How can I cobmine 5 different multispectral bands (R,G,B, NIR, RedEdge). They all are in .tiff version?
4 Comments
Walter Roberson
on 20 Jan 2019
I notice your reference to NIR and RedEdge, both of which are associated with satellite images. I wonder if it would be appropriate to be building a GeoTIFF instead of a plain TIFF ?
Accepted Answer
Walter Roberson
on 20 Jan 2019
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);
More Answers (0)
See Also
Categories
Find more on Image Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!