LogIn E-mail
¼³°èÀ̾߱â
rgb2ycbcr.pl
# 91 JMJS    10.5.12 15:20

#!/usr/bin/perl

sub round { sprintf("%.$_[1]f", $_[0]);}


sub rgb2ycbcr {
        my ($r,$g,$b,$y,$cb,$cr)=@_;
        $y = ( 306*$r+601*$g+117*$b)/1024;
        $cb=((-173*$r-339*$g+512*$b)/1024)+128;
        $cr=(( 512*$r-429*$g- 83*$b)/1024)+128;
        if($y <0){$y =0;} if($y >255){$y =255;}
        if($cb<0){$cb=0;} if($cb>255){$cb=255;}
        if($cr<0){$cr=0;} if($cr>255){$cr=255;}
        (int $y,int $cb,int $cr);
}


sub ycbcr2rgb {
        my ($y,$cb,$cr,$r,$g,$b)=@_;
        $r=$y+((         $cr*1436)>>10)-179;
        $g=$y-(($cb* 352+$cr* 731)>>10)+135;
        $b=$y+(($cb*1815         )>>10)-227;
        if($r<0){$r=0;} if($r>1023){$r=1023};
        if($g<0){$g=0;} if($g>1023){$g=1023};
        if($b<0){$b=0;} if($b>1023){$b=1023};
        (int $r,int $g,int $b);
}

sub de2_rgb2ycbcr {
        my ($r,$g,$b,$y,$cb,$cr)=@_;
        $r=(($r*4)-1)*128+105555;
        $g=(($g*4)-1)*128 -64218;
        $b=(($b*4)-1)*128+131072;
        $y =(( 306.0295*$r+600.9306*$g+117.0399*$b)/1024/551); #+ 16.0451;
        $cb=((-176.5678*$r-346.7149*$g+523.2827*$b)/1024/551); #+127.9907;
        $cr=(( 523.2827*$r-437.9799*$g- 85.3029*$b)/1024/551); #+127.9288;
        if($y <0){$y =0;} if($y >255){$y =255;}
        if($cb<0){$cb=0;} if($cb>255){$cb=255;}
        if($cr<0){$cr=0;} if($cr>255){$cr=255;}
        #(int $y,int $cb,int $cr);
        (round($y,0),round($cb,0),round($cr,0));
}


sub de2_ycbcr2rgb {
        my ($y,$cb,$cr,$r,$g,$b)=@_;
        $r=((551*$y        +756*$cr-105555)/128)+1;
        $g=((551*$y-186*$cb-385*$cr+ 64218)/128)+1;
        $b=((551*$y+955*$cb        -131072)/128)+1;
        $r/=4; if($r<0){$r=0;} if($r>255){$r=255};
        $g/=4; if($g<0){$g=0;} if($g>255){$g=255};
        $b/=4; if($b<0){$b=0;} if($b>255){$b=255};
        #($r,$g,$b);
        #(round($r,0),round($g,0),round($b,0));
        (int $r,int $g,int $b);
}

for(my $r=0;$r<256;$r+=15) {
 for(my $g=0;$g<256;$g+=15) {
  for(my $b=0;$b<256;$b+=15) {
        my($y,$cb,$cr)        =de2_rgb2ycbcr($r,$g,$b);        
        ($r,$g,$b)        =de2_ycbcr2rgb($y,$cb,$cr);
        ($y,$cb,$cr)        =de2_rgb2ycbcr($r,$g,$b);        
        my($r2,$g2,$b2)        =de2_ycbcr2rgb($y,$cb,$cr);
        if(($r!=$r2)||($g!=$g2)||($b!=$b2)) {
                print "$r $g $b";
                print "\t-> $y $cb $cr";
                print "\t-> $r2 $g2 $b2";
                ($y,$cb,$cr)=de2_rgb2ycbcr($r2,$g2,$b2);        
                print "\t-> $y $cb $cr";
                ($r2,$g2,$b2)=de2_ycbcr2rgb($y,$cb,$cr);
                print "\t-> $r2 $g2 $b2\n";
        }
}}}

