mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-10-19 11:49:42 +08:00
更新:
(1)基于非线性校正的数据 生成 定标文件; (2)将非线性定标参数写到文件中,给卓哥用;
This commit is contained in:
@ -1,8 +1,11 @@
|
||||
#include "Header_Files/oceanOpticsFiberImager.h"
|
||||
|
||||
OceanOpticsFiberImager::OceanOpticsFiberImager()
|
||||
OceanOpticsFiberImager::OceanOpticsFiberImager(double * nonlinearityCoeffs, int numberOfCoeffs)
|
||||
{
|
||||
m_FiberSpectrometer = NULL;
|
||||
|
||||
m_nonlinearityCoeffs = nonlinearityCoeffs;
|
||||
m_iNumberOfNonlinearityCoeffs = numberOfCoeffs;
|
||||
}
|
||||
|
||||
OceanOpticsFiberImager::~OceanOpticsFiberImager()
|
||||
@ -18,15 +21,15 @@ void OceanOpticsFiberImager::connectFiberSpectrometer(QString& SN, QString& pixe
|
||||
|
||||
m_FiberSpectrometer->Initialize();
|
||||
|
||||
DeviceInfo deviceInfo;
|
||||
DeviceAttribute deviceAttribute;
|
||||
getDeviceInfo(m_deviceInfo);
|
||||
// m_FiberSpectrometer->GetDeviceInfo(m_deviceInfo);
|
||||
|
||||
m_FiberSpectrometer->GetDeviceInfo(deviceInfo);
|
||||
m_FiberSpectrometer->GetDeviceAttribute(deviceAttribute);
|
||||
getDeviceAttribute(m_deviceAttribute);
|
||||
// m_FiberSpectrometer->GetDeviceAttribute(m_deviceAttribute);
|
||||
|
||||
SN = QString::fromStdString(deviceInfo.strSN);
|
||||
pixelCount = QString::number(deviceAttribute.iPixels);
|
||||
wavelengthInfo = QString::number(deviceAttribute.fWaveLengthInNM[0]) + "--" + QString::number(deviceAttribute.fWaveLengthInNM[deviceAttribute.iPixels - 1]);
|
||||
SN = QString::fromStdString(m_deviceInfo.strSN);
|
||||
pixelCount = QString::number(m_deviceAttribute.iPixels);
|
||||
wavelengthInfo = QString::number(m_deviceAttribute.fWaveLengthInNM[0]) + "--" + QString::number(m_deviceAttribute.fWaveLengthInNM[m_deviceAttribute.iPixels - 1]);
|
||||
|
||||
m_FiberSpectrometer->SetDeviceTemperature(-10);
|
||||
|
||||
@ -34,11 +37,11 @@ void OceanOpticsFiberImager::connectFiberSpectrometer(QString& SN, QString& pixe
|
||||
//<2F><><EFBFBD><EFBFBD>dnֵ<6E><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
|
||||
string qepro = "QEP";
|
||||
string flame = "FLMS";
|
||||
if (deviceInfo.strSN.find(qepro) != string::npos)
|
||||
if (m_deviceInfo.strSN.find(qepro) != string::npos)
|
||||
{
|
||||
m_MaxValueOfFiberSpectrometer = 200000;
|
||||
}
|
||||
else if (deviceInfo.strSN.find(flame) != string::npos)
|
||||
else if (m_deviceInfo.strSN.find(flame) != string::npos)
|
||||
{
|
||||
m_MaxValueOfFiberSpectrometer = 65535;
|
||||
}
|
||||
@ -81,6 +84,25 @@ void OceanOpticsFiberImager::getDeviceTemperature(float &fTemperature)
|
||||
void OceanOpticsFiberImager::singleShot(DataFrame &dfData)
|
||||
{
|
||||
m_FiberSpectrometer->SingleShot(dfData);
|
||||
|
||||
if(m_iNumberOfNonlinearityCoeffs==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||
for (int i = 0; i < m_deviceAttribute.iPixels; i++)
|
||||
{
|
||||
dfData.lData[i] = dfData.lData[i] / (m_nonlinearityCoeffs[0]
|
||||
+ m_nonlinearityCoeffs[1] * dfData.lData[i]
|
||||
+ m_nonlinearityCoeffs[2] * pow(dfData.lData[i], 2)
|
||||
+ m_nonlinearityCoeffs[3] * pow(dfData.lData[i], 3)
|
||||
+ m_nonlinearityCoeffs[4] * pow(dfData.lData[i], 4)
|
||||
+ m_nonlinearityCoeffs[5] * pow(dfData.lData[i], 5)
|
||||
+ m_nonlinearityCoeffs[6] * pow(dfData.lData[i], 6)
|
||||
+ m_nonlinearityCoeffs[7] * pow(dfData.lData[i], 7)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void OceanOpticsFiberImager::getNonlinearityCoeffs(coeffsFrame &coeffs)
|
||||
|
Reference in New Issue
Block a user