[pktools] 289/375: pkkalman, back from the states
Bas Couwenberg
sebastic at xs4all.nl
Wed Dec 3 21:54:22 UTC 2014
This is an automated email from the git hooks/post-receive script.
sebastic-guest pushed a commit to branch upstream-master
in repository pktools.
commit d91154e52eb21d5b1bf0228c9848b7f584d794ef
Author: user <user at osgeolive.(none)>
Date: Wed Jun 18 15:22:07 2014 +0200
pkkalman, back from the states
---
src/algorithms/Filter.cc | 9 +++++++++
src/algorithms/Filter.h | 4 ++++
src/apps/pkkalman.cc | 22 ++++++++++++----------
3 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/src/algorithms/Filter.cc b/src/algorithms/Filter.cc
index 4095566..eb2ddb4 100644
--- a/src/algorithms/Filter.cc
+++ b/src/algorithms/Filter.cc
@@ -284,6 +284,15 @@ void filter::Filter::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, s
filter(input,output,down,offset);
}
+// void filter::Filter::smoothnodata(const ImgReaderGdal& input, ImgWriterGdal& output, short dim, short down, int offset)
+// {
+// assert(dim>0);
+// m_taps.resize(dim);
+// for(int itap=0;itap<dim;++itap)
+// m_taps[itap]=1.0/dim;
+// filter(input,output,down,offset);
+// }
+
void filter::Filter::filter(const ImgReaderGdal& input, ImgWriterGdal& output, short down, int offset)
{
Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
diff --git a/src/algorithms/Filter.h b/src/algorithms/Filter.h
index 38ce28e..dc4cc12 100644
--- a/src/algorithms/Filter.h
+++ b/src/algorithms/Filter.h
@@ -419,6 +419,7 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
for(i=offset;i<m_taps.size()/2;++i){
if((i-offset)%down)
continue;
+ //todo:introduce nodata
output[(i-offset+down-1)/down]=m_taps[m_taps.size()/2]*input[i];
for(int t=1;t<=m_taps.size()/2;++t)
output[(i-offset+down-1)/down]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i+t];
@@ -427,6 +428,7 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
for(i=offset+m_taps.size()/2;i<input.size()-m_taps.size()/2;++i){
if((i-offset)%down)
continue;
+ //todo:introduce nodata
T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];
T include=(m_taps.back())*input[i+m_taps.size()/2];
output[(i-offset+down-1)/down]=0;
@@ -437,7 +439,9 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
for(i=input.size()-m_taps.size()/2;i<input.size();++i){
if((i-offset)%down)
continue;
+ //todo:introduce nodata
output[(i-offset+down-1)/down]=m_taps[m_taps.size()/2]*input[i];
+ //todo:introduce nodata
for(int t=1;t<=m_taps.size()/2;++t)
output[(i-offset+down-1)/down]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i-t];
}
diff --git a/src/apps/pkkalman.cc b/src/apps/pkkalman.cc
index dd666c2..0d53bcf 100644
--- a/src/apps/pkkalman.cc
+++ b/src/apps/pkkalman.cc
@@ -276,7 +276,7 @@ int main(int argc,char **argv) {
if(uncertObs>eps_opt[0]){
double noemer=uncertObs*uncertObs+stdDev*stdDev;
estWriteBuffer[icol]*=uncertModel_opt[0]*stdDev*stdDev/noemer;
- estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;
+ estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;//todo:check! error?
}
else{
//no need to fill write buffer (already done in imgReaderObs.readData
@@ -377,10 +377,11 @@ int main(int argc,char **argv) {
double certNorm=(errMod*errMod+errObs*errObs);
double certMod=errObs*errObs/certNorm;
double certObs=errMod*errMod/certNorm;
- // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
- // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
- estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
- estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
+ double regTime=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+ double regSensor=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+ estWriteBuffer[icol]=regTime+regSensor;
+ // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
+ // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
double totalUncertainty=0;
if(errMod<eps_opt[0])
totalUncertainty=errObs;
@@ -493,7 +494,7 @@ int main(int argc,char **argv) {
if(uncertObs>eps_opt[0]){
double noemer=uncertObs*uncertObs+stdDev*stdDev;
estWriteBuffer[icol]*=uncertModel_opt[0]*stdDev*stdDev/noemer;
- estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;
+ estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;//todo: check error?
}
else{
//no need to fill write buffer (already done in imgReaderObs.readData
@@ -594,10 +595,11 @@ int main(int argc,char **argv) {
double certNorm=(errMod*errMod+errObs*errObs);
double certMod=errObs*errObs/certNorm;
double certObs=errMod*errMod/certNorm;
- // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
- // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
- estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
- estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
+ double regTime=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+ double regSensor=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+ estWriteBuffer[icol]=regTime+regSensor;
+ // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
+ // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
double totalUncertainty=0;
if(errMod<eps_opt[0])
totalUncertainty=errObs;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pktools.git
More information about the Pkg-grass-devel
mailing list