#ifndef TGAIRTHPROCESS_H #define TGAIRTHPROCESS_H #include #include "GCycleQueue.h" #include #include "CommSerialDef.h" #include "Arith/ImgProcessDll.h" #include "IO/GIOParams.h" using namespace std; class TGAirthProcess : public QObject { Q_OBJECT public: explicit TGAirthProcess(QObject *parent = nullptr); ~TGAirthProcess(); void Start(); void Stop(); bool PushData(unsigned char* pFrameData, int nFrameSize); bool GetData(unsigned char* pFrameData, int nFrameSize); void SetImgFormat(GFrameFormat& p_ImgFormat); private: void ImgProcess(unsigned short *pSrc, unsigned char *pDst, int nWidth, int nHeight); void ThreadFun_MappingData_Airth_0_PreDeal(); void ThreadFun_MappingData_Airth_1_DeGuoGai(); void ThreadFun_MappingData_Airth_2_DeBadPixel(); void ThreadFun_MappingData_Airth_3_Destrip(); void ThreadFun_MappingData_Airth_4_Y16Denoise_0(); void ThreadFun_MappingData_Airth_4_Y16Denoise_1(); void ThreadFun_MappingData_Airth_5_Y16DDE(); void ThreadFun_MappingData_Airth_6_Y16IDE(); void ThreadFun_MappingData_Airth_7_Y8Map(); typedef void (TGAirthProcess::*ThreadRunFunPtr)(); static void ThreadEntry(ThreadRunFunPtr pRunFun, void* pOwner); public: TG m_TGInfo; MixMapPara m_MixMapPara; MixMapOut m_MixMapOut; private: GCycleQueue m_varY16Data_IN; //输入的原始Y16数据 GCycleQueue m_varAirth_0_PreDeal; //有/无符号Y16数据经过预处理后的数据 GCycleQueue m_varAirth_1_DeGuoGai; //去锅盖后数据 GCycleQueue m_varAirth_2_DeBadPixel; //校坏点后数据 GCycleQueue m_varAirth_3_Destrip_0; //去竖条纹后数据 GCycleQueue m_varAirth_3_Destrip_1; GCycleQueue m_varAirth_4_Y16Denois_0; //去噪声后数据 GCycleQueue m_varAirth_4_Y16Denois_1; GCycleQueue m_varAirth_5_Y16DDE; //DDE数据 GCycleQueue m_varAirth_6_Y16IDE; //IDE数据(调光后的Y8数据) GCycleQueue m_varY8Data_OUT; //IDE数据经过Y8纠偏、映射后得到的Y8数据 std::thread* m_ptrThread_Airth_0_PreDeal; std::thread* m_ptrThread_Airth_1_DeGuoGai; std::thread* m_ptrThread_Airth_2_DeBadPixel; std::thread* m_ptrThread_Airth_3_Destrip; std::thread* m_ptrThread_Airth_4_Y16Denoise_0; std::thread* m_ptrThread_Airth_4_Y16Denoise_1; std::thread* m_ptrThread_Airth_5_Y16DDE; std::thread* m_ptrThread_Airth_6_Y16IDE; std::thread* m_ptrThread_Airth_7_Y8Map; bool m_bThreadRunning_MappingData; GFrameFormat m_varGFrameFormat; QMutex m_mutex0; signals: public slots: }; #endif // TGAIRTHPROCESS_H