summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-02-13 15:30:20 +0100
committerErich Eckner <git@eckner.net>2018-02-13 15:30:20 +0100
commit63b735149fc577c02c788958cbade7a13c41b536 (patch)
treeec11e7b6baabb5cf83a6ef8bf664b9c2fe015660 /epostunit.pas
parent334ddf6f8be18c2f60d178dad1663d74907440d8 (diff)
downloadepost-63b735149fc577c02c788958cbade7a13c41b536.tar.xz
neue Hintergrundabzugsart "haaVertikaleMedianMittel"
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas56
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;