From 63b735149fc577c02c788958cbade7a13c41b536 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 13 Feb 2018 15:30:20 +0100 Subject: neue Hintergrundabzugsart "haaVertikaleMedianMittel" --- epostunit.pas | 56 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 15 deletions(-) (limited to 'epostunit.pas') 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; -- cgit v1.2.3-70-g09d2