÷ºÎÆÄÀÏ: rgb2ycbcr.pl
°Ô½Ã¹°: 115 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
115  perl format JMJS 24.6.22 39
114  perl -p -i -e s/abc/def/g JMJS 24.3.26 62
113  Deleting from a Hash JMJS 24.1.23 70
112  yaml file Àбâ JMJS 23.11.30 114
111  alzipcon JMJS 22.11.26 166
110  file2date.pl JMJS 24.6.1 278
109  UTF-8, EUC-KR JMJS 19.12.15 248
108  wget.pl LWP Simple get JMJS 19.9.17 283
107  X JMJS 19.9.17 284
106  X JMJS 19.9.17 285
105  X JMJS 19.9.17 284
104  X JMJS 19.9.17 284
103  X JMJS 19.9.17 280
102  X JMJS 19.9.17 283
101  X JMJS 19.9.17 283
100  jsame.pl JMJS 09.5.21 1797
99  jos.pl JMJS 08.11.29 1533
98  jmngr.pl - jmjspro manager JMJS 08.11.29 1570
97  vhdl.pm JMJS 08.11.29 1533
96  jreg.pl JMJS 08.11.29 1529
95  jtree.pm JMJS 08.11.29 1600
94  w2c.pl JMJS 08.11.29 1569
93  jdread.pl JMJS 08.11.29 1344
92  ffile.zip ffilediff.pl JMJS 09.4.24 1398
91  rgb2ycbcr.pl JMJS 10.5.12 1695
90  proview.pl JMJS 08.11.29 1720
89  smi_shift.pl JMJS 10.10.3 1373
88  srt2smi.pl srtshift.pl JMJS 18.7.14 1562
87  Perl CGI Input Test, getenv.cgi JMJS 18.11.21 1229
86  hash JMJS 24.6.22 1517
85  tr a-z A-Z ġȯ , ´ë¼Ò¹®ÀÚ º¯È¯ , ¹®ÀÚ¿­ Á¶°Ç , ... JMJS 24.6.22 1314
84  JARRAY->jfunc JMJS 08.10.2 1285
83  ¼öÄ¡ÇÔ¼ö - ... JMJS 09.5.7 1753
82  ¿ªÇà·Ä3x3 JMJS 09.5.7 1811
81  hex2int.pl JMJS 10.9.12 2528
80  stat - file status º¸±â JMJS 07.12.16 1403
79  Perl Tip JMJS 24.6.22 2541
78  SMI file sync delay JMJS 07.7.18 1499
77  rmword.pl JMJS 07.6.18 1412
76  pack unpack JMJS 24.6.22 1318
75  [Perl]read_dir.pl JMJS 07.2.22 1598
74  [Perl]jtab2char - tab¹®ÀÚ¸¦ ƯÁ¤ char·Î ¹Ù²ãÁÖ±â JMJS 07.2.22 1556
73  Perl ¼ýÀÚ Sorting JMJS 11.5.17 1649
72  [CGI]GET and POST JMJS 06.11.20 3312
71  Perl Grammer JMJS 06.9.4 2894
70  Ç¥ÁØ ¸ðµâ JMJS 06.8.10 1793
69  Getopt::Long example JMJS 06.8.10 1986
68  array of array JMJS 06.4.22 1392
67  [HTML]Å×ÀÌºí ¹è°æ¿¡ ±×¸²³Ö±â JMJS 06.3.8 1481
66  l2w.pm - line to word JMJS 08.12.1 1471
65  make_random_chars JMJS 05.8.10 1322
64  mail º¸³»´Â script JMJS 05.3.23 1285
63  ½ÇÇàÆÄÀÏÀ» ½ÇÇà½ÃÅ°°í Ç¥ÁØ¿¡·¯ Àбâ JMJS 09.2.25 1292
62  Æ˾÷â(°øÁöâ)¶ç¿ì±â Jinsung 03.12.16 2393
61  print <<ENDLINE JMJS 03.12.5 1389
60  [HTML]Target JMJS 03.5.21 1419
59  [Perl]jutil.pm JMJS 03.5.3 1665
58  [Perl]jdiff.pl JMJS 02.6.6 1559
57  [Perl]cfilter.pm - commant filter JMJS 02.1.31 1595
56  [HTML]ÀÚµ¿À¸·Î ´Ù¸¥ ÆäÀÌÁö À̵¿ JMJS 02.1.19 1434
55  STDIN file open glob -w warning JMJS 24.6.22 1469
54  opendir , readdir , closedir JMJS 24.6.22 1475
53  rand_diff JMJS 01.10.23 1373
52  vcd2v.pl JMJS 15.8.25 1439
51  file upload JMJS 24.6.22 1392
50  umask(070) <- chmod o-rwx Áø¼º 01.3.16 1547
49  head2index Áø¼º 01.3.15 1247
48  grep.pl JMJS 11.1.20 1369
47  chr(13) = \M Áø¼º 01.3.15 1235
46  stty JMJS 01.3.12 1351
45  des.pl JMJS 01.3.8 1306
44  chr_plus.pl JMJS 01.3.8 1321
43  get passwd in unix JMJS 19.8.18 1174
42  unsort JMJS 19.9.10 1409
41  read from website web JMJS 19.5.15 1210
40  vec JMJS 01.3.8 1468
39  chomp $_ @_ say defined use 5.010 state grep any ... JMJS 18.10.27 1383
38  [Perl Tk] µµ½ºÃ¢ ¾øÀÌ, ÆÞ Tk ½ºÅ©¸³Æ® ½ÇÇàÇϱâ; ... JMJS 17.9.30 1345
37  @bs = sort {$a <=> $b} @as; JMJS 17.7.12 1422
36  if ( -e -z -s -f -d -T -B -M ) JMJS 16.3.10 1505
35  mkmm.pl - make freemind JMJS 12.5.22 1451
34  perl -pi.orig -e "s/\bu_(\w+_t)\b/u$1/g" *.c JMJS 11.8.26 1451
33  .xls output csv ÆÄÀÏ¿¡ \n "°¡ ÀÖÀ»¶§ JMJS 11.4.13 1335
32  jdcat.pl juncat.pl JMJS 11.2.24 1481
31  print chr(ord('a')); JMJS 01.3.8 1392
30  require "/user/home/jin1/jin1.pm"; JMJS 00.11.28 1336
29  for(my $i=0; $i < @abc; $i ++) {} JMJS 00.11.15 1424
28  remove blank $abc =~ s/[\s]+//g; JMJS 00.11.15 1367
27  array and for JMJS 00.11.14 1210
26  È¨ÆäÀÌÁö ÀÚµ¿ À̵¿ JMJS 00.10.28 1265
25  html¿¡¼­ ¾²ÀÌ´Â ±âȣǥ½Ã¹æ¹ý JMJS 00.9.30 1219
24  ¹è¿­ÀÇ ¹üÀ§ ¿¬»êÀÚ JMJS 00.9.20 1513
23  for(1..3) { print "$_";} JMJS 09.4.24 1199
22  package JMJS 24.6.22 1265
21  ÁÙ¿¡¼­ ÇѱÛÀÚ °íÄ¡±â JMJS 00.8.7 1323
20  hotkey function by getc JMJS 00.7.21 1418
19  read, sysread, syswrite JMJS 00.7.21 2226
18  crypt JMJS 00.7.13 1532
17  csv2gan.pl JMJS 11.4.4 1538
16  hexa JMJS 24.6.18 1360
15  file in out.pl JMJS 00.7.5 1549
14  ARGV JMJS 00.7.5 1391
13  jtime.pm - localtime, timelocal JMJS 09.4.9 1898
12  @INC JMJS 00.7.5 1741
11  $#myarray JMJS 00.7.5 1502
10  Hash of Array JMJS 00.7.5 1311
9  package JARRAY JHASH JMJS 00.7.4 1553
8  foreach, while each, dos2unix.pl, next last JMJS 09.4.24 1517
7  X JMJS 24.6.22 1329
6  file lock JMJS 00.7.4 1457
5  gettime JMJS 00.7.4 1419
4  [Perl]jcdread.pl JMJS 00.7.4 1497
3  [Perl]jdread.pl JMJS 00.7.4 1403
2  Monti Hall problem JMJS 24.6.27 1389
1  DESTROY JMJS 09.7.20 1344
[1]