mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
3E MWTS-3 Fixes
This commit is contained in:
parent
e5901e12a8
commit
fe32042279
3 changed files with 25 additions and 15 deletions
|
|
@ -10,7 +10,7 @@ namespace fengyun3
|
|||
for (int i = 0; i < 18; i++)
|
||||
channels[i].resize(98);
|
||||
|
||||
lines = 0;
|
||||
lines = -1;
|
||||
}
|
||||
|
||||
MWTS3Reader::~MWTS3Reader()
|
||||
|
|
@ -19,6 +19,16 @@ namespace fengyun3
|
|||
channels[i].clear();
|
||||
}
|
||||
|
||||
uint16_t convert_val(uint16_t v)
|
||||
{
|
||||
bool sign = v >> 15;
|
||||
int val = v & 0b111111111111111;
|
||||
if (sign)
|
||||
return val;
|
||||
else
|
||||
return (65536 / 2) + val;
|
||||
}
|
||||
|
||||
void MWTS3Reader::work(ccsds::CCSDSPacket &packet)
|
||||
{
|
||||
if (packet.payload.size() < 1018)
|
||||
|
|
@ -28,16 +38,20 @@ namespace fengyun3
|
|||
|
||||
if (marker == 1)
|
||||
{
|
||||
double currentTime = ccsds::parseCCSDSTimeFullRaw(&packet.payload[2], 10957, 10000, 10000) + 12 * 3600;
|
||||
timestamps.push_back(currentTime);
|
||||
lines++;
|
||||
|
||||
// Make sure we have enough room
|
||||
for (int i = 0; i < 18; i++)
|
||||
channels[i].resize((lines + 1) * 98);
|
||||
|
||||
int pos = 224 + 144 * 2;
|
||||
for (int i = 0; i < 14; i++)
|
||||
{
|
||||
for (int c = 0; c < 18; c++)
|
||||
channels[c][lines * 98 + i] = packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1];
|
||||
channels[c][lines * 98 + i] = convert_val(packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1]);
|
||||
}
|
||||
|
||||
double currentTime = ccsds::parseCCSDSTimeFullRaw(&packet.payload[2], 10957, 10000, 10000) + 12 * 3600;
|
||||
timestamps.push_back(currentTime);
|
||||
lines++;
|
||||
}
|
||||
else if (marker == 2)
|
||||
{
|
||||
|
|
@ -45,7 +59,7 @@ namespace fengyun3
|
|||
for (int i = 0; i < 28; i++)
|
||||
{
|
||||
for (int c = 0; c < 18; c++)
|
||||
channels[c][lines * 98 + 14 + i] = packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1];
|
||||
channels[c][lines * 98 + 14 + i] = convert_val(packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1]);
|
||||
}
|
||||
}
|
||||
else if (marker == 3)
|
||||
|
|
@ -54,7 +68,7 @@ namespace fengyun3
|
|||
for (int i = 0; i < 28; i++)
|
||||
{
|
||||
for (int c = 0; c < 18; c++)
|
||||
channels[c][lines * 98 + 42 + i] = packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1];
|
||||
channels[c][lines * 98 + 42 + i] = convert_val(packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1]);
|
||||
}
|
||||
}
|
||||
else if (marker == 4)
|
||||
|
|
@ -63,13 +77,9 @@ namespace fengyun3
|
|||
for (int i = 0; i < 28; i++)
|
||||
{
|
||||
for (int c = 0; c < 18; c++)
|
||||
channels[c][lines * 98 + 70 + i] = packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1];
|
||||
channels[c][lines * 98 + 70 + i] = convert_val(packet.payload[pos + (18 * i + c) * 2 + 0] << 8 | packet.payload[pos + (18 * i + c) * 2 + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure we have enough room
|
||||
for (int i = 0; i < 18; i++)
|
||||
channels[i].resize((lines + 1) * 98);
|
||||
}
|
||||
|
||||
image::Image<uint16_t> MWTS3Reader::getChannel(int channel)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"scan_angle": 104,
|
||||
"roll_offset": -1,
|
||||
"pitch_offset": 0,
|
||||
"yaw_offset": -5,
|
||||
"yaw_offset": -0,
|
||||
"image_width": 98,
|
||||
"gcp_spacing_x": 5,
|
||||
"gcp_spacing_y": 5,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ int main(int /*argc*/, char *argv[])
|
|||
logger->trace("\n" + img_pro.contents.dump(4));
|
||||
|
||||
satdump::ImageCompositeCfg rgb_cfg;
|
||||
rgb_cfg.equation = "1-ch1,1-ch1,1-ch1"; //"(ch3 * 0.4 + ch2 * 0.6) * 2.2 - 0.15, ch2 * 2.2 - 0.15, ch1 * 2.2 - 0.15";
|
||||
rgb_cfg.equation = "ch2,ch2,ch2"; //"(ch3 * 0.4 + ch2 * 0.6) * 2.2 - 0.15, ch2 * 2.2 - 0.15, ch1 * 2.2 - 0.15";
|
||||
rgb_cfg.equalize = true;
|
||||
rgb_cfg.white_balance = true;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue