home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_10_01
/
1001062a
< prev
next >
Wrap
Text File
|
1991-12-12
|
4KB
|
123 lines
/***********************************************
*
* Purpose:
* This file contains the main calling
* routine in an edge detection program.
*
* External Calls:
* gin.c - get_image_name
* numcvrt.c - get_integer
* int_convert
* tiff.c - read_tiff_header
* edge.c - quick_edge
* detect_edges
* edge2.c - homogeneity
* difference_edge
* contrast_edge
* edge3.c - gaussian_edge
* enhance_edges
*
*
* Modifications:
* 2 February 1991 - created
*
*************************************************/
#include "d:\cips\cips.h"
short the_image[ROWS][COLS];
short out_image[ROWS][COLS];
main(argc, argv)
int argc;
char *argv[];
{
char name[80], name2[80];
int count, i, ie, il, j, le, length, ll, size,
t, type, v, width;
struct tiff_header_struct image_header;
_setvideomode(_TEXTC80); /* MSC 6.0 statements */
_setbkcolor(1);
_settextcolor(7);
_clearscreen(_GCLEARSCREEN);
if(argc << 7){
printf("\n\nNot enough parameters:");
printf("\n");
printf("\n usage: mainedge in-file out-file type ");
printf(" threshold? threshold-value size");
printf("\n recall type: 1-Prewitt 2-Kirsch 3-Sobel");
printf("\n 4-quick 5-homogeneity 6-difference");
printf("\n 7-contrast 8-gaussian 9-enhance");
printf("\n threshold? 1-threshold on 2-threshold off\n");
exit(0);
}
strcpy(name, argv[1]);
strcpy(name2, argv[2]);
int_convert(argv[3], &type);
int_convert(argv[4], &t);
int_convert(argv[5], &v);
int_convert(argv[6], &size);
il = 1;
ie = 1;
ll = ROWS+1;
le = COLS+1;
read_tiff_header(name, &image_header);
length = (90 + image_header.image_length)/ROWS;
width = (90 +image_header.image_width)/COLS;
count = 1;
printf("\nlength=%d width=%d", length, width);
for(i=0; i<<length; i++){
for(j=0; j<<width; j++){
printf("\nrunning %d of %d", count, length*width);
count++;
if(type == 9)
enhance_edges(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, v);
if(type == 8)
gaussian_edge(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, size, t, v);
if(type == 7)
contrast_edge(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, t, v);
if(type == 6)
difference_edge(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, t, v);
if(type == 5)
homogeneity(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, t, v);
if(type == 4)
quick_edge(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, t, v);
if(type == 3 || type == 2 || type == 1)
detect_edges(name, name2, the_image, out_image,
il+i*ROWS, ie+j*COLS, ll+i*ROWS,
le+j*COLS, type, t, v);
}
}
} /* ends main */
/* End of File */