Project

General

Profile

Statistics
| Branch: | Revision:

root / vision / cvblobs8.3 / BlobProperties.cpp @ b11b2b30

History | View | Annotate | Download (1.62 KB)

1 b11b2b30 Tom Mullins
#include "BlobProperties.h"
2
3
4
/**
5
- FUNCI?: GetPerimeter
6
- FUNCIONALITAT: Get perimeter from chain code. Diagonals sum sqrt(2) and horizontal and vertical codes 1
7
- PAR?METRES:
8
        - 
9
- RESULTAT:
10
        - 
11
- RESTRICCIONS:
12
        - 
13
- AUTOR: rborras
14
- DATA DE CREACI?: 2008/04/30
15
- MODIFICACI?: Data. Autor. Descripci?.
16
- NOTA: Algorithm derived from "Methods to estimate area and perimeters of blob-like objects: A comparison", L.Yang
17
*/
18
#define SQRT2 1.414213562
19
20
/**
21
- FUNCI?: GetPerimeter
22
- FUNCIONALITAT: Get blob area, ie. external contour area minus internal contours area
23
- PAR?METRES:
24
        - 
25
- RESULTAT:
26
        - 
27
- RESTRICCIONS:
28
        - 
29
- AUTOR: rborras
30
- DATA DE CREACI?: 2008/04/30
31
- MODIFICACI?: Data. Autor. Descripci?.
32
*/
33
34
double CBlobProperties::GetArea()
35
{
36
        double area;
37
        t_contourList::iterator itContour; 
38
39
        area = m_externalContour.GetArea();
40
41
        itContour = m_internalContours.begin();
42
        
43
        while (itContour != m_internalContours.end() )
44
        {
45
                area += (*itContour).GetArea();
46
                itContour++;
47
        }
48
        return area;
49
}
50
51
/**
52
- FUNCI?: GetPerimeter
53
- FUNCIONALITAT: Get blob perimeter, ie. sum of the lenght of all the contours
54
- PAR?METRES:
55
        - 
56
- RESULTAT:
57
        - 
58
- RESTRICCIONS:
59
        - 
60
- AUTOR: rborras
61
- DATA DE CREACI?: 2008/04/30
62
- MODIFICACI?: Data. Autor. Descripci?.
63
*/
64
double CBlobProperties::GetPerimeter()
65
{
66
        double perimeter;
67
        t_contourList::iterator itContour; 
68
69
        perimeter = m_externalContour.GetPerimeter();
70
71
        itContour = m_internalContours.begin();
72
        
73
        while (itContour != m_internalContours.end() )
74
        {
75
                perimeter += (*itContour).GetPerimeter();
76
                itContour++;
77
        }
78
        return perimeter;
79
}
80
81