Displaying Multispectral Image in MATLAB
74 views (last 30 days)
Nagaraj rajendiran on 8 Apr 2021
I have multispectral image (data3.tif) which is raw image of 6 bands.
I used following code to read the image and matlab reads it properly no issues. I tried to seperate band 4 from raw image and displayed single band it is also works fine.
but imshow(A) and imtool(A) doesnot works
i tried multibandread also it does not works.
Actually I need to train neural network for segmentation which accepts [256 256 6] as an input size. To do that first i need to display image (data3.tif) for cliping small patches from the raw data. My problem is imshow and imtool is shows an error if i use imshow(A) and imtool(A).
how To display multispectral image which has 6 bands in a single image ?
how to crop small patches from raw image?
If i cropped small patch in raw image whether it has same 6 bands?
link for image size 22MB
Subhadeep Koley on 12 Apr 2021
You can not use imshow(_) or imagesc(_) to display Multi-plane images having more than 3 channels.
You can use sliceViewer(_) to browse through individual plane of your image.
cube = imread('data3.tif');
Moreover, if you have the wavelength corresponds to each plane of your multispectral image, you can construct a hypercube(_) object and use the colorize(_) method to generate RGB, CIR, or False-colored image. Also, you can crop your region of interest. Like below,
% Construct the hypercube object
hCube = hypercube('data3.tif', wavelength); % Here wavelength is a C-element vector. C is the number of bands
% Compute RGB image
rgbImg = colorize(hCube, 'method', 'rgb', 'ContrastStretching', true);
% Crop region of interest
row = 100:250;
column = 200:400;
bands = 1:6;
newHcube = cropData(hCube, row, column, bands);