18 #ifndef IMAGE_PRIMITIVES_H
19 #define IMAGE_PRIMITIVES_H
21 #include "../ami_lens_distortion/lens_distortion_model.h"
37 std::vector< point2d<double> > points ;
39 std::vector<line_points> lines ;
46 std::vector< point2d<double> > projected_3dpoints ;
53 void initialize(
unsigned int npoints=0,
unsigned int nlines=0,
54 unsigned int nellipses=0);
56 bool IsProjected_3dpointsInvalid ();
65 return distortion.get_distortion_center();}
73 std::vector<point2d<double> > &
get_points(){
return points;}
75 const std::vector<point2d<double> > &get_points()
const {
return points;}
82 std::vector<line_points> &
get_lines(){
return lines;}
88 const std::vector<line_points> &get_lines()
const {
return lines;}
104 if(points.size()>0) points.clear(); points=p2;}
112 {
if(lines.size()>0) lines.clear();lines=lines2;}
122 int read (
char *name);
130 f = fopen(name,
"w+");
135 fprintf(f,
"DISTORTION MODEL\n");
136 fprintf(f,
"distortion center = (%.20g %.20g)\n",distortion.get_distortion_center().x,distortion.get_distortion_center().y);
137 fprintf(f,
"Number of distortion parameters = %d\n",(
int)distortion.get_d().size());
138 for(
unsigned int i=0;i<distortion.get_d().size();i++)
140 fprintf(f,
"value of distortion parameter %d = %.20g\n",i,distortion.get_d()[i]);
150 fprintf(f,
"\nNUMBER OF LINES = %d \n",(
int)lines.size());
151 for(
unsigned int i=0;i<lines.size();i++)
153 fprintf(f,
"\nline %d \n",(
int) i);
154 v1 = lines[i].get_a();
155 v2 = lines[i].get_b();
156 v3 = lines[i].get_c();
157 fprintf(f,
"line parameters = %.20g %.20g %.20g\n",v1,v2,v3);
158 fprintf(f,
"line points : \n");
159 std::vector<point2d<double> > puntos = lines[i].get_points();
160 fprintf(f,
"%d\n",(
int)puntos.size());
161 for(
unsigned int j=0;j<puntos.size();j++)
163 fprintf(f,
"%.20g %.20g\n",puntos[j].x,puntos[j].y);
182 unsigned int Num_Puntos()
const;
184 friend inline std::ostream &operator <<(std::ostream &s,
186 s <<
"Points " << ip.points.size() << std::endl;
187 for(
unsigned int i=0;i<ip.points.size();i++)
189 s <<
"(" << ip.points[i].x <<
", " << ip.points[i].y <<
") ";
192 s <<
"Lines " << ip.lines.size() << std::endl;
193 for(
unsigned int i=0; i<ip.lines.size();i++)
195 s <<
"(" << ip.lines[i].get_a() <<
", " << ip.lines[i].get_b() <<
196 ", " << ip.lines[i].get_c() <<
", " << std::endl;
199 s <<
"Distortion model " << std::endl;
202 for(
unsigned int i=0;i<ip.distortion.
get_d().size();i++)
204 s << ip.distortion.
get_d()[i] <<
" ";
214 int &type_prim,
int &prim,
int &pos);
218 double &distance,
int &type_prim,
line_points class AMI_DLL_H to store line equation and associated points
void set_points(const std::vector< point2d< double > > &p2)
Set points collection.
Definition: image_primitives.h:103
void set_lines(const std::vector< line_points > &lines2)
Set Lines collection.
Definition: image_primitives.h:111
point2d< double > & get_distortion_center()
This function returns the center of the lens distortion model.
Definition: lens_distortion_model.h:82
Class to store distortion model and basic methods.
Definition: lens_distortion_model.h:38
T x
Definition: point2d.h:37
void set_distortion(const lens_distortion_model &distortion2)
Set distortion model.
Definition: image_primitives.h:119
class to store the image primitives (points, lines, ellipses and ditortion model) ...
Definition: image_primitives.h:35
const point2d< double > get_distorsion_center() const
Return distortion center.
Definition: image_primitives.h:64
T y
Definition: point2d.h:38
std::vector< line_points > & get_lines()
Return line_points collection.
Definition: image_primitives.h:82
std::vector< point2d< double > > & get_points()
Return points.
Definition: image_primitives.h:73
std::vector< double > & get_d()
This function returns the vector with the lens distortion model parameters.
Definition: lens_distortion_model.h:52
int write(char *name)
Definition: image_primitives.h:124
lens_distortion_model & get_distortion()
Return distortion model.
Definition: image_primitives.h:96