|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "waveDecompose.h"
|
|
|
|
|
|
|
|
|
|
// һάС<CEAC><D0A1><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
bool dwt(cv::Mat &cA, cv::Mat &cD, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
const cv::Mat &x, const cv::Mat &LF, const cv::Mat &HF) // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (x.empty() == true
|
|
|
|
|
|| (x.type() != CV_64FC1)
|
|
|
|
|
|| x.rows != 1)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (LF.empty() == true || LF.type() != CV_64FC1
|
|
|
|
|
|| HF.empty() == true || HF.type() != CV_64FC1)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if ( LF.size != HF.size
|
|
|
|
|
|| LF.rows != 1)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (1) <20><>Ƶ<EFBFBD>˲<EFBFBD>
|
|
|
|
|
|
|
|
|
|
// (1.1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
cv::Mat cvl;
|
|
|
|
|
int xCols = x.cols;
|
|
|
|
|
int LFCols = LF.cols;
|
|
|
|
|
|
|
|
|
|
cvl = cv::Mat(1, xCols + LFCols - 1, x.type());
|
|
|
|
|
cvl = cv::Scalar(0.0, 0.0, 0.0);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cvl.cols; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < LFCols; j++)
|
|
|
|
|
{
|
|
|
|
|
if ((i - j) >= 0 && (i - j) < xCols)
|
|
|
|
|
{
|
|
|
|
|
cvl.at<double>(0, i) += LF.at<double>(0,j) * x.at<double>(0, i - j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>1.2<EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>cA
|
|
|
|
|
|
|
|
|
|
cA = cv::Mat(1, int(cvl.cols / 2), CV_64FC1);
|
|
|
|
|
for (int i = 0; i < cA.cols; i++)
|
|
|
|
|
{
|
|
|
|
|
cA.at<double>(0, i) = cvl.at<double>(0, 2 * i + 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// (2)<29><>Ƶ<EFBFBD>˲<EFBFBD>
|
|
|
|
|
|
|
|
|
|
// (2.1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
cv::Mat cvh;
|
|
|
|
|
/*int */xCols = x.cols;
|
|
|
|
|
int HFCols = HF.cols;
|
|
|
|
|
|
|
|
|
|
cvh = cv::Mat(1, xCols + HFCols - 1, x.type());
|
|
|
|
|
cvh = cv::Scalar(0.0, 0.0, 0.0);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cvh.cols; i++) // cvh <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < HFCols; j++)
|
|
|
|
|
{
|
|
|
|
|
if ((i - j) >= 0 && (i - j) < xCols)
|
|
|
|
|
{
|
|
|
|
|
cvh.at<double>(0, i) += HF.at<double>(0,j) * x.at<double>(0, i - j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>2.2<EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>cD
|
|
|
|
|
|
|
|
|
|
cD = cv::Mat(1, int(cvh.cols / 2), CV_64FC1);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cD.cols; i++)
|
|
|
|
|
{
|
|
|
|
|
cD.at<double>(0, i) = cvh.at<double>(0, 2 * i + 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD> dwt2() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> img <20><><EFBFBD><EFBFBD>2άС<CEAC><D0A1><EFBFBD>ֽ⣬<D6BD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֽ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>[LL,HL,LH,HH]
|
|
|
|
|
bool dwt2(cv::Mat &cA, cv::Mat &cV, cv::Mat &cH, cv::Mat &cD, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
const cv::Mat img, const cv::Mat Lo_D, cv::Mat Hi_D) // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>img<6D><67>Ч<EFBFBD><D0A7><EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (img.empty() == true || (img.type() != CV_64FC1))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Lo_D Hi_D У<><D0A3>
|
|
|
|
|
if (Lo_D.empty() == true || Lo_D.type() != CV_64FC1
|
|
|
|
|
|| Hi_D.empty() == true || Hi_D.type() != CV_64FC1
|
|
|
|
|
||Lo_D.size != Hi_D.size || Lo_D.rows != 1)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (1) <20><><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
|
|
|
|
|
int rowLen = 2 * int((img.cols + Lo_D.cols - 1) / 2); // һ<>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>:<3A><>һάС<CEAC><D0A1><EFBFBD>ֽ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
cv::Mat imgRowsConv = cv::Mat(img.rows, rowLen, img.type()); // img<6D><67><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|
|
|
|
for (int i = 0; i < img.rows; i++)
|
|
|
|
|
{
|
|
|
|
|
cv::Mat iRow = img(cv::Range(i, i + 1), cv::Range(0, img.cols)); // ȡ<><C8A1>i<EFBFBD><69>
|
|
|
|
|
|
|
|
|
|
// һ<>еľ<D0B5><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
cv::Mat cA1;
|
|
|
|
|
cv::Mat cD1;
|
|
|
|
|
bool ret = dwt(cA1, cD1, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
iRow, Lo_D, Hi_D); // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
|
|
|
|
cA1.copyTo(imgRowsConv(cv::Range(i, i + 1), cv::Range(0, imgRowsConv.cols / 2)));
|
|
|
|
|
cD1.copyTo(imgRowsConv(cv::Range(i, i + 1), cv::Range(imgRowsConv.cols / 2, imgRowsConv.cols)));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>imgRowsConv<6E><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
|
|
|
|
|
int colLen = 2 * int((img.rows + Lo_D.cols - 1) / 2);
|
|
|
|
|
cv::Mat imgColsConv(colLen, imgRowsConv.cols, img.type()); // img<6D><67><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < imgRowsConv.cols; i++)
|
|
|
|
|
{
|
|
|
|
|
cv::Mat iCol = imgRowsConv(cv::Range(0, imgRowsConv.rows), cv::Range(i, i + 1)); // <20><>i<EFBFBD><69>
|
|
|
|
|
cv::transpose(iCol, iCol);
|
|
|
|
|
|
|
|
|
|
cv::Mat cA2, cD2;
|
|
|
|
|
bool ret = dwt(cA2, cD2, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
iCol, Lo_D, Hi_D); // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
if (ret == true)
|
|
|
|
|
{
|
|
|
|
|
cv::transpose(cA2, cA2);
|
|
|
|
|
cv::transpose(cD2, cD2);
|
|
|
|
|
|
|
|
|
|
cA2.copyTo(imgColsConv(cv::Range(0, imgColsConv.rows / 2) ,cv::Range(i, i + 1)));
|
|
|
|
|
cD2.copyTo(imgColsConv(cv::Range(imgColsConv.rows / 2, imgColsConv.rows), cv::Range(i, i + 1)));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int rows = imgColsConv.rows;
|
|
|
|
|
int cols = imgColsConv.cols;
|
|
|
|
|
|
|
|
|
|
// <20>õ<EFBFBD><C3B5>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
|
|
|
|
|
imgColsConv(cv::Range(0, rows / 2), cv::Range(0, cols / 2)).copyTo(cA);
|
|
|
|
|
imgColsConv(cv::Range(0, rows / 2), cv::Range(cols / 2, cols)).copyTo(cV);
|
|
|
|
|
imgColsConv(cv::Range(rows / 2, rows), cv::Range(0, cols / 2)).copyTo(cH);
|
|
|
|
|
imgColsConv(cv::Range(rows / 2, rows), cv::Range(cols / 2, cols)).copyTo(cD);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD> getWaveDecFilter() <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wname<6D><65><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ֽ<EFBFBD><D6BD>˲<EFBFBD><CBB2><EFBFBD>
|
|
|
|
|
bool getWaveDecFilter(cv::Mat &Lo_D, cv::Mat &Hi_D, const string wname)
|
|
|
|
|
{
|
|
|
|
|
// <20><>ֵ<EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (wname == "")
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>Чֵ<D0A7>ж<EFBFBD>
|
|
|
|
|
|
|
|
|
|
// haarС<72><D0A1>
|
|
|
|
|
if (wname == "haar")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.7071;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.7071;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
}
|
|
|
|
|
// symС<6D><D0A1>
|
|
|
|
|
else if (wname == "sym1")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.7071;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.7071;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym2")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 4, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.1294;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.2241;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.8365;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.4830;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 4, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.4830;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.8365;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.2241;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.1294;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym3")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0352;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0854;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.1350;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.4599;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.8069;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.3327;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.3327;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.8069;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.4599;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.1350;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0854;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.0352;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym4")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 8, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0758;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0296;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.4976;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.8037;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.2979;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0992;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.0126;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0322;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 8, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0322;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0126;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.0992;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.2979;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.8037;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.4976;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.0296;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0758;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym5")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 10, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0273;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0295;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0391;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.1994 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.7234 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.6340 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0166 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = -0.1753;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0211;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.0195;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 10, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0195;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0211;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.1753 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.0166 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.6340;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.7234 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.1994;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0391;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.0295;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.0273;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym6")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0154;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0035 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.1180;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0483;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.4911 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.7876 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.3379 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = -0.0726;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0211;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.0447 ;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.0018 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.0078;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = 0.0078 ;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.0018 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.0447;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.0211;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0726 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.3379 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.7876;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.4911;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0483 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.1180;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0035 ;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0154;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym7")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 14, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0027 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0010;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0126;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0305 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0679 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0496;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0174 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.5361;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.7678 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.2886 ;
|
|
|
|
|
Lo_D.at<double>(0, 10) = -0.1400;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.1078;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.0040 ;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.0103;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 14, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0103;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.0040 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.1078 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.1400;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.2886;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.7678 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.5361;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.0174;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0496 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.0679 ;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0305;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.0126;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0010 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = 0.0027;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym8")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 16, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0034;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0005;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0317 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0076 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.1433;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0613;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.4814 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.7772 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.3644;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0519;
|
|
|
|
|
Lo_D.at<double>(0, 10) = -0.0272;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.0491 ;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.0038 ;
|
|
|
|
|
Lo_D.at<double>(0, 13) = -0.0150;
|
|
|
|
|
Lo_D.at<double>(0, 14) = -0.0003;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.0019 ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 16, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0019;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0003;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.0150 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.0038 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.0491;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.0272;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.0519 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.3644 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.7772;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.4814;
|
|
|
|
|
Hi_D.at<double>(0, 10) = 0.0613 ;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.1433;
|
|
|
|
|
Hi_D.at<double>(0, 12) = -0.0076;
|
|
|
|
|
Hi_D.at<double>(0, 13) = 0.0317 ;
|
|
|
|
|
Hi_D.at<double>(0, 14) = 0.0005 ;
|
|
|
|
|
Hi_D.at<double>(0, 15) = -0.0034;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym9")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0014 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0006 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0133;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0115;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0302 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.0006 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.0546;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.2388 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.7179 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.6173;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.0353 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.1916;
|
|
|
|
|
Lo_D.at<double>(0, 12) = -0.0182;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.0621 ;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.0089 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = -0.0103;
|
|
|
|
|
Lo_D.at<double>(0, 16) = -0.0005;
|
|
|
|
|
Lo_D.at<double>(0, 17) = 0.0011;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0011;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0005;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.0103 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.0089 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.0621;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.0182;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.1916 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.0353 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.6173;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.7179;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.2388;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.0546;
|
|
|
|
|
Hi_D.at<double>(0, 12) = -0.0006;
|
|
|
|
|
Hi_D.at<double>(0, 13) = 0.0302 ;
|
|
|
|
|
Hi_D.at<double>(0, 14) = 0.0115 ;
|
|
|
|
|
Hi_D.at<double>(0, 15) = -0.0133;
|
|
|
|
|
Hi_D.at<double>(0, 16) = -0.0006;
|
|
|
|
|
Hi_D.at<double>(0, 17) = 0.0014;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "sym10")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 20, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0008 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0001 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0086;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0015;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0459 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.0116 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.1595;
|
|
|
|
|
Lo_D.at<double>(0, 7) = -0.0709;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.4717 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.7695;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.3838 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.0355;
|
|
|
|
|
Lo_D.at<double>(0, 12) = -0.0320;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.0500 ;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.0058 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = -0.0204;
|
|
|
|
|
Lo_D.at<double>(0, 16) = -0.0008;
|
|
|
|
|
Lo_D.at<double>(0, 17) = 0.0046 ;
|
|
|
|
|
Lo_D.at<double>(0, 18) = 0.0001 ;
|
|
|
|
|
Lo_D.at<double>(0, 19) = -0.0005;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 20, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = 0.0005 ;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.0001 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.0046;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.0008;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0204 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.0058 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0500;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0320;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0355 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.3838;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.7695;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.4717 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0709 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.1595;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0116;
|
|
|
|
|
Hi_D.at<double>(0, 15) = 0.0459 ;
|
|
|
|
|
Hi_D.at<double>(0, 16) = 0.0015 ;
|
|
|
|
|
Hi_D.at<double>(0, 17) = -0.0086;
|
|
|
|
|
Hi_D.at<double>(0, 18) = -0.0001;
|
|
|
|
|
Hi_D.at<double>(0, 19) = 0.0008;
|
|
|
|
|
}
|
|
|
|
|
// dbN С<><D0A1>
|
|
|
|
|
else if (wname == "db1")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.7071;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 2, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.7071;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.7071;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db2")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 4, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.1294;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.2241;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.8365;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.4830;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 4, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.4830;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.8365;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.2241;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.1294;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db3")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0352;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0854;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.1350;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.4599;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.8069;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.3327;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.3327;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.8069;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.4599;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.1350;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0854;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.0352;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db4")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 8, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0106;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0329 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0308 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.1870;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0280;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.6309 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.7148 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.2304 ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 8, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.2304;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.7148 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.6309;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.0280;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.1870 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.0308 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0329;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0106;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db5")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 10, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0033 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0126;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0062;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0776 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0322;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.2423;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.1384 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.7243 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.6038 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.1601;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 10, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.1601;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.6038 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.7243;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.1384 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.2423 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.0322;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0776;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0062;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0126 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.0033;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db6")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0011;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0048 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0006 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0316;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0275 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.0975 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.1298;
|
|
|
|
|
Lo_D.at<double>(0, 7) = -0.2263;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.3153 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.7511;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.4946;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.1115;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.1115;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.4946 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.7511;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.3153 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.2263 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.1298;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0975;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.0275 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0316 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.0006 ;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0048;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.0011;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db7")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 14, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0004 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0018;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0004 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0126 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0166;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0380;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0806 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0713 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.2240;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.1439;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.4698;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.7291;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.3965;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.0779;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 14, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0779;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.3965 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.7291;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.4698 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.1439 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.2240;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0713;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.0806 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0380 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.0166;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0126;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0004 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0018 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = 0.0004 ;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db8")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 16, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0001;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0007 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0004;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0049;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0087 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.0140 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.0441;
|
|
|
|
|
Lo_D.at<double>(0, 7) = -0.0174;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.1287 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.0005;
|
|
|
|
|
Lo_D.at<double>(0, 10) = -0.2840;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.0158;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.5854 ;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.6756 ;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.3129 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.0544;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 16, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0544;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.3129 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.6756;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.5854 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0158 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.2840;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0005;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.1287 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0174 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.0441;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0140;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0087 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0049 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.0004;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0007;
|
|
|
|
|
Hi_D.at<double>(0, 15) = -0.0001;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db9")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = 0.0000 ;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0003;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0002 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0018 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0043;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0047;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0224 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0003 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0676;
|
|
|
|
|
Lo_D.at<double>(0, 9) = 0.0307;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.1485 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = -0.0968;
|
|
|
|
|
Lo_D.at<double>(0, 12) = -0.2933;
|
|
|
|
|
Lo_D.at<double>(0, 13) = 0.1332 ;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.6573 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.6048 ;
|
|
|
|
|
Lo_D.at<double>(0, 16) = 0.2438 ;
|
|
|
|
|
Lo_D.at<double>(0, 17) = 0.0381;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0381;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.2438 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.6048;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.6573 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.1332;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.2933;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.0968 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.1485 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.0307;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.0676;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0003;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0224 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0047 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.0043;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0018;
|
|
|
|
|
Hi_D.at<double>(0, 15) = 0.0002 ;
|
|
|
|
|
Hi_D.at<double>(0, 16) = 0.0003 ;
|
|
|
|
|
Hi_D.at<double>(0, 17) = 0.0000;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "db10")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 20, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 1) = 0.0001 ;
|
|
|
|
|
Lo_D.at<double>(0, 2) = -0.0001;
|
|
|
|
|
Lo_D.at<double>(0, 3) = -0.0007;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.0020 ;
|
|
|
|
|
Lo_D.at<double>(0, 5) = 0.0014 ;
|
|
|
|
|
Lo_D.at<double>(0, 6) = -0.0107;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0036 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.0332 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0295;
|
|
|
|
|
Lo_D.at<double>(0, 10) = -0.0714;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.0931 ;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.1274 ;
|
|
|
|
|
Lo_D.at<double>(0, 13) = -0.1959;
|
|
|
|
|
Lo_D.at<double>(0, 14) = -0.2498;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.2812 ;
|
|
|
|
|
Lo_D.at<double>(0, 16) = 0.6885 ;
|
|
|
|
|
Lo_D.at<double>(0, 17) = 0.5272 ;
|
|
|
|
|
Lo_D.at<double>(0, 18) = 0.1882 ;
|
|
|
|
|
Lo_D.at<double>(0, 19) = 0.0267;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 20, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0267;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.1882 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.5272;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.6885 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.2812;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.2498;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.1959 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.1274 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.0931;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.0714;
|
|
|
|
|
Hi_D.at<double>(0, 10) = 0.0295 ;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0332 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = -0.0036;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.0107;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0014;
|
|
|
|
|
Hi_D.at<double>(0, 15) = 0.0020 ;
|
|
|
|
|
Hi_D.at<double>(0, 16) = 0.0007 ;
|
|
|
|
|
Hi_D.at<double>(0, 17) = -0.0001;
|
|
|
|
|
Hi_D.at<double>(0, 18) = -0.0001;
|
|
|
|
|
Hi_D.at<double>(0, 19) = -0.0000;
|
|
|
|
|
}
|
|
|
|
|
// coifletС<74><D0A1>
|
|
|
|
|
else if (wname == "coif1")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0157;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0727;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.3849;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.8526;
|
|
|
|
|
Lo_D.at<double>(0, 4) = 0.3379;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0727;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 6, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = 0.0727;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.3379;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.8526;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.3849;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0727;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.0157;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "coif2")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0007;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0018;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0056 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0237 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0594;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0765;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.4170 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.8127 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = 0.3861 ;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0674;
|
|
|
|
|
Lo_D.at<double>(0, 10) = -0.0415;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.0164;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 12, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0164;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0415;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.0674 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.3861 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.8127;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.4170 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.0765 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0594;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.0237;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.0056;
|
|
|
|
|
Hi_D.at<double>(0, 10) = 0.0018 ;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.0007;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "coif3")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0001;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0005 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0011 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0026;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0090;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0159 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0346 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0823;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0718;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.4285 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.7938 ;
|
|
|
|
|
Lo_D.at<double>(0, 12) = 0.4052 ;
|
|
|
|
|
Lo_D.at<double>(0, 13) = -0.0611;
|
|
|
|
|
Lo_D.at<double>(0, 14) = -0.0658;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.0235 ;
|
|
|
|
|
Lo_D.at<double>(0, 16) = 0.0078 ;
|
|
|
|
|
Lo_D.at<double>(0, 17) = -0.0038;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 18, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = 0.0038 ;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.0078 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.0235;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.0658;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0611 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.4052 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.7938;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.4285 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0718 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = -0.0823;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.0346;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.0159 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0090 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.0026;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0011;
|
|
|
|
|
Hi_D.at<double>(0, 15) = 0.0005 ;
|
|
|
|
|
Hi_D.at<double>(0, 16) = 0.0001 ;
|
|
|
|
|
Hi_D.at<double>(0, 17) = -0.0000;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "coif4")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 24, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0000 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0001 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0003;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0006;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0013 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0038 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0057;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0152;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.0251 ;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.0393 ;
|
|
|
|
|
Lo_D.at<double>(0, 12) = -0.0962;
|
|
|
|
|
Lo_D.at<double>(0, 13) = -0.0666;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.4344 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.7822 ;
|
|
|
|
|
Lo_D.at<double>(0, 16) = 0.4153 ;
|
|
|
|
|
Lo_D.at<double>(0, 17) = -0.0561;
|
|
|
|
|
Lo_D.at<double>(0, 18) = -0.0813;
|
|
|
|
|
Lo_D.at<double>(0, 19) = 0.0267 ;
|
|
|
|
|
Lo_D.at<double>(0, 20) = 0.0161 ;
|
|
|
|
|
Lo_D.at<double>(0, 21) = -0.0073;
|
|
|
|
|
Lo_D.at<double>(0, 22) = -0.0016;
|
|
|
|
|
Lo_D.at<double>(0, 23) = 0.0009;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 24, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = -0.0009;
|
|
|
|
|
Hi_D.at<double>(0, 1) = -0.0016;
|
|
|
|
|
Hi_D.at<double>(0, 2) = 0.0073 ;
|
|
|
|
|
Hi_D.at<double>(0, 3) = 0.0161 ;
|
|
|
|
|
Hi_D.at<double>(0, 4) = -0.0267;
|
|
|
|
|
Hi_D.at<double>(0, 5) = -0.0813;
|
|
|
|
|
Hi_D.at<double>(0, 6) = 0.0561 ;
|
|
|
|
|
Hi_D.at<double>(0, 7) = 0.4153 ;
|
|
|
|
|
Hi_D.at<double>(0, 8) = -0.7822;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.4344;
|
|
|
|
|
Hi_D.at<double>(0, 10) = 0.0666 ;
|
|
|
|
|
Hi_D.at<double>(0, 11) = -0.0962;
|
|
|
|
|
Hi_D.at<double>(0, 12) = -0.0393;
|
|
|
|
|
Hi_D.at<double>(0, 13) = 0.0251 ;
|
|
|
|
|
Hi_D.at<double>(0, 14) = 0.0152 ;
|
|
|
|
|
Hi_D.at<double>(0, 15) = -0.0057;
|
|
|
|
|
Hi_D.at<double>(0, 16) = -0.0038;
|
|
|
|
|
Hi_D.at<double>(0, 17) = 0.0013 ;
|
|
|
|
|
Hi_D.at<double>(0, 18) = 0.0006 ;
|
|
|
|
|
Hi_D.at<double>(0, 19) = -0.0003;
|
|
|
|
|
Hi_D.at<double>(0, 20) = -0.0001;
|
|
|
|
|
Hi_D.at<double>(0, 21) = 0.0000 ;
|
|
|
|
|
Hi_D.at<double>(0, 22) = 0.0000 ;
|
|
|
|
|
Hi_D.at<double>(0, 23) = -0.0000;
|
|
|
|
|
}
|
|
|
|
|
else if (wname == "coif5")
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Lo_D
|
|
|
|
|
Lo_D = cv::Mat(1, 30, CV_64FC1);
|
|
|
|
|
Lo_D.at<double>(0, 0) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 1) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 2) = 0.0000 ;
|
|
|
|
|
Lo_D.at<double>(0, 3) = 0.0000 ;
|
|
|
|
|
Lo_D.at<double>(0, 4) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 5) = -0.0000;
|
|
|
|
|
Lo_D.at<double>(0, 6) = 0.0001 ;
|
|
|
|
|
Lo_D.at<double>(0, 7) = 0.0003 ;
|
|
|
|
|
Lo_D.at<double>(0, 8) = -0.0006;
|
|
|
|
|
Lo_D.at<double>(0, 9) = -0.0017;
|
|
|
|
|
Lo_D.at<double>(0, 10) = 0.0024;
|
|
|
|
|
Lo_D.at<double>(0, 11) = 0.0068 ;
|
|
|
|
|
Lo_D.at<double>(0, 12) = -0.0092;
|
|
|
|
|
Lo_D.at<double>(0, 13) = -0.0198;
|
|
|
|
|
Lo_D.at<double>(0, 14) = 0.0327 ;
|
|
|
|
|
Lo_D.at<double>(0, 15) = 0.0413 ;
|
|
|
|
|
Lo_D.at<double>(0, 16) = -0.1056;
|
|
|
|
|
Lo_D.at<double>(0, 17) = -0.0620;
|
|
|
|
|
Lo_D.at<double>(0, 18) = 0.4380 ;
|
|
|
|
|
Lo_D.at<double>(0, 19) = 0.7743;
|
|
|
|
|
Lo_D.at<double>(0, 20) = 0.4216 ;
|
|
|
|
|
Lo_D.at<double>(0, 21) = -0.0520;
|
|
|
|
|
Lo_D.at<double>(0, 22) = -0.0919;
|
|
|
|
|
Lo_D.at<double>(0, 23) = 0.0282 ;
|
|
|
|
|
Lo_D.at<double>(0, 24) = 0.0234;
|
|
|
|
|
Lo_D.at<double>(0, 25) = -0.0101;
|
|
|
|
|
Lo_D.at<double>(0, 26) = -0.0042;
|
|
|
|
|
Lo_D.at<double>(0, 27) = 0.0022 ;
|
|
|
|
|
Lo_D.at<double>(0, 28) = 0.0004 ;
|
|
|
|
|
Lo_D.at<double>(0, 29) = -0.0002;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Hi_D
|
|
|
|
|
Hi_D = cv::Mat(1, 30, CV_64FC1);
|
|
|
|
|
Hi_D.at<double>(0, 0) = 0.0002 ;
|
|
|
|
|
Hi_D.at<double>(0, 1) = 0.0004 ;
|
|
|
|
|
Hi_D.at<double>(0, 2) = -0.0022;
|
|
|
|
|
Hi_D.at<double>(0, 3) = -0.0042;
|
|
|
|
|
Hi_D.at<double>(0, 4) = 0.0101 ;
|
|
|
|
|
Hi_D.at<double>(0, 5) = 0.0234 ;
|
|
|
|
|
Hi_D.at<double>(0, 6) = -0.0282;
|
|
|
|
|
Hi_D.at<double>(0, 7) = -0.0919;
|
|
|
|
|
Hi_D.at<double>(0, 8) = 0.0520 ;
|
|
|
|
|
Hi_D.at<double>(0, 9) = 0.4216 ;
|
|
|
|
|
Hi_D.at<double>(0, 10) = -0.7743;
|
|
|
|
|
Hi_D.at<double>(0, 11) = 0.4380 ;
|
|
|
|
|
Hi_D.at<double>(0, 12) = 0.0620 ;
|
|
|
|
|
Hi_D.at<double>(0, 13) = -0.1056;
|
|
|
|
|
Hi_D.at<double>(0, 14) = -0.0413;
|
|
|
|
|
Hi_D.at<double>(0, 15) = 0.0327 ;
|
|
|
|
|
Hi_D.at<double>(0, 16) = 0.0198 ;
|
|
|
|
|
Hi_D.at<double>(0, 17) = -0.0092;
|
|
|
|
|
Hi_D.at<double>(0, 18) = -0.0068;
|
|
|
|
|
Hi_D.at<double>(0, 19) = 0.0024;
|
|
|
|
|
Hi_D.at<double>(0, 20) = 0.0017 ;
|
|
|
|
|
Hi_D.at<double>(0, 21) = -0.0006;
|
|
|
|
|
Hi_D.at<double>(0, 22) = -0.0003;
|
|
|
|
|
Hi_D.at<double>(0, 23) = 0.0001 ;
|
|
|
|
|
Hi_D.at<double>(0, 24) = -0.0000;
|
|
|
|
|
Hi_D.at<double>(0, 25) = -0.0000;
|
|
|
|
|
Hi_D.at<double>(0, 26) = -0.0000;
|
|
|
|
|
Hi_D.at<double>(0, 27) = -0.0000;
|
|
|
|
|
Hi_D.at<double>(0, 28) = -0.0000;
|
|
|
|
|
Hi_D.at<double>(0, 29) = -0.0000;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD> waveDec2() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> img <20><><EFBFBD><EFBFBD> level <20><><EFBFBD>ֽ⣬<D6BD>õ<EFBFBD><C3B5><EFBFBD>Ӧ<EFBFBD>ķֽ<C4B7>ϵ<EFBFBD><CFB5>
|
|
|
|
|
bool waveDec2(std::deque<cv::Mat> &coef, std::deque<cv::Vec2i> &scf, const cv::Mat img, const string wname, const unsigned int level)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (img.empty() == true || (img.type() != CV_8UC1) // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD>
|
|
|
|
|
|| level < 1 )
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
cv::Mat Lo_D; // <20><>Ƶ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
|
|
|
|
cv::Mat Hi_D; // <20><>Ƶ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
|
|
|
|
|
|
|
|
|
if (!getWaveDecFilter(Lo_D, Hi_D, wname))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (Lo_D.empty() == true || Hi_D.empty() == true
|
|
|
|
|
|| Lo_D.size != Hi_D.size)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Ϊ<><CEAA>֤<EFBFBD><D6A4><EFBFBD>㾫<EFBFBD><E3BEAB>, <20><><EFBFBD><EFBFBD>double<6C><65><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
cv::Mat img_d;
|
|
|
|
|
img.convertTo(img_d, CV_64FC1);
|
|
|
|
|
|
|
|
|
|
// ת<><D7AA><EFBFBD>ж<EFBFBD>
|
|
|
|
|
if (img_d.empty() == true)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
coef.clear();
|
|
|
|
|
scf.clear();
|
|
|
|
|
|
|
|
|
|
// С<><D0A1><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
cv::Mat cA; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD>ַֽ<D6B7>ϵ<EFBFBD><CFB5>
|
|
|
|
|
cv::Mat cV; // <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
cv::Mat cH; // ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
cv::Mat cD; // <20>Խ<EFBFBD><D4BD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ֽ<EFBFBD>ϵ<EFBFBD><CFB5>
|
|
|
|
|
|
|
|
|
|
// <20><>scf<63><66>ֵ ԭͼ<D4AD><CDBC><EFBFBD>ߴ<EFBFBD>
|
|
|
|
|
cv::Vec2i vec;
|
|
|
|
|
vec[0] = img_d.rows;
|
|
|
|
|
vec[1] = img_d.cols;
|
|
|
|
|
scf.push_front(vec);
|
|
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < level; i++)
|
|
|
|
|
{
|
|
|
|
|
bool ret = dwt2(cA, cV, cH, cD, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
img_d, Lo_D, Hi_D); // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
if (ret == false)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cA.copyTo(img_d); // <20><><EFBFBD>µ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>img_d
|
|
|
|
|
|
|
|
|
|
// <20><>scf<63><66>ֵ cA(cV, cH, cD)<29>ߴ<EFBFBD>
|
|
|
|
|
vec[0] = img_d.rows;
|
|
|
|
|
vec[1] = img_d.cols;
|
|
|
|
|
scf.push_front(vec);
|
|
|
|
|
|
|
|
|
|
// <20><>coef<65>д洢<D0B4><E6B4A2>cV, cH, cD
|
|
|
|
|
coef.push_front(cD);
|
|
|
|
|
coef.push_front(cH);
|
|
|
|
|
coef.push_front(cV);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>scf<63><66>ֵ cA <20>ߴ<EFBFBD>
|
|
|
|
|
vec[0] = img_d.rows;
|
|
|
|
|
vec[1] = img_d.cols;
|
|
|
|
|
scf.push_front(vec);
|
|
|
|
|
|
|
|
|
|
// <20><>cA<63><41>ֵ<EFBFBD><D6B5>coef
|
|
|
|
|
coef.push_front(cA);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|