diff options
author | Erich Eckner <git@eckner.net> | 2018-02-13 15:30:20 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-02-13 15:30:20 +0100 |
commit | 63b735149fc577c02c788958cbade7a13c41b536 (patch) | |
tree | ec11e7b6baabb5cf83a6ef8bf664b9c2fe015660 /epostunit.pas | |
parent | 334ddf6f8be18c2f60d178dad1663d74907440d8 (diff) | |
download | epost-63b735149fc577c02c788958cbade7a13c41b536.tar.xz |
neue Hintergrundabzugsart "haaVertikaleMedianMittel"
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/epostunit.pas b/epostunit.pas index 893c6cc..244931e 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -441,10 +441,10 @@ type procedure stExecute; override; end; tHintergrungIntegrationsThread = class(tLogThread) - we: tWerte; - xMi,xMa,tMi,tMa: longint; - hg: pTExtendedArray; - constructor create(werte: tWerte; xMin,xMax,tMin,tMax: longint; hintergrund: pTExtendedArray); + we: tWerte; + xMi,xMa,tMi,tMa,tRa: longint; + hg: pTExtendedArray; + constructor create(werte: tWerte; xMin,xMax,tMin,tMax,tRand: longint; hintergrund: pTExtendedArray); procedure stExecute; override; end; tKantenExtraktionsThread = class(tLogThread) @@ -2268,7 +2268,7 @@ begin setLength(hintergrund,1); hintergrund[0]:=_minW; end; - haaVertikaleMittel: begin + haaVertikaleMittel,haaVertikaleMedianMittel: begin setLength(hintergrund,_xSteps); if sT then for i:=0 to length(hintergrund)-1 do @@ -2283,6 +2283,7 @@ begin round(_xSteps/length(hintergrundIntegrationsThreads)*(i+1)-1), round(hintergrundAbzugsArt.parameter[0]), round(hintergrundAbzugsArt.parameter[1]), + round(hintergrundAbzugsArt.parameter[1+byte(hintergrundAbzugsArt.art=haaVertikaleMedianMittel)]*byte(hintergrundAbzugsArt.art=haaVertikaleMedianMittel)), @hintergrund ); repeat @@ -4212,12 +4213,18 @@ begin bekannteBefehle.free; exit; end; - if haDummy.art<>haaVertikaleMittel then begin + if not (haDummy.art in [haaVertikaleMittel,haaVertikaleMedianMittel]) then begin haDummy.art:=haaVertikaleMittel; setLength(haDummy.parameter,2); haDummy.parameter[0]:=3; haDummy.parameter[1]:=3.141; gibAus('Syntaxfehler beim Entfernen von Artefakten - erwartet: "durch horizontalen Verlauf teilen: '+tHintergrundAbzugsArtToStr(haDummy)+'"',3); + haDummy.art:=haaVertikaleMedianMittel; + setLength(haDummy.parameter,3); + haDummy.parameter[0]:=3; + haDummy.parameter[1]:=3.141; + haDummy.parameter[2]:=1e-3; + gibAus('oder: "durch horizontalen Verlauf teilen: '+tHintergrundAbzugsArtToStr(haDummy)+'"',3); bekannteBefehle.free; exit; end; @@ -4262,10 +4269,19 @@ begin exit; if fensters[false] is tVerlaufTeilFenster then begin - haDummy.art:=haaVertikaleMittel; - setLength(haDummy.parameter,2); - haDummy.parameter[0]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMin); - haDummy.parameter[1]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMax); + if (fensters[false] as tVerlaufTeilFenster).tRand<0 then begin + haDummy.art:=haaVertikaleMittel; + setLength(haDummy.parameter,2); + haDummy.parameter[0]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMin); + haDummy.parameter[1]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMax); + end + else begin + haDummy.art:=haaVertikaleMedianMittel; + setLength(haDummy.parameter,3); + haDummy.parameter[0]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMin); + haDummy.parameter[1]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tMax); + haDummy.parameter[2]:=kont2disk('t',(fensters[false] as tVerlaufTeilFenster).tRand); + end; if not ermittleHintergrund(sT,threads,haDummy,fensters[false].werte) then exit; for i:=0 to length(fensters[false].werte)-1 do @@ -8388,7 +8404,7 @@ end; // tHintergrungIntegrationsThread ********************************************** -constructor tHintergrungIntegrationsThread.create(werte: tWerte; xMin,xMax,tMin,tMax: longint; hintergrund: pTExtendedArray); +constructor tHintergrungIntegrationsThread.create(werte: tWerte; xMin,xMax,tMin,tMax,tRand: longint; hintergrund: pTExtendedArray); begin inherited create; we:=werte; @@ -8396,9 +8412,10 @@ begin xMa:=xMax; tMi:=tMin; tMa:=tMax; + tRa:=tRand; hg:=hintergrund; suspended:=false; - gibAus('HintergrungIntegrationsThread erzeugt: '+intToStr(xMin)+'-'+intToStr(xMax)+' '+intToStr(tMin)+'-'+intToStr(tMax),1); + gibAus('HintergrungIntegrationsThread erzeugt: '+intToStr(xMin)+'-'+intToStr(xMax)+' '+intToStr(tMin)+'-'+intToStr(tMax)+' ('+intToStr(tRand)+')',1); end; procedure tHintergrungIntegrationsThread.stExecute; @@ -8406,11 +8423,20 @@ begin gibAus('HintergrungIntegrationsThread gestartet',1); case we.genauigkeit of gSingle: - we.sWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); + if tRa>0 then + we.sWerte.integriereVertikalMitRand(xMi,xMa,tMi,tMa,tRa,hg) + else + we.sWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); gDouble: - we.dWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); + if tRa>0 then + we.dWerte.integriereVertikalMitRand(xMi,xMa,tMi,tMa,tRa,hg) + else + we.dWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); gExtended: - we.eWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); + if tRa>0 then + we.eWerte.integriereVertikalMitRand(xMi,xMa,tMi,tMa,tRa,hg) + else + we.eWerte.integriereVertikal(xMi,xMa,tMi,tMa,hg); end{of case}; gibAus('HintergrungIntegrationsThread beendet',1); end; |