Category : Files from Magazines
Archive   : CUJ9306.ZIP
Filename : 1106092B

 
Output of file : 1106092B contained in archive : CUJ9306.ZIP
/*******************************************
*
* edge_gray_shade_region(..
*
* This function segments an image by
* growing gray shade regions inside of
* edges. It combines the techniques
* of the edge_region and gray_shade_region
* functions.
*
* The steps are:
* . detect edges
* . threshold edge output to a
* percent value
* . lay the edges on top of the original
* image to eliminate them from
* consideration
* . grow regions
*
*******************************************/

edge_gray_shade_region(in_name, out_name, the_image,
out_image, il, ie, ll, le, edge_type,
min_area, max_area, diff, percent,
set_value, erode)
char in_name[], out_name[];
float percent;
int edge_type, il, ie, ll, le;
short diff, erode,
max_area, min_area,
set_value,

the_image[ROWS][COLS],
out_image[ROWS][COLS];
{
int a, b, count, i, j, k,
length, width;
short cutoff;
struct tiff_header_struct image_header;
unsigned long histogram[GRAY_LEVELS+1];

if(does_not_exist(out_name)){
printf("\n\n output file does not exist %s",
out_name);
read_tiff_header(in_name, &image_header);
round_off_image_size(&image_header,
&length, &width);
image_header.image_length = length*ROWS;
image_header.image_width = width*COLS;
create_allocate_tiff_file(out_name, &image_header,
out_image);
} /* ends if does_not_exist */

read_tiff_image(in_name, the_image, il, ie, ll, le);

/***************************
*
* Detect the edges. Do
* not threshold.
*
****************************/

if(edge_type == 1 ||
edge_type == 2 ||
edge_type == 3)
detect_edges(in_name, out_name, the_image,
out_image, il, ie, ll, le,
edge_type, 0, 0);

if(edge_type == 4){
quick_edge(in_name, out_name, the_image,
out_image, il, ie, ll, le,
0, 0);
} /* ends if 4 */
if(edge_type == 5){
homogeneity(in_name, out_name, the_image,
out_image, il, ie, ll, le,
0, 0);
} /* ends if 5 */

if(edge_type == 6){
difference_edge(in_name, out_name, the_image,
out_image, il, ie, ll, le,
0, 0);
} /* ends if 6 */

if(edge_type == 7){
contrast_edge(in_name, out_name, the_image,
out_image, il, ie, ll, le,
0, 0);
} /* ends if 7 */

if(edge_type == 8){
gaussian_edge(in_name, out_name, the_image,
out_image, il, ie, ll, le,
3, 0, 0);
} /* ends if 8 */

if(edge_type == 10){
range(in_name, out_name, the_image,
out_image, il, ie, ll, le,
3, 0, 0);
} /* ends if 10 */

if(edge_type == 11){
variance(in_name, out_name, the_image,
out_image, il, ie, ll, le,
0, 0);
} /* ends if 11 */

/* copy out_image to the_image */
for(i=0; i for(j=0; j the_image[i][j] = out_image[i][j];

/******************************
*
* Threshold the edge detector
* output at a given percent.
* This eliminates the weak
* edges.
*
*******************************/

zero_histogram(histogram);
calculate_histogram(the_image, histogram);
find_cutoff_point(histogram, percent, &cutoff);
threshold_image_array(the_image, out_image,
255, cutoff, set_value);

if(erode != 0){
/* copy out_image to the_image */
for(i=0; i for(j=0; j the_image[i][j] = out_image[i][j];
erode_image_array(the_image, out_image,
set_value, erode);
} /* ends if erode */

/*******************************
*
* Read the original gray shade
* image back into the_image.
*
*******************************/

read_tiff_image(in_name, the_image, il, ie, ll, le);

/*******************************
*
* Overlay the edge values
* on top of the original
* image by setting them to
* FORGET_IT so the region
* growing will not use those
* points.
*
*******************************/

for(i=0; i for(j=0; j if(out_image[i][j] == set_value)
the_image[i][j] = FORGET_IT;

pixel_grow(the_image, out_image, diff,
min_area, max_area);

write_array_into_tiff_image(out_name, out_image,
il, ie, ll, le);

} /* ends edge_gray_shade_region */



  3 Responses to “Category : Files from Magazines
Archive   : CUJ9306.ZIP
Filename : 1106092B

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/