Xem mẫu

  1. { FGetPibRow(buff,0,511,i); fwrite(buff,512,2,fptro); } fclose(fptro); gotoxy(70,25); textattr(LIGHTGRAY+(BLACK
  2. palette.red[k] = (n  palette.red[k] + r)/(n + 1) ¶nh mµu cã thÓ hiÓn thÞ nh­ mét ¶nh møc c­êng ®é s¸ng 8 bit tÝnh dïng biÓu thøc ®é chãi vµ môc mµu tÝnh ra. Chó ý lµ ¶nh mµu cung cÊp trong cuèn s¸ch nµy cã chiÒu réng lµ 512, vµ chiÒu cao lµ 256 ®iÓm. ¶nh sÏ chØ hiÖn lªn c©n xøng chØ khi ta dïng vØ m¹ch PIB ATI. Khi hiÓn thÞ ¶nh dïng bé chuyÓn ®æi ®å ho¹ video, ®Ó cho ¶nh cã tû lÖ hîp lý, b¹n cÇn chuyÓn ¶nh cã kÝch th­íc 256  256. Ch­¬ng tr×nh thùc hiÖn chuyÓn ®æi nµy l­u gi÷ trªn ®Üa trong file cã tªn lµ ATI_SCAL.C. ¶nh cã thÓ hiÖn lªn d­íi chÕ ®é Microsoft Window b»ng c¸ch ®Çu tiªn chuyÓn ¶nh thµnh d¹ng bitmap cho Windows. C¸c file nµy th­êng cã phÇn më réng lµ BMP. Ch­¬ng tr×nh dïng chuyÓn mét ¶nh mµu thµnh file BMP ®­îc cung cÊp trªn ®Üa d­íi tªn BIN2BMP.EXE. Mét ¶nh ®· ®­îc chuyÓn ®æi cã thÓ ®­îc xem b»ng ch­¬ng tr×nh Paintbrush cña Windows. Chó ý r»ng Windows ph¶i ë chÕ ®é hiÓn thÞ 256 mµu. Thuéc tÝnh nµy xuÊt hiÖn khi b¹n nh¾p ®óp vµo nhãm ch­¬ng tr×nh "Main" vµ sau ®ã nh¾p ®óp vµo "Window Setup". KÝch "Options", sau khi ®· kÝch vµo "Change System SettÝng". B¹n cÇn ®Üa Windows' video driver cho phÐp m¸y tÝnh vµ vØ m¹ch video chuyÓn sang chÕ ®é mµ b¹n mong muèn. Mét sè ch­¬ng tr×nh dïng ®Ó hiÓn thÞ ¶nh mµu d­íi DOS dïng vØ m¹ch VGA còng ®· cã s½n trªn ®Üa. §äc file README.DOC ®Ó hiÓu thªm vÒ c¸c chøc n¨ng nµy. Ch­¬ng tr×nh hiÓn thÞ DOS sÏ hiÓn thÞ ¶nh PIB ATI. B¹n sÏ cÇn chia hoÆc biÕn ®æi chóng theo d¹ng thÝch hîp cho window. Ch­¬ng tr×nh hiÓn thÞ DOS sÏ lµm viÖc trªn hÖ thèng cña b¹n nÕu vØ m¹ch video cña b¹n tu©n theo tiªu chuÈn VESA. NÕu b¹n cã khã kh¨n trong hiÖn thÞ d­íi m«i tr­êng DOS, b¹n h·y dïng trong m«i tr­êng Windows ®­îc gi¶i thÝch ë trªn. SÏ cã mét sù thay ®æi râ rµng chÊt l­îng cña ¶nh hiÖn lªn trªn hÖ thèng cã kh¶ n¨ng thÓ hiÖn 32,768 mµu so víi ¶nh hiÖn lªn trªn hÖ thèng cã kh¶ n¨ng thÓ hiÖn 256 mµu. §Ó thÊy râ sù kh¸c nhau nµy b¹n cÇn ch¹y ch­¬ng tr×nh 11.4 ®Ó lÊy vµ hiÖn lªn c¸c ®iÓm ¶nh trªn vØ m¹ch PIB, nÕu vØ m¹ch nµy ®· ®­îc cung cÊp s½n cho hÖ thèng cña b¹n, hoÆc b¹n cã thÓ thay ®æi ch­¬ng tr×nh ®Ó thÝch hîp víi vØ m¹ch ¶nh mµu, nÕu b¹n cã mét s½n mét lo¹i vØ m¹ch kh¸c. B¹n cã thÓ dïng ¶nh "IHABCOL.IMG" ®· cã s½n trªn ®Üa víi kÝch th­íc 512  512 ®iÓm ¶nh. Ch­¬ng tr×nh 11.4 "LOADPIB.C". Loading a Colored image on the PIB board. The image is assumed to be of size 512 x 256 pixels. /*This program is for loading a colored 248
  3. image stored in a file onto the PIB board.*/ #include #include #include #include void main() { int i ; char buff[1024], file_name[30]; FILE *fptri; clrscr(); InitPIB(); SetScreen(0); SetInDispMode(); SetInterlace(1); FillPibRect(0,0,0,511,255,0); printf("Enter name of file containing colored image-->"); scanf("%S",file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { printf("file %s does not exist.\n"); exit(1); } for(i=0;i
  4. ®é chãi. ChiÒu réng ¶nh ®é chãi lµ 256  256. ¶nh ®é chãi ®­îc chia tõ 0 ®Õn 255 (8 bit). M· cña ch­¬ng tr×nh cung cÊp ë ch­¬ng tr×nh 11.5. Ch­¬ng tr×nh 11.5 "COLTOBW.C".Transforming a color image acquired from the PIB board (512 x 256) to a luminance image suitable for display on the VGA card. /* program to convert color imagefrom PIB board (256x512) to gray-levelimage (256x256) which you can later display on your VGA card using DISP.C */ #include #include #include #include #include void main() { int R,G,B,i,j,buffi[512],yt; char ch,buffo[256],file_name[15]; float y; FILE *fptri,*fptro; clrscr(); printf("Enter name of file containing color image-->"); scanf("%s",file_name); fptri=fopen(file_name, "rb"); if(fptri==NULL) { printf("File %s does not exist",file_name); exit(1); } yt=wherey(); again: gotoxy(1,yt); delline(); printf("Enter name of file to store BW image-->"); scanf("%s",file_name); if(access(file_name,0)==0) { 250
  5. printf("File exists. Wish to overwrite? (y or n)-->"); while(((ch=tolower(getch()))!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y': break; case 'n': gotoxy(1,yt); delline(); goto again; } } fptro=fopen(file_name,"wb"); for(i=0;i 5; R=(0x7C00 & buffi[j]) >> 10; y=R+4.5907*G+0.0601*B; ch=(char)(y*1.45568+0.5); /* ch=Y/Ymax*255.0 i.e. scale range between 0 to 255. */ /* Y=0.30*R+0.59*G+0.11*B; ch=(char)(Y*8.225806+0.5); */ buffo[j>>1]=ch; } fwrite(buffo,256,1,fptro); } fclose(fptri); fclose(fptro); } HÖ sè nh©n Y trong ch­¬ng tr×nh 11.5 ®­îc cho theo : 251
  6. 255.0 (1  4.5907  0.0601)  32.0 BiÕn ®æi nµy cho sè møc n»m trong kho¶ng gi÷a 0 vµ 255. Chó ý r»ng cho vØ m¹ch PIB, sè møc lín nhÊt cho mçi mµu chÝnh lµ 32. Mét biÓu thøc néi suy cho ®é s¸ng dïng ®Ó biÕn ®æi tÝn hiÖu truyÒn h×nh mµu sang tÝn hiÖu ®en tr¾ng: Y = 0,30R + 0,59G + 0,11B (11.4) BiÓu thøc nµy dùa theo c¶m gi¸c cña m¾t vµo ba mµu chÝnh. §Ó kiÓm tra ch­¬ng tr×nh 11.5 chóng ta sö dông ¶nh "IHABCOL.IMG". KÕt qu¶ dïng biÓu thøc (11.3) giíi thiÖu trong h×nh 11.7. BiÓu thøc (11.4) lu«n cho mét kÕt qu¶ ®óng, cßn biÓu thøc (11.3) cho ta mét ¶nh møc x¸m cã ®é s¸ng tèt h¬n. §Ó hoµn thiÖn kiÕn thøc c¬ b¶n cña chóng ta vÒ ¶nh mµu chóng t«i sÏ cung cÊp cho b¹n mét ch­¬ng tr×nh dïng cho vØ m¹ch PIB ®Ó hiÓn thÞ ba mµu (®á, lôc, lam) d­íi d¹ng ¶nh mµu. Mét ¶nh sÏ ®­îc n¹p vµo vØ m¹ch PIB tr­íc tiªn khi sö dông LOADPIB. H×nh 11.7 ¶nh møc x¸m cña ¶nh "IHABCOL.IMG". Ch­¬ng tr×nh 11.6 RGBCOMP.C . HiÓn thÞ mét trong 3 mµu chÝnh cña ¶nh mµu trªn PIB. 252
  7. /*Program 11.6 "RGBCOMP.C". Program for displaying one of the three primary Image components of a color image on the PlB board. The color Image should be loaded first on the PIB board.*/ /* Program for producing r or g or b component image for a color image loaded on the PIB board. */ #include #include #include void main() { unsigned color,ch; int y; char file_name; clrscr(); printf("\nwhich image component would you like to see\n"); printf("Press r for red \n g for green\n b for blue\\n"); while(((ch=getch())!='r')&&(ch!='g')&&(ch!='b')); switch(ch) { case 'r': color=0xFC00; break; case 'g': color=0x83E0; break; case 'b': color=0x811F; } for(y=0;y
  8. 11.7 Läc ¶nh mµu Kh«ng cã g× kh¸c nhau c¬ b¶n gi÷a läc mét ¶nh ®en tr¾ng vµ läc mét ¶nh mµu. Víi ¶nh mµu chóng ta cã thÓ thùc hiÖn läc b»ng mét trong hai ph­¬ng ph¸p. Chóng ta cã thÓ läc ba mµu chÝnh nh­ läc mét ¶nh ®en tr¾ng, hoÆc läc ¶nh ®é chãi sau ®ã sö dông kÕt qu¶ ®Ó ®­a ra ¶nh mµu. C¶ hai ph­¬ng ph¸p nµy hoµn toµn ®óng, tuy nhiªn, ph­¬ng ph¸p sau hay ®­îc dïng h¬n v× mét sè lý do. Xö lý riªng ¶nh ®é chãi th× b¹n sÏ tiÕt kiÖm ®­îc sè phÐp tÝnh to¸n, vµ nÕu b¹n dïng phÇn cøng cho läc thêi gian thùc th× ph­¬ng ph¸p nµy sÏ rÊt tiÕt kiÖm phÇn cøng. 11.7.1 Läc riªng ba mµu chÝnh Ph­¬ng ph¸p nµy ®­îc tr×nh bµy nh­ h×nh 11.8. TÊt c¶ c¸c mµu chÝnh ®­îc läc riªng biÖt, sau ®ã ®­îc khuyÕch ®¹i bï l¹i suy gi¶m do bé läc g©y ra. Ph­¬ng ph¸p nµy, nÕu lµm b»ng phÇn cøng, sÏ ®ßi hái ba bé läc riªng biÖt. KhuÕch Läc mµu ®á ®¹i ¶nh ®· läc ¶nh mµu KhuÕch Läc mµu lôc ®¹i KhuÕch Läc mµu ®¹i H×nh 11.8 Läc riªng biÖt ba mµu chÝnh. Bµi tËp 11.1 1. LËp mét ch­¬ng tr×nh läc ¶nh mµu dïng s¬ ®å h×nh 11.8. Bé läc cã thÓ lµ kiÓu FIR hoÆc lµ kiÓu IIR, vµ kh«ng nhÊt thiÕt ph¶i cã cïng ®¸p øng tÇn sè, vÝ dô, tÝn hiÖu ®á cã thÓ läc qua bé läc th«ng cao, tÝn hiÖu lam qua bé läc th«ng thÊp, vµ mµu lôc ®i qua bé läc th«ng tÊt. 2. KiÓm tra ch­¬ng tr×nh trªn ¶nh "AUTHOR.IMG" ®· cã s½n trªn ®Üa. Dïng bé läc FIR th«ng cao ®­îc thiÕt kÕ theo kiÓu xÊp xØ víi tÇn sè c= 1.0 rad/®¬n vÞ cho tÊt c¶ ba mµu thµnh phÇn. 11.7.2 Läc riªng ¶nh tÝn hiÖu chãi Mét tÝnh chÊt cña hçn hîp mµu (xem phÇn 11.2) lµ mét ®iÓm ¶nh mµu th× ®éc lËp víi ®é chãi cña ¶nh trªn mét ph¹m vi réng. Dùa trªn tÝnh chÊt 254
  9. nµy, ta cã thÓ läc mét ¶nh mµu mµ kh«ng lµm thay ®æi c¸c mµu cña nã. V× vËy mµ bé läc chØ cho ra tÝn hiÖu chãi. ¶nh ®· ®­îc läc tÝn hiÖu chãi cã thÓ dïng ®Ó söa l¹i møc cña ba mµu chÝnh mµ kh«ng thay ®æi tû lÖ R:G:B t¹i tÊt c¶ c¸c ®iÓm. Ch­¬ng tr×nh lµ c¸ch gi¶i thÝch tèt nhÊt cho s¬ ®å h×nh 11.8. Còng cÇn ph¶i nãi r»ng c¸c mµu chÝnh lÊy ra ®· ®­îc söa l¹i møc t¹i tÊt c¶ c¸c ®iÓm b»ng hµm khuyÕch ®¹i, hµm nµy rót ra b»ng chia tÝn hiÖu chãi lÊy ra cho c¸c ®iÓm mµ ta ®· lÊy tÝn hiÖu chãi vµo. NÕu nh­ trong ph­¬ng ph¸p tr­íc, ba bé läc cho ba mµu chÝnh cã ®¸p øng tÇn sè ®éc lËp, th× ph­¬ng ph¸p nµy sÏ cho kÕt qu¶ gÇn nh­ ®éc lËp víi ph­¬ng ph¸p tr­íc. Bµi tËp 11.2 LËp mét ch­¬ng tr×nh C läc ¶nh mµu dïng s¬ ®å h×nh 11.9. Chó ý nÕu Yi = 0.0, th× tÝn hiÖu ra khái bé läc cã R0 = G0 = B0 = 0.0. KiÓu bé läc cã thÓ lµ FIR hoÆc lµ IIR. 11.8 Lùa chän hÖ sè söa l¹i s¾c mµu vµ läc Mét vÊn ®Ò khã kh¨n trong xö lý ¶nh mµu lµ söa l¹i s¾c mµu cña mét mµu ®Æc biÖt mµ kh«ng lµm ¶nh h­ëng c¸c mµu cßn l¹i. Mét ph­¬ng ph¸p hay dïng ®ã lµ söa l¹i c¸c mµu chÝnh ®Õn møc chÝnh x¸c cã thÓ, cïng lóc c©n b»ng c¸c mµu cßn l¹i ®Ó h×nh ¶nh cã mµu tù nhiªn. MÆc dï, ®é chÝnh x¸c lµ sù c©n b»ng tÊt c¶ c¸c s¾c mµu sao cho h×nh ¶nh cã mµu s¾c tù nhiªn b»ng c¸c thay ®æi ba s¾c mµu chÝnh. Ph­¬ng ph¸p lùa chän thay ®æi s¾c mµu cña c¸c mµu ®Æc biÖt mµ kh«ng ¶nh h­ëng c©n b»ng mµu víi phÇn cßn l¹i cña ¶nh. Ph­¬ng ph¸p nµy gäi lµ thay ®æi s¾c mµu cã lùa chän. Nã cã kh¶ n¨ng lµm t¨ng lªn hoÆc gi¶m ®i mét mµu ®Æc biÖt b»ng c¸ch dïng bé läc mµu lùa chän. C©u hái ®Æt ra lµ: Lµm thÕ nµo chóng ta cã thÓ nhËn ra s¾c mµu ®Æc biÖt? C©u tr¶ lêi cho vÊn ®Ò nµy dùa theo biÓu ®å mµu. Mét líp mµu ®­îc lÊy ra b»ng c¸ch chia biÓu ®å mµu thµnh c¸c miÒn mµu, mçi miÒn chøa mét mµu ®Æc biÖt (xem h×nh 11.10). Trong h×nh 11.10, G = lôc, Y = vµng, ST = skin tone(amber), R = ®á, M = ®á t­¬i, B = lam, vµ C = xanh n­íc biÓn. C¸c ®­êng th¼ng (tõ l0 ®Õn l6) chia thµnh c¸c mµu dùa trªn c¶m gi¸c cña con ng­êi. BiÓu thøc cña c¸c ®­êng th¼ng nµy: y  0.333 xi  0.333  x  0.333 yi  0.333 (11.5) ë ®©y Pi(xi,yi) vµ {i = 0 ®Õn 6} lµ ®iÓm cho trong h×nh. BiÓu thøc cho c¸c ®­êng nµy cã thÓ cho d­íi d¹ng 255
  10. (11.6) y  mi x  ci Y Ro  R o Y1 ¶nh ®· Y Go  G o Sinh ra Yo Y1 läc. Bé läc. Y1 Y1=R + 4.5907G + 0.0601B Y Bo  B o Y1 H×nh 11.9 Ph­¬ng ph¸p chØ läc tÝn hiÖu chãi. y G (0.2757, 0.7147) P0(0.408, 0.585) G l0 P1(0.479, 0.517) Y P6 l1 l2 P2(0.532, 0.465) (0.229, 0.424) l 6 (0.333, 0.333) l5 R(0.735, 0.265) R l4 l3 P5 W (0.208, 0.285) M P3(0.501, 0.160) B P4(0.337, 0.086) B (0.167, 0.009) x H×nh 11.10 Ph©n chia mµu s¾c trong biÓu ®å mµu. ë ®©y mi vµ ci {i= 0 ®Õn 6} cho trong b¶ng 11.2. MiÒn xung quanh ®iÓm (0.333, 0.333), biÓu diÔn cho mµu tr¾ng trong s¬ ®å mµu, cã thÓ xÊp xØ b»ng mét vßng trßn cã b¸n kÝnh r  0,03. Ch­¬ng tr×nh cho ph©n chia líp mµu, tÝnh gi¸ trÞ R, G, B cho mét ®iÓm theo: 1. TÝnh X, Y, Z. 2. TÝnh x vµ y. 3. TÝnh: circ = (x - 0.333)2 + (y - 0.333)2 - r2 256
nguon tai.lieu . vn