📄 cips.c
字号:
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 + -