⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cips.c

📁 This is code tutorial for image processing include:histogram,sketon....
💻 C
📖 第 1 页 / 共 3 页
字号:
                       il, ie, ll, le, detect_threshold,
                       high);
         if(detect_type == 6)
              difference_edge(name, name2, the_image,
                              out_image, il, ie, ll,
                              le, detect_threshold,
                              high);
         if(detect_type == 7)
              contrast_edge(name, name2, the_image,
                            out_image, il, ie, ll,
                            le, detect_threshold,
                            high);
         if(detect_type == 8)
              gaussian_edge(name, name2, the_image,
                            out_image, il, ie, ll,
                            le, size,
                            detect_threshold, high);
         if(detect_type == 10)
              range(name, name2, the_image, out_image,
                    il, ie, ll, le, size,
                    detect_threshold, high);
         if(detect_type == 11)
              variance(name, name2, the_image,
                       out_image, il, ie, ll, le,
                       detect_threshold, high);
         break;

        case 9: /* perform edge enhancement */
         printf("\nCIPS> Enter input image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name2);
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter high threshold parameter");
         printf(" \n\t___\b\b\b");
         get_integer(&high);
         enhance_edges(name, name2, the_image,
                       out_image, il, ie, ll, le,
                       high);
         break;

        case 10: /* perform image filtering */
         printf("\nCIPS> Enter input image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name2);
         get_parameters(&il, &ie, &ll, &le);
         get_filter_options(&filter_type, low_high);
         if(low_high[0] == 'l' ||
             low_high[0] == 'L' ||
             low_high[0] == 'h' ||
             low_high[0] == 'H'){
            setup_filters(filter_type, low_high,
                          low_hi_filter);
            filter_image(name, name2, the_image,
                         out_image, il, ie, ll, le,
                         low_hi_filter, filter_type);
         }

         if(low_high[0] == 'm' ||
             low_high[0] == 'M')
               median_filter(name, name2, the_image,
                             out_image, il, ie, ll,
                             le, filter_type);

         if(low_high[0] == 'i' ||
             low_high[0] == 'I')
               high_pixel(name, name2, the_image,
                          out_image, il, ie, ll, le,
                          filter_type);

         if(low_high[0] == 'o' ||
             low_high[0] == 'O')
               low_pixel(name, name2, the_image,
                         out_image, il, ie, ll, le,
                         filter_type);

        break;

        case 11: /* perform image addition and
                    subtraction */
         printf("\nCIPS> Image Addition:"
              "\n         output = first + second"
              "\n      Image Subtractions:"
              "\n         output = first - second");
         printf("\nCIPS> Enter first image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter second image name\n");
         get_image_name(name2);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name3);
         printf("\nCIPS> Enter parameters for first image");
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter parameters for second image");
         get_parameters(&il2, &ie2, &ll2, &le2);
         printf("\nCIPS> Enter parameters for output image");
         get_parameters(&il3, &ie3, &ll3, &le3);
         printf("\n\nCIPS> Enter a=addition    "
                "s=subtraction\n");
         printf("\nCIPS> _\b");
         gets(low_high);
         if(low_high[0] == 'a' || low_high[0] == 'A')
            add_image_array(name, name2, name3,
                the_image, out_image,
                il, ie, ll, le,
                il2, ie2, ll2, le2,
                il3, ie3, ll3, le3);
         if(low_high[0] == 's' || low_high[0] == 'S')
            subtract_image_array(name, name2, name3,
                the_image, out_image,
                il, ie, ll, le,
                il2, ie2, ll2, le2,
                il3, ie3, ll3, le3);
        break;

        case 12: /* image cutting and pasting */
         printf("\n\nCIPS> Cut from source image and "
                "paste to destination image");
         printf("\nCIPS> Enter source image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         check_cut_and_paste_limits(&il, &ie, &ll, &le);
         cut_image_piece(name, the_image,
                         il, ie, ll, le);
         printf("\nCIPS> Enter destination image name");
         get_image_name(name2);
         printf("\nCIPS> Enter destination image "
                "parameters");
         get_parameters(&il, &ie, &ll, &le);
         check_cut_and_paste_limits(&il, &ie, &ll, &le);
         paste_image_piece(name2, name, the_image,
                           out_image, il, ie, ll, le);
        break;

        case 13: /* image rotation and flipping */
         printf("\nCIPS> Enter source image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter destination image name");
         printf("\nCIPS> (source can equal destination)");
         get_image_name(name2);
         printf("\nCIPS> Enter destination image "
                "parameters");
         get_parameters(&il2, &ie2, &ll2, &le2);
         printf("\nCIPS> Enter number of Rotations "
                "(1, 2, 3)");
         printf("\nCIPS> or type of Flip "
                "(4=horizontal 5=vertical)");
         printf("\nCIPS> __\b");
         get_integer(&rotation_type);
         rotate_flip_image_array(name, name2,
                                 the_image,
                                 out_image, il, ie,
                                 ll, le, il2, ie2,
                                 ll2, le2,
                                 rotation_type);
        break;

        case 14: /* image scaling */
         printf("\nCIPS> Enter input image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter output image name");
         get_image_name(name2);
         get_scaling_options(zoom_shrink, &scale, method);
         if(zoom_shrink[0] == 'z' || zoom_shrink[0] == 'Z')
            zoom_image_array(name, name2, the_image,
                             out_image, il, ie, ll,
                             le, scale, method);
         if(zoom_shrink[0] == 's' ||
            zoom_shrink[0] == 'S'){
             printf("\nCIPS> Enter output image "
                     "parameters");
               get_parameters(&il2, &ie2, &ll2, &le2);
             shrink_image_array(name, name2, the_image,
                                out_image, il, ie, ll,
                                le, il2, ie2, ll2, le2,
                                scale, method);
         }
        break;

        case 15: /* create image */
         printf("\nCIPS> Enter input name of image "
                "to create");
         get_image_name(name);
         printf("\nCIPS> Enter number of %d blocks "
                "wide",COLS);
         printf("\n      ___\b\b");
         get_integer(&width);
         printf("\nCIPS> Enter number of %d blocks "
                "tall",ROWS);
         printf("\n      ___\b\b");
         get_integer(&length);
         image_header.lsb            = 1;
         image_header.bits_per_pixel = 8;
         image_header.image_length   = length*COLS;
         image_header.image_width    = width*ROWS;
         image_header.strip_offset   = 1000;
         for(i=0; i<ROWS; i++)
            for(j=0; j<COLS; j++)
               the_image[i][j] = 0;
         create_allocate_tiff_file(name, &image_header,
                                   the_image);
        break;

        case 16: /* image thresholding */
         printf("\nCIPS> Enter input image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name2);
         get_parameters(&il, &ie, &ll, &le);
         get_threshold_options(ts_method, &hi,
                               &low, &value);
         if(ts_method[0] == 'm' ||
            ts_method[0] == 'M')
            manual_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le,
                   hi, low, value, 0);
         if(ts_method[0] == 'p' ||
            ts_method[0] == 'P')
            peak_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 0);
         if(ts_method[0] == 'v' ||
            ts_method[0] == 'V')
            valley_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 0);
         if(ts_method[0] == 'a' ||
            ts_method[0] == 'a')
            adaptive_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 0);
        break;

        case 17: /* image segmentation */
         printf("\nCIPS> Enter input image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name2);
         get_parameters(&il, &ie, &ll, &le);
         get_segmentation_options(ts_method, &hi,
                                  &low, &value);
         if(ts_method[0] == 'm' ||
            ts_method[0] == 'M')
            manual_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le,
                   hi, low, value, 1);
         if(ts_method[0] == 'p' ||
            ts_method[0] == 'P')
            peak_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 1);
         if(ts_method[0] == 'v' ||
            ts_method[0] == 'V')
            valley_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 1);
         if(ts_method[0] == 'a' ||
            ts_method[0] == 'a')
            adaptive_threshold_segmentation(name,
                   name2, the_image, out_image,
                   il, ie, ll, le, value, 1);
        break;

        case 18: /* edge & gray shade segmentation */
         printf("\nCIPS> Enter input image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name2);
         get_parameters(&il, &ie, &ll, &le);
         get_edge_region_options(er_method,
             &detect_type, &min_area, &max_area,
             &value, &diff, &percent, &erode);
         if(er_method[0] == 'e' ||
            er_method[0] == 'E')
            edge_region(name, name2, the_image,
                        out_image, il, ie, ll, le,
                        detect_type, min_area,
                        max_area, diff, percent,
                        value, erode);
         if(er_method[0] == 'g' ||
            er_method[0] == 'G')
            gray_shade_region(name, name2, the_image,
                        out_image, il, ie, ll, le,
                        diff, min_area, max_area);
         if(er_method[0] == 'c' ||
            er_method[0] == 'C')
            edge_gray_shade_region(name, name2,
                        the_image, out_image,
                        il, ie, ll, le, detect_type,
                        min_area, max_area, diff,
                        percent, value, erode);
        break;

        case 19: /* Boolean operations */
         printf("\nCIPS> Boolean operations:"
                "\n      output = first OP second"
                "\n      If using NOT operation, "
                "\n      only enter one set of"
                "\n      parameters.");
         printf("\nCIPS> Enter first image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter second image name\n");
         get_image_name(name2);
         printf("\nCIPS> Enter output image name\n");
         get_image_name(name3);
         printf("\nCIPS> Enter parameters for first image");
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter parameters for second image");
         get_parameters(&il2, &ie2, &ll2, &le2);
         printf("\nCIPS> Enter parameters for output image");
         get_parameters(&il3, &ie3, &ll3, &le3);
         printf("\n\nCIPS> Enter operation: and or xor nand nor"
                " not\n");
         gets(low_high);

         if(strncmp("and", low_high, 3) == 0){
            and_image(name, name2, name3,
                      the_image, out_image,
                      il,  ie,  ll,  le,
                      il2, ie2, ll2, le2,
                      il3, ie3, ll3, le3);
         }
         if(strncmp("or", low_high, 2) == 0){
            or_image(name, name2, name3,
                     the_image, out_image,
                     il,  ie,  ll,  le,
                     il2, ie2, ll2, le2,
                     il3, ie3, ll3, le3);
         }
         if(strncmp("xor", low_high, 3) == 0){
            xor_image(name, name2, name3,
                      the_image, out_image,
                      il,  ie,  ll,  le,
                      il2, ie2, ll2, le2,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -