The KEA file format is built on HDF5 so anything which can read HDF5 can read a KEA file, including MATLAB. I’m not quite sure why you’d want to use MATLAB instead of using Python, in particular as you can read KEA files and many other formats through GDAL. However, I’ve been claiming it’s possible to use KEA with MATLAB for a while so I though it would be a good idea to post an example!
This example uses CASI data over Injune, which is part of the test dataset for RSGISLib, you can download from here.
1. Get file information
info = h5info('injune_p142_casi_sub_ll.kea'); % Get bandnames info.Groups.Name
2. Read in spatial information
If you don’t care about the geospatial information you can skip this step.
% Read in resolution res = h5read('injune_p142_casi_sub_ll.kea','/HEADER/RES'); xRes = res(1); yRes = res(2); % Top left coordinate topLeft = h5read('injune_p142_casi_sub_ll.kea','/HEADER/TL'); topLeftX = topLeft(1); % Longitude topLeftY = topLeft(2); % Latitude % Size imageSize = h5read('injune_p142_casi_sub_ll.kea','/HEADER/SIZE'); imageSizeX = imageSize(1); imageSizeY = imageSize(2); % Calculate bottom right bottomRightX = topLeftX + (double(imageSizeX) * xRes); bottomRightY = topLeftY + (double(imageSizeY) * yRes); lon_axis = linspace(topLeftX,bottomRightX,imageSizeX); lat_axis = linspace(bottomRightY,topLeftY,imageSizeY);
3. Read in data
This assumes reading in bands 12, 8 and 3.
band12 = transpose(h5read('injune_p142_casi_sub_ll.kea','/BAND12/DATA')); band8 = transpose(h5read('injune_p142_casi_sub_ll.kea','/BAND8/DATA')); band3 = transpose(h5read('injune_p142_casi_sub_ll.kea','/BAND3/DATA'));
4. Display data
A three band composite is created, this is stretched and then displayed.
% Create composite composite = cat(3,band12,band8,band3); % Apply linear stretch stretchedComposite = imadjust(composite,stretchlim(composite)); % View image h = imagesc(lon_axis, lat_axis, stretchedComposite);
If you’ve used the image from the example the output should look something like this:
More details about the KEA format (including a description of the data structure) are available in the following paper: Peter Bunting and Sam Gillingham, The KEA image file format, Computers & Geosciences, Volume 57, August 2013, Pages 54-58, ISSN 0098-3004, http://dx.doi.org/10.1016/j.cageo.2013.03.025.