diff --git a/.gitignore b/.gitignore index 0cd61d0..07160e8 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ Map_Test Tags Video_Capture calibrate +undistort html latex ozcam diff --git a/Arc.c b/Arc.c index aa165cd..65ae63d 100644 --- a/Arc.c +++ b/Arc.c @@ -177,7 +177,11 @@ Arc Arc__read(File in_file, Map map) { void Arc__svg_write(Arc arc, SVG svg) { Tag from_tag = arc->from_tag; Tag to_tag = arc->to_tag; - SVG__line(svg, from_tag->x, from_tag->y, to_tag->x, to_tag->y, "black"); + String color = "green"; + if (arc->in_tree) { + color = "red"; + } + SVG__line(svg, from_tag->x, from_tag->y, to_tag->x, to_tag->y, color); } /// @brief Updates the contenst of *arc*. diff --git a/CV.c b/CV.c index 9b9f832..e0067ef 100644 --- a/CV.c +++ b/CV.c @@ -273,12 +273,6 @@ void CV__release_image(CV_Image image) { Integer CV__inter_linear = CV_INTER_LINEAR; Integer CV__warp_fill_outliers = CV_WARP_FILL_OUTLIERS; -void CV__remap(CV_Image source_image, CV_Image destination_image, - CV_Matrix mapx, CV_Matrix mapy, Integer flags, CV_Scalar fill_value) { - cvRemap(source_image, - destination_image, mapx, mapy, flags, *fill_value); -} - void CV__rodrigues2( CV_Matrix rotation_vector, CV_Matrix rotation_matrix, CV_Matrix jacobian) { cvRodrigues2(rotation_vector, rotation_matrix, jacobian); @@ -301,6 +295,57 @@ Integer CV__round(Double value) { return cvRound(value); } +// Read the calibration file and generate the undistortion maps +// in: +// calibrate_file_name - camera calibration file +// w h - width and height of images to undistort +// out: +// mapx, mapy, - undistortion maps + +Integer CV__undistortion_setup(String calibrate_file_name, + Integer width, Integer height, CV_Image *mapx, CV_Image *mapy) { + Double fcx, fcy, ccx, ccy; + Double kc[4]; + + // Open *calibrate_file_name*: + File file = File__open(calibrate_file_name, "r"); + if (file == (File)0) { + File__format(stderr, "Could not open \"%s\"\n", calibrate_file_name); + return -1; + } + + // Scan in the calibration values: + // format is fc - focal length, cc, principal point, kc distortion vector + int x = fscanf(file, "fc %lf %lf cc %lf %lf kc %lf %lf %lf %lf", + &fcx, &fcy, &ccx, &ccy, &kc[0], &kc[1], &kc[2], &kc[3]); + if (x != 8) { + File__format(stderr, "Expected 8 parameters got %d\n", x); + return -1; + } + File__close(file); + + // Create *intrisic* matrix: + double intrinsic_vector[9] = { + fcx, 0, ccx, + 0, fcy, ccy, + 0, 0, 1 + }; + CvMat intrinsic = cvMat(3, 3, CV_64FC1, intrinsic_vector); + //printf("intrinsic matrix\n"); + //dumpMat(&intrinsic); + + // Create *distortion* matrix*: + CvMat distortion = cvMat(1, 4, CV_64FC1, kc); + //printf("distortion matrix\n"); + //dumpMat(&distortion); + + *mapx = cvCreateImage(cvSize(width, height), IPL_DEPTH_32F, 1); + *mapy = cvCreateImage(cvSize(width, height), IPL_DEPTH_32F, 1); + cvInitUndistortMap(&intrinsic, &distortion, *mapx, *mapy); + + return 0; +} + // *CV_Image* routines: void CV_Image__adaptive_threshold(CV_Image source_image, @@ -489,6 +534,12 @@ void CV_Image__pnm_write(CV_Image image, String file_name) { cvSaveImage(file_name, image, (Integer *)0); } +void CV_Image__remap(CV_Image source_image, CV_Image destination_image, + CV_Image map_x, CV_Image map_y, Integer flags, CV_Scalar fill_value) { + cvRemap(source_image, + destination_image, map_x, map_y, flags, *fill_value); +} + void CV_Image__smooth(CV_Image source_image, CV_Image destination_image, Integer smooth_type, Integer parameter1, Integer parameter2, Double parameter3, Double parameter4) { @@ -502,7 +553,18 @@ void CV_Image__store3( pointer[channel] = (unsigned char)value; } -CV_Image CV_Image__xtga_read(CV_Image image, String tga_file_name) { +/// @brief Read in a .tga file. +/// @param image to read into (or null). +/// @param tga_file_name is the file name of the .tga file. +/// @returns image from .tga file. +/// +/// *CV__tga_read will read the contents of {tga_file_name} into +/// {image}. If the sizes do not match, {image} is released +/// and new {CV_Image} object of the right size is allocated, +/// filled and returned. In either case, the returned {CV_Image} +/// object containing the read in image data is returned. + +CV_Image CV_Image__tga_read(CV_Image image, String tga_file_name) { // Open *tga_in_file*: File tga_in_file = File__open(tga_file_name, "rb"); if (tga_in_file == (File)0) { @@ -611,7 +673,7 @@ CV_Image CV_Image__xtga_read(CV_Image image, String tga_file_name) { /// *CV_Image__tga_write*() will write *image* out to *file_name* in /// .tga format. -void CV_Image__xtga_write(CV_Image image, String file_name) { +void CV_Image__tga_write(CV_Image image, String file_name) { Unsigned channels = (Unsigned)image->nChannels; Unsigned depth = (Unsigned)image->depth; Unsigned height = (Unsigned)image->height; @@ -892,14 +954,3 @@ CV_Term_Criteria CV_Term_Criteria__create( return term_criteria; } -/// @brief Read in a .tga file. -/// @param image to read into (or null). -/// @param tga_file_name is the file name of the .tga file. -/// @returns image from .tga file. -/// -/// *CV__tga_read will read the contents of {tga_file_name} into -/// {image}. If the sizes do not match, {image} is released -/// and new {CV_Image} object of the right size is allocated, -/// filled and returned. In either case, the returned {CV_Image} -/// object containing the read in image data is returned. - diff --git a/CV.h b/CV.h index b3dae6d..f3c9360 100644 --- a/CV.h +++ b/CV.h @@ -37,6 +37,8 @@ extern Integer CV__thresh_binary; extern Integer CV__window_auto_size; extern Integer CV__round(Double value); +extern Integer CV__undistortion_setup(String calibrate_file_name, + Integer width, Integer height, CV_Image *mapx, CV_Image *mapy); extern void CV_Image__adaptive_threshold(CV_Image source_image, CV_Image destination_image, Double maximum_value, Integer adaptive_method, @@ -72,6 +74,8 @@ extern Integer CV_Image__points_maximum(CV_Image image, extern Integer CV_Image__points_minimum(CV_Image image, CV_Point2D32F_Vector points, Unsigned start_index, Unsigned end_index); extern Integer CV_Image__point_sample(CV_Image image, CV_Point2D32F point); +extern void CV_Image__remap(CV_Image source_image, CV_Image destination_image, + CV_Image map_x, CV_Image map_y, Integer flags, CV_Scalar fill_value); extern Integer CV_Image__save( CV_Image image, String file_name, Integer *parameters); extern void CV_Image__smooth(CV_Image source_image, CV_Image destination_image, diff --git a/Demo.c b/Demo.c index a5e0d1b..e0da1b1 100644 --- a/Demo.c +++ b/Demo.c @@ -16,7 +16,7 @@ #include "String.h" #include "Unsigned.h" -Integer main(Unsigned argc, String argv[]) { +Integer main(Unsigned arguments_size, String arguments[]) { struct timeval start_time_value_struct; struct timeval end_time_value_struct; struct timeval difference_time_value_struct; @@ -27,12 +27,21 @@ Integer main(Unsigned argc, String argv[]) { assert (gettimeofday(start_time_value, (struct timezone *)0) == 0); List /* */ image_file_names = List__new(); - File__format(stdout, "Hello\n"); - if (argc <= 1) { - File__format(stderr, "Usage: Demo *.pnm\n"); + String lens_calibrate_file_name = (String)0; + //File__format(stdout, "Hello\n"); + if (arguments_size <= 1) { + File__format(stderr, "Usage: Demo lens.txt *.pnm\n"); } else { - for (Unsigned index = 1; index < argc; index++) { - List__append(image_file_names, argv[index]); + for (Unsigned index = 1; index < arguments_size; index++) { + String argument = arguments[index]; + Unsigned size = String__size(argument); + if (size > 4 && String__equal(argument + size - 4, ".txt")) { + lens_calibrate_file_name = argument; + } else if (size > 4 && String__equal(argument + size - 4, ".pnm")) { + List__append(image_file_names, argument); + } else { + File__format(stderr, "Unrecoginized file '%s'\n", argument); + } } } @@ -42,7 +51,8 @@ Integer main(Unsigned argc, String argv[]) { CV_Image image = (CV_Image)0; image = CV_Image__pnm_read(image_file_name0); assert (image != (CV_Image)0); - Fiducials fiducials = Fiducials__create(image); + Fiducials fiducials = + Fiducials__create(image, lens_calibrate_file_name); for (Unsigned index = 0; index < size; index++) { String image_file_name = diff --git a/Fiducials.c b/Fiducials.c index 1b853c0..3b5bc1f 100644 --- a/Fiducials.c +++ b/Fiducials.c @@ -125,7 +125,8 @@ void Fiducials__image_show(Fiducials fiducials, Logical show) { } } -Fiducials Fiducials__create(CV_Image original_image) { +Fiducials Fiducials__create( + CV_Image original_image, String lens_calibrate_file_name) { // Create *image_size*: Unsigned width = CV_Image__width_get(original_image); Unsigned height = CV_Image__height_get(original_image); @@ -308,6 +309,13 @@ Fiducials Fiducials__create(CV_Image original_image) { // File__format(stderr, "mappings[%d]=0x%x\n", index, mappings[index]); //} + CV_Image map_x = (CV_Image)0; + CV_Image map_y = (CV_Image)0; + if (lens_calibrate_file_name != (String)0) { + assert (CV__undistortion_setup( + lens_calibrate_file_name, width, height, &map_x, &map_y) == 0); + } + // Create and load *fiducials*: Fiducials fiducials = Memory__new(Fiducials); fiducials->blue = CV_Scalar__rgb(0.0, 0.0, 1.0); @@ -323,6 +331,8 @@ Fiducials Fiducials__create(CV_Image original_image) { fiducials->gray_image = CV_Image__create(image_size, CV__depth_8u, 1); fiducials->green = CV_Scalar__rgb(0.0, 255.0, 0.0); fiducials->map = Map__new(); + fiducials->map_x = map_x; + fiducials->map_y = map_y; fiducials->mappings = &mappings[0]; fiducials->origin = CV_Point__create(0, 0); fiducials->original_image = original_image; @@ -333,6 +343,8 @@ Fiducials Fiducials__create(CV_Image original_image) { fiducials->size_5x5 = CV_Size__create(5, 5); fiducials->size_m1xm1 = CV_Size__create(-1, -1); fiducials->storage = storage; + fiducials->temporary_gray_image = + CV_Image__create(image_size, CV__depth_8u, 1); fiducials->term_criteria = CV_Term_Criteria__create(term_criteria_type, 5, 0.2); fiducials->y_flip = (Logical)0; @@ -350,6 +362,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { Unsigned debug_index = fiducials->debug_index; CV_Image edge_image = fiducials->edge_image; CV_Image gray_image = fiducials->gray_image; + CV_Image temporary_gray_image = fiducials->temporary_gray_image; CV_Image original_image = fiducials->original_image; // For *debug_level* 0, we show the original image in color: @@ -388,13 +401,26 @@ Unsigned Fiducials__process(Fiducials fiducials) { CV_Image__convert_color(gray_image, debug_image, CV__gray_to_rgb); } + // Preform undistort if available: + if (fiducials->map_x != (CV_Image)0) { + Integer flags = CV_INTER_NN | CV_WARP_FILL_OUTLIERS; + CV_Image__copy(gray_image, temporary_gray_image, (CV_Image)0); + CV_Image__remap(temporary_gray_image, gray_image, + fiducials->map_x, fiducials->map_y, flags, fiducials->black); + } + + // Show results of undistort: + if (debug_index == 2) { + CV_Image__convert_color(gray_image, debug_image, CV__gray_to_rgb); + } + // Perform Gaussian blur if requested: if (fiducials->blur) { CV_Image__smooth(gray_image, gray_image, CV__gaussian, 3, 0, 0.0, 0.0); } // Show results of Gaussian blur for *debug_index* 2: - if (debug_index == 2) { + if (debug_index == 3) { CV_Image__convert_color(gray_image, debug_image, CV__gray_to_rgb); } @@ -403,7 +429,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { CV__adaptive_thresh_gaussian_c, CV__thresh_binary, 45, 5.0); // Show results of adaptive threshold for *debug_index* 3: - if (debug_index == 3) { + if (debug_index == 4) { CV_Image__convert_color(edge_image, debug_image, CV__gray_to_rgb); } @@ -417,7 +443,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { } // For *debug_index* 4, show the *edge_image* *contours*: - if (debug_index == 4) { + if (debug_index == 5) { //File__format(stderr, "Draw red contours\n"); CV_Scalar red = fiducials->red; CV_Image__convert_color(gray_image, debug_image, CV__gray_to_rgb); @@ -450,7 +476,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { CV_Sequence polygon_contour = CV_Sequence__approximate_polygon(contour, header_size, storage, CV__poly_approx_dp, arc_length, 0.0); - if (debug_index == 5) { + if (debug_index == 6) { //File__format(stderr, "Draw green contours\n"); CV_Scalar green = fiducials->green; CV_Image__draw_contours(debug_image, @@ -467,7 +493,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { //File__format(stderr, "Have 4 sides > 500i\n"); // Just show the fiducial outlines for *debug_index* of 6: - if (debug_index == 6) { + if (debug_index == 7) { CV_Scalar red = fiducials->red; CV_Image__draw_contours(debug_image, polygon_contour, red, red, 2, 2, 1, origin); @@ -482,7 +508,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { CV_Sequence__point_fetch1(polygon_contour, index); CV_Point2D32F__point_set(corner, point); - if (debug_index == 6) { + if (debug_index == 7) { //File__format(stderr, // "point[%d] x:%f y:%f\n", index, point->x, point->y); } @@ -498,7 +524,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { // For debugging show the 4 corners of the possible tag where //corner0=red, corner1=green, corner2=blue, corner3=purple: - if (debug_index == 7) { + if (debug_index == 8) { for (Unsigned index = 0; index < 4; index++) { CV_Point point = CV_Sequence__point_fetch1(polygon_contour, index); @@ -551,7 +577,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { // For debugging, show the 8 points that are sampled around the // the tag periphery to even decide whether to do further testing. // Show "black" as green crosses, and "white" as green crosses: - if (debug_index == 8) { + if (debug_index == 9) { CV_Scalar red = fiducials->red; CV_Scalar green = fiducials->green; for (Unsigned index = 0; index < 8; index++) { @@ -592,7 +618,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { tag_bits[index] = bit; // For debugging: - if (debug_index == 9) { + if (debug_index == 10) { CV_Scalar red = fiducials->red; CV_Scalar green = fiducials->green; CV_Scalar cyan = fiducials->cyan; @@ -656,7 +682,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { } tag_bytes[i] = byte; } - if (debug_index == 10) { + if (debug_index == 11) { File__format(stderr, "dir=%d Tag[0]=0x%x Tag[1]=0x%x\n", direction_index, tag_bytes[0], tag_bytes[1]); } @@ -665,7 +691,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { FEC fec = fiducials->fec; if (FEC__correct(fec, tag_bytes, 8)) { // We passed FEC: - if (debug_index == 10) { + if (debug_index == 11) { File__format(stderr, "FEC correct\n"); } @@ -679,7 +705,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { Unsigned tag_id = (tag_bytes[1] << 8) | tag_bytes[0]; - if (debug_index == 10) { + if (debug_index == 11) { File__format(stderr, "CRC correct, Tag=%d\n", tag_id); } @@ -699,7 +725,7 @@ Unsigned Fiducials__process(Fiducials fiducials) { // Load up *camera_tag* to get center, twist, etc.: Tag tag = Map__tag_lookup(map, tag_id); - if (debug_index == 10) { + if (debug_index == 11) { Camera_Tag__initialize(camera_tag, tag, direction_index, corners, debug_image); } else { diff --git a/Fiducials.h b/Fiducials.h index a78e0e1..87052e6 100644 --- a/Fiducials.h +++ b/Fiducials.h @@ -29,6 +29,7 @@ typedef Logical Mapping[64]; typedef struct timeval *Time_Value; struct Fiducials__Struct { + CV_Scalar black; CV_Scalar blue; Logical blur; List /* */ camera_tags; @@ -45,6 +46,8 @@ struct Fiducials__Struct { CV_Point origin; CV_Image original_image; Logical **mappings; + CV_Image map_x; + CV_Image map_y; CV_Scalar purple; CV_Scalar red; CV_Point2D32F_Vector references; @@ -53,6 +56,7 @@ struct Fiducials__Struct { CV_Size size_m1xm1; CV_Memory_Storage storage; Logical tag_bits[64]; // FIXME: Make this Logical *tag_bits; + CV_Image temporary_gray_image; CV_Term_Criteria term_criteria; Logical y_flip; }; @@ -61,7 +65,8 @@ void Fiducials__sample_points_compute( CV_Point2D32F_Vector corners, CV_Point2D32F_Vector sample_points); extern CV_Point2D32F_Vector Fiducials__references_compute( Fiducials fiducials, CV_Point2D32F_Vector corners); -extern Fiducials Fiducials__create(CV_Image original_image); +extern Fiducials Fiducials__create( + CV_Image original_image, String lens_calibrate_file_name); extern void Fiducials__image_set(Fiducials fiducials, CV_Image image); extern void Fiducials__image_show(Fiducials fiducials, Logical show); extern Unsigned Fiducials__process(Fiducials fiducials); diff --git a/README.md b/README.md index 611d8e7..e801ef3 100644 --- a/README.md +++ b/README.md @@ -206,13 +206,14 @@ input focus to Video capture. To capture an image, type the The Demo program is used to debug and show what is going on under the covers with the Fiducials code: - Demo ../../src/fiducials/image-05.tga - -will load the image-05.tga file and do fiducial recognition -on it. Move the cursor over the window that pops up and -click on the image. This moves the input focus to the Demo -program. Click on '+' to increment one step through processing -and '-' to decrement one step through processing. + Demo dojo_3.6mm_6Oct2013/pg_3_6mm.txt dojo_3.6mm_6Oct2013/dojo_3.6mm-15.pnm + +will load the dojo_3.6mm-15.pnm file and do fiducial recognition +on it. pg_3_6.txt is the lens correction coeeficients. Move the +cursor over the window that pops up and click on the image. This +moves the input focus to the Demo program. Click on '+' to +increment one step through processing and '-' to decrement one +step through processing. The steps are: diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-00.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-00.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-00.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-00.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-01.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-01.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-01.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-01.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-02.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-02.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-02.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-02.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-03.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-03.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-03.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-03.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-04.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-04.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-04.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-04.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-05.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-05.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-05.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-05.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-06.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-06.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-06.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-06.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-07.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-07.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-07.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-07.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-08.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-08.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-08.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-08.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-09.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-09.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-09.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-09.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-10.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-10.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-10.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-10.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-11.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-11.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-11.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-11.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-12.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-12.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-12.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-12.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-13.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-13.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-13.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-13.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-14.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-14.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-14.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-14.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-15.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-15.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-15.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-15.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-16.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-16.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-16.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-16.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-17.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-17.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-17.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-17.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-18.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-18.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-18.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-18.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-19.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-19.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-19.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-19.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-20.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-20.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-20.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-20.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-21.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-21.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-21.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-21.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-22.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-22.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-22.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-22.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-23.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-23.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-23.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-23.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-24.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-24.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-24.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-24.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-25.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-25.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-25.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-25.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-26.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-26.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-26.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-26.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-27.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-27.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-27.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-27.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-28.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-28.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-28.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-28.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-29.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-29.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-29.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-29.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-30.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-30.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-30.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-30.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-31.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-31.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-31.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-31.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-32.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-32.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-32.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-32.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-33.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-33.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-33.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-33.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-34.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-34.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-34.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-34.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-35.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-35.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-35.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-35.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-36.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-36.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-36.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-36.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-37.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-37.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-37.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-37.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-38.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-38.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-38.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-38.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-39.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-39.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-39.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-39.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-40.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-40.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-40.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-40.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-41.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-41.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-41.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-41.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-42.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-42.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-42.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-42.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-43.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-43.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-43.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-43.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-44.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-44.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-44.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-44.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-45.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-45.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-45.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-45.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-46.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-46.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-46.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-46.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-47.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-47.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-47.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-47.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-48.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-48.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-48.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-48.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-49.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-49.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-49.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-49.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-50.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-50.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-50.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-50.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-51.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-51.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-51.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-51.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-52.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-52.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-52.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-52.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-53.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-53.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-53.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-53.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-54.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-54.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-54.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-54.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-55.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-55.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-55.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-55.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-56.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-56.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-56.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-56.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-57.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-57.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-57.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-57.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-58.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-58.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-58.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-58.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-59.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-59.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-59.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-59.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-60.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-60.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-60.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-60.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-61.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-61.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-61.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-61.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-62.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-62.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-62.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-62.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-63.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-63.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-63.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-63.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-64.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-64.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-64.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-64.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-65.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-65.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-65.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-65.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-66.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-66.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-66.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-66.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-67.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-67.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-67.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-67.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-68.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-68.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-68.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-68.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-69.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-69.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-69.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-69.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-70.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-70.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-70.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-70.pnm diff --git a/dojo_3.3mm_6Oct2013/dojo_3.3mm-71.pnm b/dojo_3.6mm_6Oct2013/dojo_3.6mm-71.pnm similarity index 100% rename from dojo_3.3mm_6Oct2013/dojo_3.3mm-71.pnm rename to dojo_3.6mm_6Oct2013/dojo_3.6mm-71.pnm diff --git a/dojo_3.6mm_6Oct2013/pg_3_6mm.txt b/dojo_3.6mm_6Oct2013/pg_3_6mm.txt new file mode 100644 index 0000000..5f3fe53 --- /dev/null +++ b/dojo_3.6mm_6Oct2013/pg_3_6mm.txt @@ -0,0 +1 @@ +fc 422.29324 422.24830 cc 341.78551 225.87651 kc -0.35506 0.18746 0.00056 -0.00047 diff --git a/dojo_6mm_6Oct2013/pg_6mm.txt b/dojo_6mm_6Oct2013/pg_6mm.txt new file mode 100644 index 0000000..bd8f049 --- /dev/null +++ b/dojo_6mm_6Oct2013/pg_6mm.txt @@ -0,0 +1 @@ +fc 1003.53326 1003.56907 cc 325.57087 237.92510 kc -0.37209 0.06406 0.00352 0.00262