mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
Added a bunch of composites
This commit is contained in:
parent
26c42ac496
commit
7dbcc8bb5d
5 changed files with 230 additions and 126 deletions
Binary file not shown.
|
Before Width: | Height: | Size: 5.2 KiB |
BIN
resources/lut/cal/CIMSSLUT.png
Normal file
BIN
resources/lut/cal/CIMSSLUT.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 269 B |
|
|
@ -1,56 +0,0 @@
|
|||
-- IR 10.8 - IR 6.2 split window for HIRS & MODIS (C) LEGO11 2024
|
||||
|
||||
function init()
|
||||
--create an empty image for the LUT
|
||||
img_lut = image_t.new()
|
||||
--load the LUT
|
||||
image_load_png(img_lut, get_resource_path("lut/IR108-IR62-10+50_HIRS.png"))
|
||||
--return 3 channels, RGB
|
||||
return 3
|
||||
end
|
||||
|
||||
function process()
|
||||
for x = 0, rgb_output:width() - 1, 1 do
|
||||
for y = 0, rgb_output:height() - 1, 1 do
|
||||
|
||||
--get channels from satdump.json
|
||||
|
||||
local cch9 = get_calibrated_value(8, x, y, true)
|
||||
local cch12 = get_calibrated_value(11, x, y, true)
|
||||
|
||||
|
||||
--perform split window
|
||||
local ndvi = cch9-cch12
|
||||
--range convert from -10 -> 50 to 0 -> 256
|
||||
local ndvi_lutval = (((ndvi-(-10))*256) / (50-(-10)))
|
||||
|
||||
--sanity checks (noise)
|
||||
if ndvi_lutval < 0 then
|
||||
ndvi_lutval = 0
|
||||
end
|
||||
|
||||
if ndvi_lutval > 255 then
|
||||
ndvi_lutval = 255
|
||||
end
|
||||
|
||||
|
||||
--don't forget to create a table!
|
||||
local lut_result = {}
|
||||
|
||||
--send the ndvi_lutval to the LUT, retrieve it back in the table as 3 R,G,B channels
|
||||
lut_result[0] = img_lut:get(0 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
lut_result[1] = img_lut:get(1 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
lut_result[2] = img_lut:get(2 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
|
||||
|
||||
|
||||
--return RGB 0=R 1=G 2=B
|
||||
set_img_out(0, x, y, lut_result[0])
|
||||
set_img_out(1, x, y, lut_result[1])
|
||||
set_img_out(2, x, y, lut_result[2])
|
||||
|
||||
end
|
||||
--set the progress bar accordingly
|
||||
set_progress(x, rgb_output:width())
|
||||
end
|
||||
end
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
-- IR 10.8 - IR 6.2 split window for HIRS & MODIS (C) LEGO11 2024
|
||||
|
||||
function init()
|
||||
--create an empty image for the LUT
|
||||
img_lut = image_t.new()
|
||||
--load the LUT
|
||||
image_load_png(img_lut, get_resource_path("lut/IR108-IR62-10+50_HIRS.png"))
|
||||
--return 3 channels, RGB
|
||||
return 3
|
||||
end
|
||||
|
||||
function process()
|
||||
for x = 0, rgb_output:width() - 1, 1 do
|
||||
for y = 0, rgb_output:height() - 1, 1 do
|
||||
|
||||
--get channels from satdump.json
|
||||
|
||||
local cch32 = get_calibrated_value(32, x, y, true)
|
||||
local cch28 = get_calibrated_value(28, x, y, true)
|
||||
|
||||
|
||||
--perform split window
|
||||
local ndvi = cch32-cch28
|
||||
|
||||
--range convert from -10 -> 50 to 0 -> 256
|
||||
local ndvi_lutval = (((ndvi-(-10))*256) / (50-(-10)))
|
||||
|
||||
--sanity checks (noise)
|
||||
if ndvi_lutval < 0 then
|
||||
ndvi_lutval = 0
|
||||
end
|
||||
|
||||
if ndvi_lutval > 255 then
|
||||
ndvi_lutval = 255
|
||||
end
|
||||
|
||||
|
||||
--don't forget to create a table!
|
||||
local lut_result = {}
|
||||
|
||||
--send the ndvi_lutval to the LUT, retrieve it back in the table as 3 R,G,B channels
|
||||
lut_result[0] = img_lut:get(0 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
lut_result[1] = img_lut:get(1 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
lut_result[2] = img_lut:get(2 * img_lut:height() * img_lut:width() + ndvi_lutval * img_lut:width() + ndvi_lutval) / 255.0
|
||||
|
||||
|
||||
|
||||
--return RGB 0=R 1=G 2=B
|
||||
set_img_out(0, x, y, lut_result[0])
|
||||
set_img_out(1, x, y, lut_result[1])
|
||||
set_img_out(2, x, y, lut_result[2])
|
||||
|
||||
end
|
||||
--set the progress bar accordingly
|
||||
set_progress(x, rgb_output:width())
|
||||
end
|
||||
end
|
||||
243
satdump_cfg.json
243
satdump_cfg.json
|
|
@ -590,6 +590,96 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Split Water Vapor": {
|
||||
"channels": "cch5, cch6",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch5": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
},
|
||||
"cch6": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -35,
|
||||
"maxval": 5,
|
||||
"input_range": 150,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Split Ozone": {
|
||||
"channels": "cch8, cch9",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch8": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
},
|
||||
"cch9": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -45,
|
||||
"maxval": 5,
|
||||
"input_range": 150,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Split Cloud Phase": {
|
||||
"channels": "cch9, cch8",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch9": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 350
|
||||
},
|
||||
"cch8": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 350
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -10,
|
||||
"maxval": 25,
|
||||
"input_range": 200,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Cloud Top IR": {
|
||||
"channels": "cch9",
|
||||
"autogen": false,
|
||||
|
|
@ -1066,7 +1156,7 @@
|
|||
"geo_correct": true,
|
||||
"autogen": false
|
||||
},
|
||||
"Fog Brightness Temperature Difference": {
|
||||
"Night Fog Difference": {
|
||||
"channels": "cch4, cch3b",
|
||||
"calib_cfg": {
|
||||
"cch4": {
|
||||
|
|
@ -2141,7 +2231,7 @@
|
|||
],
|
||||
"autogen": false // Needs to be optimized...
|
||||
},
|
||||
"Fog Brightness Temperature Difference": {
|
||||
"Night Fog Difference": {
|
||||
"channels": "cch13, cch7",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
|
|
@ -2877,7 +2967,7 @@
|
|||
"white_balance": true,
|
||||
"description": "descriptions/FireTempRGB.md"
|
||||
},
|
||||
"Fog Brightness Temperature Difference": {
|
||||
"Night Fog Difference": {
|
||||
"channels": "cch13, cch7",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
|
|
@ -3362,19 +3452,31 @@
|
|||
},
|
||||
"IR 10.8µm - IR 6.2 µm Difference": {
|
||||
"channels": "cch32, cch28",
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch32": {
|
||||
"type": "temperature",
|
||||
"min": 0,
|
||||
"max": 1000
|
||||
"min": 100,
|
||||
"max": 400
|
||||
},
|
||||
"cch28": {
|
||||
"type": "temperature",
|
||||
"min": 0,
|
||||
"max": 1000
|
||||
"min": 100,
|
||||
"max": 400
|
||||
}
|
||||
},
|
||||
"lua": "scripted_compos/IR108-IR62_MODIS.lua",
|
||||
"vars": {
|
||||
"minval": -10,
|
||||
"maxval": 50,
|
||||
"input_range": 300,
|
||||
"lut": "lut/cal/IR108-IR62-10+50.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Night Microphysics": {
|
||||
|
|
@ -4096,6 +4198,64 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Split Water Vapor": {
|
||||
"channels": "cch12, cch11",
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch12": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
},
|
||||
"cch11": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -35,
|
||||
"maxval": 5,
|
||||
"input_range": 150,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Split Ozone": {
|
||||
"channels": "cch10, cch9",
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch10": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
},
|
||||
"cch9": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -45,
|
||||
"maxval": 5,
|
||||
"input_range": 150,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Mid Stratosphere CO2 Temperature": {
|
||||
"description": "descriptions/sounders/MidStratoCO2T.md",
|
||||
"lut": "lut/cal/bluered.png",
|
||||
|
|
@ -4190,20 +4350,47 @@
|
|||
},
|
||||
"IR 10.8µm - IR 6.2 µm Difference": {
|
||||
"channels": "cch9, cch12",
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch9": {
|
||||
"type": "temperature",
|
||||
"min": 0,
|
||||
"max": 1000
|
||||
"min": 100,
|
||||
"max": 350
|
||||
},
|
||||
"cch12": {
|
||||
"type": "temperature",
|
||||
"min": 0,
|
||||
"max": 1000
|
||||
"min": 100,
|
||||
"max": 350
|
||||
}
|
||||
},
|
||||
"lua": "scripted_compos/IR108-IR62_HIRS.lua",
|
||||
"vars": {
|
||||
"minval": -10,
|
||||
"maxval": 50,
|
||||
"input_range": 250,
|
||||
"lut": "lut/cal/IR108-IR62-10+50.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Differential Water Vapor RGB": {
|
||||
"equation": "(1-(3/200-cch11+cch12)*(200/33))^0.2587, (1-((cch11*200+200-213.15)/(278.15-213.15)))^0.4, (1-((cch12*200+200-208.5)/(243.9-208.5)))^0.4",
|
||||
"calib-cfg": {
|
||||
"cch11": {
|
||||
"type": "temperature",
|
||||
"min": 200,
|
||||
"max": 400
|
||||
},
|
||||
"cch12": {
|
||||
"type": "temperature",
|
||||
"min": 200,
|
||||
"max": 400
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -4879,6 +5066,36 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Split Water Vapor": {
|
||||
"channels": "cch10, cch11",
|
||||
"remove_background": true,
|
||||
"draw_map_overlay": true,
|
||||
"calib_cfg": {
|
||||
"cch10": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
},
|
||||
"cch11": {
|
||||
"type": "temperature",
|
||||
"min": 150,
|
||||
"max": 300
|
||||
}
|
||||
},
|
||||
"vars": {
|
||||
"minval": -35,
|
||||
"maxval": 5,
|
||||
"input_range": 150,
|
||||
"lut": "lut/cal/CIMSSLUT.png"
|
||||
},
|
||||
"lua": "scripted_compos/split_difference.lua",
|
||||
"borders_color": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"autogen": false
|
||||
},
|
||||
"Cloud Top IR": {
|
||||
"channels": "cch14",
|
||||
"autogen": false,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue