I'm working on fire scar detection and severity using the Normalized Burn Ration (NBR) and the Burn Area Index for Sentinel-2 (BAIS-2). I have no problem with the NBR. However, when calculating the BAIS2 I got strange range of values. According to some paper I've read and this website (BAIS2 details), BAIS2 ranges from -1 to 1.
The formula given by Filipponi (2018) is:
BAIS2 = (1-(B6B7B8a/B4)^0.5)*((B12-B8a)/(B12+B8a)^0.5+1)
Here you have a chunk of the code I used:
#. Load libraries
library(raster)
library(sp)
#.
#. Load data
#. data_a is the sentinel-2 image after the wildfire
#. data_b is the sentinel-2 image before the wildfire
data_a <- stack("April/20240407/S2A_MSIL2A_20240407T164851_N0510_R026_T14QPF_20240407T214153.tif")
data_b <- stack("March/20240308/S2A_MSIL2A_20240308T165131_N0510_R026_T14QPF_20240308T225001.tif")
rnames <- c('b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b8a', 'b9', 'b11', 'b12', 'cmask')
names(data_a) <- rnames
names(data_b) <- rnames
#.
#. Calculate extension and reduce size of
#. Current Extension
#.
extension <- extent(c(677028.3468, 701333.4836, 2070957.1834, 2089943.2630))
lines(extension)
data_a <- crop(data_a, extension)
data_b <- crop(data_b, extension)
#.
plot((1 - (data_b$b6*data_b$b7*data_b$b8a/data_b$b4)^0.5)*((data_b$b12-data_b$b8a)/(data_b$b12+data_b$b8a)^0.5 + 1))
plot((1 - (data_a$b6*data_a$b7*data_a$b8a/data_a$b4)^0.5)*((data_a$b12-data_a$b8a)/(data_a$b12+data_a$b8a)^0.5 + 1))
#.
The output is the image below. BAIS2 before fire BAIS2 after fire
Does anyone know what error I have? Even is the delta is calculated the range does not range what it is find in literature,
Thanks
Joe
I've read several papers to see the ranges of values and equations. Additionally, I did some other images to be affected for one sample but the range does not change.
I just found the answer. The BAIS2 needs to be calculate in micrometers but my bands were in nanometers. So, computing the NBR in nm is ok but when computing the BAIS2 all the bands need unit conversion.