Xem mẫu
- {
FGetPibRow(buff,0,511,i);
fwrite(buff,512,2,fptro);
}
fclose(fptro);
gotoxy(70,25);
textattr(LIGHTGRAY+(BLACK
- 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 lu 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
- 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
- ®é 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
- 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
- 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
- /*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
- 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
- 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
- (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