MATLAB: Imshow 16 bit tif file turns to black

image processingimread

I am currently loading a tif file into matlab by using the code below.
fname = '1.tif'; img = imread(fname); imshow(img)
But it showed a black picture. If I change to this.
fname = '1.tif'; [img,map] = imread(fname,k); imshow(img,map)
It works. And I found that map is actually empty.
If I did like this, it also works.
fname = '1.tif'; img = imread(fname); map = []; imshow(img,map)
I am wondering why.
The tif file information is here.
Filename:
FileModDate: ' '
FileSize: 761533941
Format: 'tif'
FormatVersion: []
Width: 630
Height: 630
BitDepth: 16
ColorType: 'grayscale'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubFileType: 2
BitsPerSample: 16
Compression: 'Uncompressed'
PhotometricInterpretation: 'BlackIsZero'
StripOffsets: 1x105 Double
SamplesPerPixel: 1
RowsPerStrip: 6
StripByteCounts: 1x105 Double
XResolution: []
YResolution: []
ResolutionUnit: 'Inch'
Colormap: []
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: 65535
MinSampleValue: 0
Thresholding: 1
Offset: ...
ImageDescription: ...
PageNumber: ...
UnknownTags: [4x1 struct]
Thank you so much. Any suggestions will be welcomed.

Best Answer

I think that it happends because your tif image is a grayscale image are it's said in properties. Maps are used for colour images.
Since it's a grayscale image the notation [] means that the display range is [min max] then you see the whole gray scale.
Check this to see how maps work on a RGB tif image.
[X,map] = imread('corn.tif');
imshow(X,map)