@@ -188,6 +188,54 @@ int main(int argc, char* argv[]) {
188188 imagesToSpread.push_back (ImageForSpread (ThreatImage::addRainOverlay (irImage, rainOverlay), " rain_IR_" ));
189189 }
190190
191+ } else if (meteorDecoder.isChannel64Available () && meteorDecoder.isChannel65Available () && meteorDecoder.isChannel67Available ()) {
192+ cv::Mat ch64 = meteorDecoder.getChannelImage (PacketParser::APID64, mSettings .fillBackLines ());
193+ cv::Mat ch65 = meteorDecoder.getChannelImage (PacketParser::APID65, mSettings .fillBackLines ());
194+ cv::Mat ch67 = meteorDecoder.getChannelImage (PacketParser::APID67, mSettings .fillBackLines ());
195+ cv::Mat irImage = meteorDecoder.getChannelImage (PacketParser::APID67, mSettings .fillBackLines ());
196+
197+ cv::Mat rainRef = cv::imread (mSettings .getResourcesPath () + " rain.bmp" );
198+ cv::Mat rainOverlay = ThreatImage::irToRain (irImage, rainRef);
199+
200+ saveImage (mSettings .getOutputPath () + fileNameDate + " _64.bmp" , ch64);
201+ saveImage (mSettings .getOutputPath () + fileNameDate + " _65.bmp" , ch65);
202+ saveImage (mSettings .getOutputPath () + fileNameDate + " _67.bmp" , ch67);
203+
204+ cv::Mat thermalRef = cv::imread (mSettings .getResourcesPath () + " thermal_ref.bmp" );
205+ cv::Mat thermalImage = ThreatImage::irToTemperature (irImage, thermalRef);
206+ imagesToSpread.push_back (ImageForSpread (thermalImage, " thermal_" ));
207+
208+ irImage = ThreatImage::invertIR (irImage);
209+ irImage = ThreatImage::gamma (irImage, 1.4 );
210+ irImage = ThreatImage::contrast (irImage, 1.3 , -40 );
211+ irImage = ThreatImage::sharpen (irImage);
212+ imagesToSpread.push_back (ImageForSpread (irImage, " IR_" ));
213+
214+ if (mSettings .addRainOverlay ()) {
215+ imagesToSpread.push_back (ImageForSpread (ThreatImage::addRainOverlay (irImage, rainOverlay), " rain_IR_" ));
216+ }
217+ cv::Mat image221 = meteorDecoder.getRGBImage (PacketParser::APID65, PacketParser::APID65, PacketParser::APID64, mSettings .fillBackLines ());
218+ cv::Mat image224 = meteorDecoder.getRGBImage (PacketParser::APID65, PacketParser::APID65, PacketParser::APID67, mSettings .fillBackLines ());
219+
220+ if (!ThreatImage::isNightPass (image221, mSettings .getNightPassTreshold ())) {
221+ image221 = ThreatImage::sharpen (image221);
222+ image224 = ThreatImage::sharpen (image224);
223+
224+ imagesToSpread.push_back (ImageForSpread (image221, " 221_" ));
225+ imagesToSpread.push_back (ImageForSpread (image224, " 224_" ));
226+
227+
228+ if (mSettings .addRainOverlay ()) {
229+ imagesToSpread.push_back (ImageForSpread (ThreatImage::addRainOverlay (image221, rainOverlay), " rain_221_" ));
230+ imagesToSpread.push_back (ImageForSpread (ThreatImage::addRainOverlay (image224, rainOverlay), " rain_224_" ));
231+ }
232+
233+ saveImage (mSettings .getOutputPath () + fileNameDate + " _221.bmp" , image221);
234+ saveImage (mSettings .getOutputPath () + fileNameDate + " _224.bmp" , image224);
235+ } else {
236+ std::cout << " Night pass, RGB image skipped, threshold set to: " << mSettings .getNightPassTreshold () << std::endl;
237+ }
238+
191239 } else if (meteorDecoder.isChannel64Available () && meteorDecoder.isChannel65Available () && meteorDecoder.isChannel66Available ()) {
192240 cv::Mat threatedImage1 = meteorDecoder.getRGBImage (PacketParser::APID66, PacketParser::APID65, PacketParser::APID64, mSettings .fillBackLines ());
193241 cv::Mat threatedImage2 = meteorDecoder.getRGBImage (PacketParser::APID65, PacketParser::APID65, PacketParser::APID64, mSettings .fillBackLines ());
0 commit comments