¤Gȼv¹³¤À³Î»Ppºâ¤Î¨ä¥L
¡@
¡» ¼v¹³¤À³Î»Pp¼Æ
¼v¹³¤À³Î»Pp¼Æªºµ{¦¡¼¶¼g¤Q¤À²³æ¡A§ÚÌ¥u¶·¥H¤K¾F±µ©Î¥|¾F±µÂI¬°°ò¦¡A¥Ñ¥ª¦Ó¥k¡A¦A¥Ñ¥k¦Ó¥ª³v¦¸±½´y¼v¹³¤¤¦³«G«×ªºÂI¯À¡A¦A¥H¸ÓÂI¥Xµo¦V¾Fªñ¦UÂI¥h´M§ä¡A±N´M¨ìªº³sµ²¦b¤@°_¥h´M§ä¡A±N´M¨ìªº³sµ²¦b¤@°_ªºÂI¤©¥H½s¦C¦P¤@Ó½XÈ¡A«Ý½T©w©Ò¦³³sµ²¦b¤@°_ªºÂI¯À§¡¤wÂà´«¦¨¦P¤@½XÈ«á¡A§Y¥i¦A¨Ï¥Î¥t¤@½Xȹï¤U¤@ӥؼйê¬I±½ºË³B²z¡C¦b¦¹§Ṳ́¶²Ð¼v¹³¤À³Î»Pp¼Æ ¢á¢Ó¢Õ ªºµ{¦¡¨Ò¡A¦b¦¹µ{¦¡¤¤¡A¥ý±N¦¹ì©l¼v¹³§¹¾ãÅã¥Ü©ó¿Ã¹õ¥ª°¼(¹Ï1)¡A¦A±N¦¹¼v¹³¤GȤƫ᧹¾ãÅã¥Ü©ó¿Ã¹õ¥k°¼¡A¦Ó¨C§ä¨ì¤@Óª«Åé¡A§Y±N¦¹ª«ÅéÅã¥Ü©ó¿Ã¹õ¥ª°¼(¹Ï2)¡Aª½¨ì±½ºË§¹²¦«á¡A§Y±Nª«Åé¼Æ¶qÅã¥Ü©ó¿Ã¹õ¥k¤W¤è¡C
¹Ï1 ì©l¼v¹³
¹Ï2 ¼v¹³¤À³Î»Pp¼Æ¶i¦æ®É¤§¿Ã¹õ
²{±Nìµ{¦¡½X¤Î¨ä»¡©ú¦C¥X¦p¤U¡G
#include <stdio.h>
#include "EPOTUTOR.H"
#include "bios.h"
#include <stdlib.h>
#include <math.h>
#include <graphics.h>
#include <process.h>
#include <conio.h>
#include <alloc.h>
void main()
{
char *fname="s7.tif"; /*¹ÏÀɦWºÙ*/
imgdes image1, image2;
int rcode;
int flag=1;
int i,j,x,y,x0,y0;
/*ªì©l¤Æ*/
initialize_image( &image1);
initialize_image( &image2);
clrscr();
initialize_display();
/*Ū¤J¹ÏÀÉ*/
if((rcode=loadfile( fname, TIF, &image1)) != NO_ERROR)
{
setvideomode(3);
printf("\nError in loading %s, rcode = %d", fname, rcode);
exit(1);
}
/*Åã¥Ü¹ÏÀÉ*/
if((rcode=display_gray_image( 0x12, 42, 2, &image1)) != NO_ERROR)
{
setvideomode(3);
printf("\n error displaying image, rcode = %d", rcode);
}
/*¤GȤÆ*/
Binarize(200,&image1,&image2);
if((rcode=display_gray_image( 0x12, 300, 2, &image2)) != NO_ERROR)
{
setvideomode(3);
printf("\n error displaying image, rcode = %d", rcode);
}
/*°Ï°ì¤À³Î*/
do
{
x=0;
y=0;
while(getpixelgray(&image2,x,y)!=255)
{
if(y==233&&x==255)
goto end;
if(x==255)
{
x=-1;
y++;
}
x++;
}
x0=x;
y0=y; /*°_©lÂI§¤¼Ð*/
setpixelgray(&image2,x0,y0,flag);
/* x¶b¤è¦V³vÂI±½´y */
for(y=y0;y<234;y++)
{
for(x=0;x<256;x++)
{
if(getpixelgray(&image2,x,y)==flag)
{
for(j=y-1;j<y+2;j++)
{
for(i=x-1;i<x+2;i++)
{
if(getpixelgray(&image2,i,j)==255)
setpixelgray(&image2,i,j,flag);
}
}
} /*end if*/
}
for(x=255;x>=0;x--)
{
if(getpixelgray(&image2,x,y)==flag)
{
for(j=y-1;j<y+2;j++)
{
for(i=x-1;i<x+2;i++)
{
if(getpixelgray(&image2,i,j)==255)
setpixelgray(&image2,i,j,flag);
}
}
} /*end if*/
}
}
/* y¶b¤è¦V³vÂI±½´y */
for(x=x0;x<256;x++)
{
for(y=0;y<234;y++)
{
if(getpixelgray(&image2,x,y)==flag)
{
for(j=y-1;j<y+2;j++)
{
for(i=x-1;i<x+2;i++)
{
if(getpixelgray(&image2,i,j)==255)
setpixelgray(&image2,i,j,flag);
}
}
} /*end if*/
}
for(y=233;y>=0;y--)
{
if(getpixelgray(&image2,x,y)==flag)
{
for(j=y-1;j<y+2;j++)
{
for(i=x-1;i<x+2;i++)
{
if(getpixelgray(&image2,i,j)==255)
setpixelgray(&image2,i,j,flag);
}
}
} /*end if*/
}
}
flag++; /* °Ï°ì¤À³ÎÁ`¼Æ */
} while(1);
end:; /* ¤À³Î§¹²¦ */
/*¤À³Î«á¦U§O°Ï°ìÅã¥Ü*/
for(i=1;i<flag;i++)
{
for(x=0;x<256;x++)
{
for(y=0;y<234;y++)
{
if(getpixelgray(&image2,x,y)==i)
setpixelgray(&image1,x,y,255);
else
setpixelgray(&image1,x,y,0);
}
}
if((rcode=display_gray_image( 0x12, 42, 2, &image1)) != NO_ERROR)
{
setvideomode(3);
printf("\n error displaying image, rcode = %d", rcode);
}
getch();
}
printf("%d",flag-1);
}
¦b¤@´T¤Gȼv¹³¤¤¥i¯à¥]§t¦hÁû·L²É¡A¬°¤F°Ï¤À¦UÓ·L²É¥H¤Î«K©ó¥H«á³æ¿W«×¶qpºâ¡A¦³¥²n¶i¦æ¼Ð°Oºtºâªk¡A«ü©w¨CÓ·L²É¤@Ó³æ¿Wªº¼Ð°O¡C¦p¦¹¤@¨Ó¡A¤£¶È¥i¥H±N³æ¤@·L²É¨ú¥X¤ÀªR¡A¤]¥i¥H¹ï¾ã´T¼v¹³¤¤©Ò¥]§tªº·L²ÉӼƶi¦æp¼Æ¡C¼Ð°Oºtºâªk¦p¤U¡G
°²³]¤Gȼv¹³¤¤¬°0ªºÂI¬OI´º¡A¬° 1 ªºÂI¬O·L²É¡A¦bºtºâªk¤¤±Ä¥Î¤K¾F±µÂI·j´M¡C
1. ºtºâªk¶}©l¡A¥O¼Ð°OLabel=1¡C
2. ¦Û¥ª¦V¥k¡B¥Ñ¤W¦Ü¤U±½ºË¼v¹³¡A§ä´M¨äȬ°1ªººØ¤lÂI¡A³]©wºØ¤lÂI¼Ð°O=Label¡C°²¦p§ä¤£¨ìºØ¤lÂI¡A«hµ²§ô¾ãӼаOºtºâªk¡C
3. ¹ï©óºØ¤lÂI©P³ò¦PȤ§¹³¯ÀÂI°µ¤Uz¾Þ§@¡G
¥Ñx¶b¤è¦V
(a) ¦Û¥ª¦V¥k³vÂI±½ºË¼v¹³¡AYf(x,y)¼Ð°O¬°Label¡A«h¥Of(x,y)¤K¾F±µÂI¤¤È¬°1ªº¹³¯ÀÂI¼Ð°O=Label¡C
(b) ¦Û¥k¦V¥ª³vÂI±½ºË¼v¹³¡AYf(x,y)¼Ð°O¬°Label¡A«h¥Of(x,y)¤K¾F±µÂI¤¤È¬°1ªº¹³¯ÀÂI¼Ð°O=Label¡C
§ïy¶b¤è¦V
(c) ¥Ñ¤W©¹¤U³vÂI±½ºË¼v¹³¡AYf(x,y)¼Ð°O¬°Label¡A«h¥Of(x,y)¤K¾F±µÂI¤¤È¬°1ªº¹³¯ÀÂI¼Ð°O=Label¡C
(d) ¥Ñ¤U©¹¤W³vÂI±½ºË¼v¹³¡AYf(x,y)¼Ð°O¬°Label¡A«h¥Of(x,y)¤K¾F±µÂI¤¤È¬°1ªº¹³¯ÀÂI¼Ð°O=Lable¡C
4. ¸g¹L¥|Ó¤è¦V±½ºË«á¡A¼Ð°O¬°L¤§·L²É³Q§¹¾ã¨ú¥X¡C«ü©w·sªº¼Ð°OLabel++¡A«½Æ¨BÆJ2¡Aª½¨ì¼Ð°O§¹©Ò¦³·L²É¡C
¡@