Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
IVT
src
DataProcessing
MeanFilter.cpp
Go to the documentation of this file.
1
// ****************************************************************************
2
// This file is part of the Integrating Vision Toolkit (IVT).
3
//
4
// The IVT is maintained by the Karlsruhe Institute of Technology (KIT)
5
// (www.kit.edu) in cooperation with the company Keyetech (www.keyetech.de).
6
//
7
// Copyright (C) 2014 Karlsruhe Institute of Technology (KIT).
8
// All rights reserved.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are met:
12
//
13
// 1. Redistributions of source code must retain the above copyright
14
// notice, this list of conditions and the following disclaimer.
15
//
16
// 2. Redistributions in binary form must reproduce the above copyright
17
// notice, this list of conditions and the following disclaimer in the
18
// documentation and/or other materials provided with the distribution.
19
//
20
// 3. Neither the name of the KIT nor the names of its contributors may be
21
// used to endorse or promote products derived from this software
22
// without specific prior written permission.
23
//
24
// THIS SOFTWARE IS PROVIDED BY THE KIT AND CONTRIBUTORS “AS IS” AND ANY
25
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
// DISCLAIMED. IN NO EVENT SHALL THE KIT OR CONTRIBUTORS BE LIABLE FOR ANY
28
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
// ****************************************************************************
35
// ****************************************************************************
36
// Filename: MeanFilter.cpp
37
// Author: Pedram Azad
38
// Date: 2006
39
// ****************************************************************************
40
41
42
// ****************************************************************************
43
// Includes
44
// ****************************************************************************
45
46
#include <new>
// for explicitly using correct new/delete operators on VC DSPs
47
48
#include "
MeanFilter.h
"
49
50
#include <stdio.h>
51
52
53
54
// ****************************************************************************
55
// Constructor / Destructor
56
// ****************************************************************************
57
58
CMeanFilter::CMeanFilter
(
int
nKernelSize)
59
{
60
m_pValues
= 0;
61
m_nPosition
= 0;
62
m_nElementsFilled
= 0;
63
m_nKernelSize
= 0;
64
65
SetKernelSize
(nKernelSize);
66
}
67
68
CMeanFilter::~CMeanFilter
()
69
{
70
if
(
m_pValues
)
71
delete
[]
m_pValues
;
72
}
73
74
75
// ****************************************************************************
76
// Methods
77
// ****************************************************************************
78
79
void
CMeanFilter::SetKernelSize
(
int
nKernelSize)
80
{
81
if
(nKernelSize <= 0)
82
{
83
printf(
"error: nKernelSize must be greater 0 for CMeanFilter::SetKernelSize\n"
);
84
return
;
85
}
86
87
m_nKernelSize
= nKernelSize;
88
89
if
(
m_pValues
)
90
delete
[]
m_pValues
;
91
92
m_pValues
=
new
float
[nKernelSize];
93
94
Reset
();
95
}
96
97
void
CMeanFilter::Reset
()
98
{
99
for
(
int
i = 0; i <
m_nKernelSize
; i++)
100
m_pValues
[i] = 0.0f;
// this is not really necessary...
101
102
m_nPosition
= 0;
103
m_nElementsFilled
= 0;
104
}
105
106
float
CMeanFilter::Filter
(
float
x
)
107
{
108
if
(
m_nKernelSize
<= 0)
109
{
110
printf(
"error: CMeanFilter::Filter called, but m_nKernelSize is invalid (%i)\n"
,
m_nKernelSize
);
111
return
x
;
112
}
113
114
m_pValues
[
m_nPosition
++ %
m_nKernelSize
] =
x
;
115
if
(
m_nElementsFilled
<
m_nKernelSize
)
116
m_nElementsFilled
++;
117
118
float
sum = 0.0f;
119
for
(
int
i = 0; i <
m_nElementsFilled
; i++)
120
sum +=
m_pValues
[i];
121
122
return
sum /
m_nElementsFilled
;
123
}
CMeanFilter::Filter
float Filter(float x)
Definition:
MeanFilter.cpp:106
CMeanFilter::m_nElementsFilled
int m_nElementsFilled
Definition:
MeanFilter.h:83
CMeanFilter::CMeanFilter
CMeanFilter(int nKernelSize)
Definition:
MeanFilter.cpp:58
CMeanFilter::m_pValues
float * m_pValues
Definition:
MeanFilter.h:80
CMeanFilter::SetKernelSize
void SetKernelSize(int nKernelSize)
Definition:
MeanFilter.cpp:79
x
GLenum GLint x
Definition:
glext.h:3125
CMeanFilter::Reset
void Reset()
Definition:
MeanFilter.cpp:97
CMeanFilter::m_nPosition
int m_nPosition
Definition:
MeanFilter.h:81
MeanFilter.h
CMeanFilter::~CMeanFilter
~CMeanFilter()
Definition:
MeanFilter.cpp:68
CMeanFilter::m_nKernelSize
int m_nKernelSize
Definition:
MeanFilter.h:82
asr_ivt
Author(s): Allgeyer Tobias, Hutmacher Robin, Kleinert Daniel, Meißner Pascal, Scholz Jonas, Stöckle Patrick
autogenerated on Mon Dec 2 2019 03:47:28