Defcard Software-actus
Modérateurs : Papy.G, fneck, Carl
Re: Defcard Software-actus
et j'vous emmerde tous là qu'est ce qui y'a !! fneck chien de traineau !! qu'est ce qui y'a ?? y'a un problème avec la réalité ?? l'oeuf est carré c'est ça ??
allez vous fair foutre et bon vent !!!!!!!!!!!!!!
allez vous fair foutre et bon vent !!!!!!!!!!!!!!
Re: Defcard Software-actus
Visiblement defcard a des difficultés avec le langage scientifique.
Essayons d'oublier les termes techniques pour employer un langage plus imagé :
- L'image de 320 points sur 200 affichée sur un grand écran et observée de près laisse bien voir tous les pixels.
- La même image affichée sur un timbre-poste paraît plus fine car on ne distingue pas les pixels sans l'aide d'instruments d'optique.
Ce n'est pas pour autant qu'elle est meilleure. C'est exactement la même, sa qualité n'a pas changé. Par contre la vue n'est pas assez bonne pour voir les défauts. En réduisant la taille on ne fait que masquer la mauvaise qualité, comme l'autruche masque le danger en enfonçant la tête dans le sable. Essayez de regarder le grand écran avec la tête dans le sable, ça vous piquera les yeux, mais vous ne verrez plus aucun défaut. Vous aurez obtenu l'image idéale, parfaite en tous points. Sera-t-elle meilleure ? Non.
La morale de ce post : au royaume des aveugles les pixels sont indiscernables (proverbe nouveau à méditer).
La morale de ce fil de discussion : il n'y a pas pire sourd que celui qui ne veut pas entendre (proverbe connu).
Essayons d'oublier les termes techniques pour employer un langage plus imagé :
- L'image de 320 points sur 200 affichée sur un grand écran et observée de près laisse bien voir tous les pixels.
- La même image affichée sur un timbre-poste paraît plus fine car on ne distingue pas les pixels sans l'aide d'instruments d'optique.
Ce n'est pas pour autant qu'elle est meilleure. C'est exactement la même, sa qualité n'a pas changé. Par contre la vue n'est pas assez bonne pour voir les défauts. En réduisant la taille on ne fait que masquer la mauvaise qualité, comme l'autruche masque le danger en enfonçant la tête dans le sable. Essayez de regarder le grand écran avec la tête dans le sable, ça vous piquera les yeux, mais vous ne verrez plus aucun défaut. Vous aurez obtenu l'image idéale, parfaite en tous points. Sera-t-elle meilleure ? Non.
La morale de ce post : au royaume des aveugles les pixels sont indiscernables (proverbe nouveau à méditer).
La morale de ce fil de discussion : il n'y a pas pire sourd que celui qui ne veut pas entendre (proverbe connu).
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7970
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Defcard Software-actus
REvenons en aux images
Le BM4 est bien mais le format de de base n'est pas à négliger pour autant. Voici ce que donne l'un de mes algos ZX adapté au thomson. On y trouve de magnifiques couleurs au prix d'une perte de définition: Un autre exemple: Quant au chat il donne: Perso j'aime assez l'aspect "grille" qui apparait avec cette trame. C'est d'ailleurs celle qui ressort le mieux et avec le moins de conflits de proximités parmi toutes celles dont le script dispose. Potentiellement je me dis que cette trame donenrait de très bon résultats pour faire de l'animation couleur depuis une carte SD.defcard a écrit :Voilà une image en 4 couleurs de 1200x600 à 25% de sa taille initiale:On remarque aisément que bm4 est un "top" !
Code : Tout sélectionner
#/bin/perl
#use Graphics::Magick;
use Image::Magick;
use MIME::Base64 qw( encode_base64 );
$glb_dith = ("default", "4x4", "8x8", "ostro94", "vac-14x14")[0];
$glb_target = ("zx","to")[1];
$glb_satur = 180;
$glb_blur = 0;
if($glb_target eq "zx") {
$glb_width = 256;
$glb_height = 192;
$glb_bloc_w = 8;
$glb_bloc_h = 8;
$glb_blur = 1;
}
if($glb_target eq "to") {
$glb_width = 320;
$glb_height = 200;
$glb_bloc_w = 8;
$glb_bloc_h = 1;
$glb_blur = 0.5;
}
@glb_files = @ARGV;
if(!@glb_files) {
print "No file found, reading from STDIN...";
while(<STDIN>) {
chomp;
y%\\%/%;
s%^([\S]):%/cygdrive/$1%;
push(@glb_files, $_);
}
print "done\n";
}
# creation dossier de sortie
mkdir("rgb") || die "rgb: $!" unless -d "rgb";
for my $i (0..$#glb_files) {
my $file = $glb_files[$i];
my $out = $file;
next if $out =~ /rgb/;
$out =~ s/.*[\\\/]//;
next if $out =~ /\.(txt|htm.*|ps|pdf)$/i;
print 1+$i,"/",1+$#glb_files," ",$file,"\033]0;$out\007\n";
$out =~ s/[\.][^\.]*//;
$out = "rgb/$out.png";
next if -f $out;
my $conv = &convert($file);
next unless $conv;
$conv->Write($out);
undef $conv;
sleep(2);
}
sub convert {
my($file) = @_;
# read image
my $img = Image::Magick->new();
my $x=$img->ReadImage($file);
if($x) {print STDERR $x; return undef;}
$img->Set(depth=>16);
$img->Set(colorspace=>"RGB");
$img->AutoLevel();
$img->Normalize();
$img->Modulate(saturation=>$glb_satur);
$img->Set(fuzz=>"5%");
$img->Trim();
$img = &liqrz($img,$glb_width,$glb_height);
$img->Blur(sigma=>$glb_blur) if $glb_blur;
#sleep(15);
# creation image 80x75
my @px = $img->GetPixels(map=>"RGB", height=>$glb_height, width=>$glb_width, normalize=>"True");
# ajout du dither
my @dither = ( [ 7, 13, 11, 4],
[12, 16, 14, 8],
[10, 15, 6, 2],
[ 5, 9, 3, 1] );
# bayer 2x2
@dither = ( [ 1, 4],
[ 3, 2]) if $glb_dith eq "2x2";
# bayer 4x4
@dither = ( [ 1, 9, 3, 11],
[13, 5, 15, 7],
[ 4, 12, 2, 10],
[16, 8, 14, 6]) if $glb_dith eq "4x4";
# bayer 8x8
@dither = ( [ 1, 49, 13, 61, 4, 52, 16, 64],
[33, 17, 45, 29, 36, 20, 48, 32],
[ 9, 57, 5, 53, 12, 60, 8, 56],
[41, 25, 37, 21, 44, 28, 40, 24],
[ 3, 51, 15, 63, 2, 50, 14, 62],
[35, 19, 47, 31, 34, 18, 46, 30],
[11, 59, 7, 55, 10, 58, 6, 54],
[43, 27, 39, 23, 42, 26, 38, 22]) if $glb_dith eq "8x8";
# void and cluster 14x14
@dither = (
[132, 188, 9, 79, 51, 19, 135, 90, 156, 103, 30, 96, 185, 74],
[ 23, 87, 114, 172, 143, 106, 35, 167, 10, 61, 152, 129, 41, 111],
[169, 138, 46, 29, 65, 189, 83, 55, 125, 190, 81, 14, 157, 57],
[ 8, 62, 187, 122, 155, 7, 109, 178, 25, 101, 39, 177, 94, 124],
[ 84, 149, 97, 18, 89, 134, 45, 146, 70, 162, 140, 73, 31, 182],
[116, 28, 164, 48, 179, 66, 165, 15, 121, 49, 6, 128, 154, 53],
[191, 59, 127, 82, 117, 22, 107, 78, 174, 93, 192, 64, 100, 13],
[ 77, 145, 5, 186, 38, 150, 193, 40, 136, 24, 118, 32, 171, 133],
[ 36, 173, 104, 67, 130, 80, 4, 98, 58, 160, 71, 142, 54, 95],
[115, 21, 50, 159, 20, 147, 170, 123, 184, 12, 105, 181, 3, 166],
[153, 88, 183, 119, 92, 43, 68, 26, 85, 148, 44, 86, 126, 69],
[ 17, 137, 72, 11, 194, 113, 161, 139, 52, 112, 163, 27, 195, 47],
[175, 108, 42, 144, 34, 75, 2, 102, 196, 16, 76, 141, 110, 91],
[ 33, 63, 158, 99, 168, 120, 180, 60, 37, 131, 176, 56, 1, 151]
) if $glb_dith eq "vac-14x14";
# void and cluster 25x25
@dither = (
[166,531,107,303,541,220,478,101,232,418,315,224,425, 38,208,435,327, 23,449,339,112,455,524,279,580],
[335, 20,411,496, 58,353,159,319,599,110,510,158,525,283,607, 84,226,540,164,235,608,314,207, 72,471],
[252,609,217,136,276,610,416, 30,452,205,398, 22,374,108,463,349,483,121,363,509, 34,148,573,389,143],
[448, 78,346,566,440,105,216,547,280, 70,568,312,586,259,178, 18,267,602, 56,429,271,462,332, 27,561],
[ 65,272,487,187, 17,337,458,151,343,472,246,162, 57,397,497,556,386,147,322,191,527, 98,183,512,298],
[430,554, 50,375,537,264,576, 44,502,125,369,539,451,122,310, 85,211,450,562, 80,357,611,257,379, 59],
[106,316,157,245,424,119,184,409,221,612, 16,199,294,597,222,376,582, 40,239,501,288, 15,438,140,596],
[538,360, 92,601,476,213,526,169,559,129,456,371,180,302,406,210,468, 49,443,128,356,185,333,482,127],
[287,176,437,274, 32,378,307, 37,413,295,617, 9,474, 61,604,117,348,533,192,569, 62,523, 91,219,392],
[593, 63,515,123,553,150,618,242,514, 82,203,273,558,334,227,508,256, 73,306,403,230,419,297,552, 8],
[412,318,237,417,338,481, 65,390,133,351,488,405, 90,163,436, 45,420,619,114,506, 21,605,139,466,189],
[494,134,581, 7,170,260,321,549,194,594, 41,179,513,365,592,145,320,197,387,262,352,206,385, 77,270],
[ 39,350,209,505,441,100,491, 6,427,244,323,575,282, 5,238,461,528, 4,550,156,578, 48,534,317,620],
[395,520, 83,269,326,567,200,300,120,530, 76,401,126,493,345, 87,218,309,464, 81,396,285,475,118,202],
[ 96,236,423,621,144, 46,373,598,454,344,186,480,248,570,172,410,585,130,366,240,489, 95,225,439,560],
[284,542, 19,195,402,517,263,149, 42,251,622, 25,330, 93,447, 28,292,486, 36,623,181,536,380, 31,342],
[444,146,364,495,247,102,446,551,391,500,116,433,522,212,624,254,529,190,431,308, 54,324,131,625,173],
[ 47,590,293, 64,600,329,204, 75,291,182,377,275,141,394, 60,368, 89,381,138,507,253,572,432,241,498],
[383,229,465,168,399, 3,574,367,519, 2,584, 74,564,304,511,155,565,258,588, 66,407,174, 1,361,111]
) if $glb_dith eq "vac-25x25";
# rotated dispersed dither
@dither = (
[15, 7, 10, 4, 8, 3, 11, 7, 13, 12, 14, 6, 11, 1, 5, 2, 10, 6, 16, 9],
[5, 2, 6, 16, 1, 9, 15, 10, 4, 16, 8, 3, 7, 13, 4, 12, 14, 11, 1, 13],
[12, 8, 14, 11, 13, 5, 12, 2, 6, 1, 9, 5, 15, 10, 16, 8, 9, 3, 7, 4],
[16, 9, 3, 15, 7, 4, 8, 14, 3, 11, 13, 12, 2, 14, 6, 1, 5, 15, 2, 10],
[11, 1, 5, 2, 10, 6, 16, 9, 15, 7, 10, 4, 8, 3, 11, 7, 13, 12, 14, 6],
[7, 13, 4, 12, 14, 11, 1, 13, 5, 2, 6, 16, 1, 9, 15, 10, 4, 16, 8, 3],
[15, 10, 16, 8, 9, 3, 7, 4, 12, 8, 14, 11, 13, 5, 12, 2, 6, 1, 9, 5],
[2, 14, 6, 1, 5, 15, 2, 10, 16, 9, 3, 15, 7, 4, 8, 14, 3, 11, 13, 12],
[8, 3, 11, 7, 13, 12, 14, 6, 11, 1, 5, 2, 10, 6, 16, 9, 15, 7, 10, 4],
[1, 9, 15, 10, 4, 16, 8, 3, 7, 13, 4, 12, 14, 11, 1, 13, 5, 2, 6, 16],
[13, 5, 12, 2, 6, 1, 9, 5, 15, 10, 16, 8, 9, 3, 7, 4, 12, 8, 14, 11],
[7, 4, 8, 14, 3, 11, 13, 12, 2, 14, 6, 1, 5, 15, 2, 10, 16, 9, 3, 15],
[10, 6, 16, 9, 15, 7, 10, 4, 8, 3, 11, 7, 13, 12, 14, 6, 11, 1, 5, 2],
[14, 11, 1, 13, 5, 2, 6, 16, 1, 9, 15, 10, 4, 16, 8, 3, 7, 13, 4, 12],
[9, 3, 7, 4, 12, 8, 14, 11, 13, 5, 12, 2, 6, 1, 9, 5, 15, 10, 16, 8],
[5, 15, 2, 10, 16, 9, 3, 15, 7, 4, 8, 14, 3, 11, 13, 12, 2, 14, 6, 1],
[13, 12, 14, 6, 11, 1, 5, 2, 10, 6, 16, 9, 15, 7, 10, 4, 8, 3, 11, 7],
[4, 16, 8, 3, 7, 13, 4, 12, 14, 11, 1, 13, 5, 2, 6, 16, 1, 9, 15, 10],
[6, 1, 9, 5, 15, 10, 16, 8, 9, 3, 7, 4, 12, 8, 14, 11, 13, 5, 12, 2],
[3, 11, 13, 12, 2, 14, 6, 1, 5, 15, 2, 10, 16, 9, 3, 15, 7, 4, 8, 14]
) if $glb_dith eq "ostro94";
my($dmax) = 0;
for my $r (@dither) {for my $d (@$r) {$dmax = $d if $d>$dmax;}}
for my $r (@dither) {for my $d (@$r) {$d/=($dmax+1);}}
for my $y (0..$glb_height-1) {
for my $x (0..$glb_width-1) {
my $d = $dither[$y%(1+$#dither)][$x%(1+$#dither)];
my $p = ($x+$y*$glb_width)*3;
$px[$p+0] += $d;
$px[$p+1] += $d;
$px[$p+2] += $d;
}
}
# conversion
my @conv = (0)x($glb_width*$glb_height);
for my $y (0..$glb_height/$glb_bloc_h-1) {
$y *= $glb_bloc_h;
for my $x (0..$glb_width/$glb_bloc_w-1) {
$x *= $glb_bloc_w;
my(@bloc);
for my $j ($y..$y+$glb_bloc_h-1) {for my $i ($x..$x+$glb_bloc_w-1) {
my $p = ($i + $j*$glb_width)*3;
push(@bloc, @px[$p..$p+2]);
}}
my($c1, $c2) = &find(\@bloc);
for my $j ($y..$y+$glb_bloc_h-1) {for my $i ($x..$x+$glb_bloc_w-1) {
my $p = ($i + $j*$glb_width);
my($ignore, $c) = &match($c1, $c2, \@px, $p*3);
$conv[$p] = $c;
}}
}
}
# generation image sortie
my @out;
for my $c (@conv) {
push(@out, ($c & 1)?255:0, ($c & 2)?255:0, ($c & 4)?255:0);
}
# sortie
return &px2img($glb_width, $glb_height, @out);
return $img;
}
sub find {
my($px) = @_;
my %c;
for(my $i=0; $i<$#{$px}; $i+=3) {
$c{($px->[$i+0]>=1?1:0)+($px->[$i+1]>=1?2:0)+($px->[$i+2]>=1?4:0)} = 1;
}
my @c = keys %c;
push(@c, 0) if $#c==0;
if($#c>=2) {
my($bd) = 1e38;
@c = (0,0);
for my $c1 (0..6) {for my $c2 ($c1+1..7) {
my $d = &dist($c1, $c2, $px, $bd);
if($d<$bd) {$bd = $d; @c = ($c1, $c2);}
}}
}
#print join(',', @c), "\n";
return @c;
}
sub dist {
my($c1, $c2, $px, $thr) = @_;
my $d = 0;
for(my $i=0; $d<$thr && $i<$#{$px}; $i+=3) {
my ($t, $ignore) = &match($c1, $c2, $px, $i);
$d += $t;
}
return $d;
}
sub match {
my($c1, $c2, $px, $o) = @_;
my $d1 = ($px->[$o+0] - ($c1&1?2:0))**2 + ($px->[$o+1] - ($c1&2?2:0))**2 + ($px->[$o+2] - ($c1&4?2:0))**2;
my $d2 = ($px->[$o+0] - ($c2&1?2:0))**2 + ($px->[$o+1] - ($c2&2?2:0))**2 + ($px->[$o+2] - ($c2&4?2:0))**2;
return $d1<$d2 ? ($d1, $c1) : ($d2, $c2);
}
sub liqrz {
my($img, $t_width, $t_height) = @_;
my $width = $img->Get('width');
my $height = $img->Get('height');
my $rotate = 0;
if(int($t_width * $height / $width+.5)>$t_height) {
$rotate = 1;
($width, $height) = ($height, $width);
($t_width, $t_height) = ($t_height, $t_width);
$img->Rotate(degrees=>90);
}
$img->AdaptiveResize(geometry=>int($t_height * $width / $height+.5)."x".($t_height), filter=>"lanczos", blur=>1.5);
$img->Set(colorspace=>"sRGB");
$img->Write('rgb/zzzzzzzzzz.png');
$width = $img->Get('width');
$height = $img->Get('height');
local(@img, @gry, @nrj);
for my $y (0..$height-1) {
push(@img, [$img->GetPixels(map=>"RGB", height=>1, width=>$width, x=>0, y=>$y, normalize=>"True")]);
push(@gry, [$img->GetPixels(map=>"I", height=>1, width=>$width, x=>0, y=>$y, normalize=>"True")]);
push(@nrj, [(0) x $width]);
}
# fonction energie
my $sobel = sub {
my($x, $y) = @_;
my $py = $y-1;
my $ny = $y+1;
my $cy = $y;
$py = 0 if $py<0;
$ny = $height-1 if $ny >= $height;
my $px = $x-1;
my $nx = $x+1;
my $cx = $x;
$px = 0 if $px<0;
$nx = $width-1 if $nx>=$width;
my $ipp = $gry[$py]->[$px];
my $icp = $gry[$py]->[$cx];
my $inp = $gry[$py]->[$nx];
my $ipc = $gry[$cy]->[$px];
my $inc = $gry[$cy]->[$nx];
my $ipn = $gry[$ny]->[$px];
my $icn = $gry[$ny]->[$cx];
my $inn = $gry[$ny]->[$nx];
my ($c1, $c2, $c3, $c4) = (2,1, 2,1);
my $gx = ($inc-$ipc)*$c1+(($inp-$ipp)+($inn-$ipn))*$c2;
my $gy = ($icn-$icp)*$c3+(($ipn-$ipp)+($inn-$inp))*$c4;
return sqrt($gx*$gx + $gy*$gy);
};
my $gradient = sub {
my($x, $y) = @_;
my $py = $y-1;
my $ny = $y+1;
$py = 0 if $py<0;
$ny = $height-1 if $ny >= $height;
my $px = $x-1;
my $nx = $x+1;
$px = 0 if $px<0;
$nx = $width-1 if $nx>=$width;
return sqrt(($gry[$py]->[$x]-$gry[$ny]->[$x])**2 + ($gry[$y]->[$px]-$gry[$y]->[$nx])**2);
};
my $gradient_x = sub {
my($x, $y) = @_;
my $px = $x-1;
my $nx = $x+1;
$px = 0 if $px<0;
$nx = $width-1 if $nx>=$width;
return abs($gry[$y]->[$px]-$gry[$y]->[$nx]);
};
my $energy = $gradient_x;
for my $y (0..$height-1) {for my $x (0..$width-1) {
$nrj[$y]->[$x] = $energy->($x,$y);
}}
if(1) {
my @px; my $max;
for my $r (@nrj) {for my $e (@$r) {$max = $e if $e>$max;}}
for my $r (@nrj) {for my $e (@$r) {push(@px, (int($e*256/($max+1)))x3);}}
my $img2 = &px2img($width, $height, @px);
$img2->Write('rgb/zzzzzzzzz.png');
}
while($width > $t_width) {
if(0) {
my @px; my $max;
for my $r (@nrj) {for my $e (@$r) {$max = $e if $e>$max;}}
for my $r (@nrj) {for my $e (@$r) {push(@px, (int($e*256/($max+1)))x3);}}
my $img2 = &px2img($width, $height, @px);
$img2->Write('rgb/zzzzzzzzz.png');
}
print STDERR "$width \r";
# Dijkstra
my (@dir, @nrj2);
for my $y (0..$height-1) {push(@dir, [(0)x$width]);}
my (@min) = @{$nrj[0]};
my($nrj2) = 0;
push(@nrj2, [@min]) if $nrj2;
for my $y (1..$height-1) {
my(@m1n, $dir, $min);
for my $x (0..$width-1) {
my(@p) = ($x);
push(@p, $x-1) if $x>0;
push(@p, $x+1) if $x<$width-1;
#push(@p, $x-2) if $x>1;
#push(@p, $x+2) if $x<$width-2;
$min = $min[$dir = pop(@p)];
for my $q (@p) {if($min[$q]<$min) {$min = $min[$dir=$q];}}
$dir[$y]->[$x] = $dir;
push(@m1n, $min + $nrj[$y]->[$x]);
}
@min = @m1n;
push(@nrj2, [@min]) if $nrj2;
}
if($nrj2) {
my($max, @px) = 1;
for my $r (@nrj2) {for my $e (@{$r}) {$max = $e if $e>$max;}}
for my $r (@nrj2) {for my $e (@{$r}) {push(@px, (int($e*256/($max+1)))x3);}}
my $img2 = &px2img($width, $height, @px);
$img2->Write('rgb/zzzzzzzzz__.png');
}
#for my $m (@min) {print STDERR " ", int($m*100)/100;}print STDERR "\n";
# find minima
my ($min, $pos) = 1e38;
for my $x (0..$width-1) {$min = $min[$pos = $x] if $min[$x]<$min;}
last if $min>=1e38;
#print STDERR "POS=$pos ($min) ";
# delete pixel
my($smooth) = 0;
for(my ($y,$p)=($height, $pos); --$y>=0; $p = $dir[$y]->[$p]) {
my (@t) = splice($img[$y], $p*3, 3);
if($smooth && $p>0) {
for my $i (0..2) {
$img[$y]->[3*$p+$i-3] = ($img[$y]->[3*$p+$i-3]+$t[$i])/2;
}
}
if($smooth && $p<$width-1) {
for my $i (0..2) {
$img[$y]->[3*$p+$i] = ($img[$y]->[3*$p+$i]+$t[$i])/2;
}
}
my ($t) = splice($gry[$y], $p, 1);
if($smooth && $p>0) {
$gry[$y]->[$p-1] = ($gry[$y]->[$p-1]+$t)/2;
}
if($smooth && $p<$width-1) {
$gry[$y]->[$p] = ($gry[$y]->[$p]+$t)/2;
}
splice($nrj[$y], $p, 1);
}
--$width;
# rebuild NRJ
for(my ($y,$p)=($height, $pos); --$y>=0; $p = $dir[$y]->[$p]) {
$nrj[$y]->[$p-1] = $energy->($p-1, $y) if $p>0;
$nrj[$y]->[$p] = $energy->($p , $y) if $p<$width;
$nrj[$y]->[$p-2] = $energy->($p-2, $y) if $smooth && $p>1;
$nrj[$y]->[$p+1] = $energy->($p+1, $y) if $smooth && $p+1<$width;
}
}
my @px;
for my $r (@img) {for my $e (@$r) {push(@px, int($e*255));}}
$img2 = &px2img($width, $height, @px);
$img2->Write('rgb/zzzzzzzzzzz.png');
if($rotate) {
$img->Rotate(degrees=>-90);
$img2->Rotate(degrees=>-90);
}
$img2->Set(depth=>16);
$img2->Set(colorspace=>"RGB");
#print "i>", $img->Get('colorspace'),"\n";
#print "o>", $img2->Get('colorspace'),"\n";
return $img2;
}
sub px2img {
my($width,$height,@px) = @_;
my $img2;
if($#px>1000) {
open(OUT,">/tmp/.toto2.pnm");print OUT "P6\n$width $height\n255\n",pack('C*', @px),"\n";close(OUT);
$img2 = Image::Magick->new();
$img2->ReadImage("/tmp/.toto2.pnm");
unlink "/tmp/.toto2.pnm";
} else {
my $txt = "P6\n$width $height\n255\n".pack('C*', @px)."\n";
#system("convert 'inline:data:,".encode_base64($txt)."' toto.gif");
$img2 = Image::Magick->new();
my $x = $img2->ReadImage("inline:data:image/pnm,".encode_base64($txt));
warn $x."\n$width $height ".(1+$#px)/3 if $x;
}
return $img2;
}
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Defcard Software-actus
Vous êtes content de vous, avec vos conneries on ne verra jamais le slideshow final !
J'allais me récupérer un TO8 pour l'occasion...
N'empêche qu'avec la technique de defcard, je pouvais voir les videos Thomson sur SD Card de Daniel avec mon téléphone (5") presque en qualité HD
J'allais me récupérer un TO8 pour l'occasion...
N'empêche qu'avec la technique de defcard, je pouvais voir les videos Thomson sur SD Card de Daniel avec mon téléphone (5") presque en qualité HD
Re: Defcard Software-actus
Pour faire simple, disons que sur un petit écran, les défauts de l'image source sont moins visible que sur un écran plus grand.
C'est un peu comme les captures d'écran réduites sur le site de Daniel pour les jeux, ca parrait super beau les jeux Thomson à cette taille, mais en fait... non.
Cela dit, suivant la qualité des dalles, l'image sur un grand écran peut carrément être dégeulasse par rapport à la concurrence, ce qu'on constate moins sur les petites dalles, technologies plus éprouvées? Couts?
C'est un peu comme les captures d'écran réduites sur le site de Daniel pour les jeux, ca parrait super beau les jeux Thomson à cette taille, mais en fait... non.
Cela dit, suivant la qualité des dalles, l'image sur un grand écran peut carrément être dégeulasse par rapport à la concurrence, ce qu'on constate moins sur les petites dalles, technologies plus éprouvées? Couts?
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
- fneck
- Site Admin
- Messages : 17495
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Defcard Software-actus
Tiens, je ne connaissais pas l'expression, c'est une insulte je suppose...?defcard a écrit :fneck chien de traineau !!
Je me laisse un peu de temps pour savoir ce que je fais de ton compte et de ce topic.
En attendant tu es banni, si tu veux ajouter quelque chose tu peux le faire dans la rubrique "de passage".
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Re: Defcard Software-actus
La véritable insulte est "Fils de chien de traineau". "Chien de traineau" est une forme édulcorée, moins agressive.
Pourquoi defcard a-t-il disjoncté ? J'aimais bien ses délires et son côté artiste, complètement inculte en matière scientifique. Etait-ce un rôle de composition ou sa véritable nature, le doute restera...
Pourquoi defcard a-t-il disjoncté ? J'aimais bien ses délires et son côté artiste, complètement inculte en matière scientifique. Etait-ce un rôle de composition ou sa véritable nature, le doute restera...
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Defcard Software-actus
Ce n'est pas une insulte. Être "un chien de traineau" signifie: toujours avancer avec la meute d'une manière disciplinée, aveuglément. Dans notre monde vidéo ludique, le chien de traineau serait équivalent au Lemming.fneck a écrit :Tiens, je ne connaissais pas l'expression, c'est une insulte je suppose...?
-
- Messages : 7970
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Defcard Software-actus
Moi non plus j'ai pas compris pourquoi il s'est énervé tout seul A relire ce sujet depuis le début je m'aperçois qu'il s'était fait sa propre interprétation de la notion définition des moniteurs et qu'il n'a jamais changé de point de vu. Maintenant de là à partir en vrille pour ca c'est curieux. Peut-être est-il un impulsif par moments, ou sur certains sujets.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2341
- Inscription : 06 avr. 2009 12:07
Re: Defcard Software-actus
Oula je pars un week-end et ca part en troll ...
Pour en revenir aux images, la trame void and cluster 25x25 comporte un défaut qui provoque un lignage visible a l'oeil nu. Cette matrice est mauvaise ou tu t'es trompé Sam en recopiant les valeurs de seuil. Par contre je suis assez bluffé par la 16x16 sur nos images.
La thèse de Victor explique en détails Combiscreen ce n'est pas très compliqué et ce qui est très bien c'est qu'on peut inventer des formes géométriques à l'infini pour la matrice, du moment qu'elle est pavable. Mais en fouillant dans mes archives, je dois pouvoir te retrouver quelques matrices interessantes.
Enfin pour l'histoire de la palette custom, j'ai pas compris le delire. Il suffit de voir les poids accordés à R,V, B sur la palette thomson par exemple, pour comprendre que le choix est arbitraire et dicté plus par la facilité à pondérer le rouge, vert, bleu avec une PROM de 8x4 bits qu'autre chose. Les gars se sont dit on va rajouter un demi-niveau en luminosité et ... mince blanc clair ca existe pas, bon mettons... heu... du orange.
Maintenant concernant la composition d'images a partir d'encres custom, sujet hautement suivi dans le monde de l'impression de securite (e.g. billets de banques), c'est un sujet que je connais très bien aussi puisque ca faisait partie des sujets de recherches de notre labo. Voici quelques exemples et articles excellents à ce sujet :
http://lsp.epfl.ch/files/content/sites/ ... eynote.pdf
http://lsp.epfl.ch/colorpublications
Mais en particulier, pour ouvrir le débat lancé par defcard, celui-ci :
http://lspwww.epfl.ch/publications/colo ... wci_02.pdf
Notons que ces recherches ont abouti à un résultat industriel exceptionnel il y a environ 3 ans :
Images invisibles
Fini les aigles bleus moches sur les cartes Visa !
La reproduction couleur est un sujet complexe. L'article que je mentionne plus haut montre comment reproduire une image le plus fidèlement possible à partir d'un jeu d'encre choisies arbitrairement. On observe qu'il y a plusieurs approches possibles mais que toutes ont des défauts. On peut clore l'affaire en mentionnant qu'aucun écran ne peut reproduire parfaitement le monde réel, car l'espace des couleurs reproductibles (le gamut) dépend de la qualité des trois composantes RVB de base et de l'aptitude à les manipuler sans dérive en luminosité et sans influence réciproque (d'ou les notions de gamma, pitch, rémanence, calibration etc.). Le gamut n'étant autre qu'un espace vectoriel algébrique basé sur les trois composantes RVB, il est donc fini, contrairement à la réalité. Certaines couleurs sont donc purement et simplement impossibles à reproduire.
Au final, les industriels ont simplement décidé de normaliser les couleurs à partir de tests colorimétriques perceptuels réalisés auprès d'un échantillon représentatif de la population, c'est le fameux ensemble de normes CIE. On peut donc dire que ce qu'on voit sur un écran n'est pas réel. D'ailleurs il existe quelques expériences d'illusion colorimétrique qui comme les illusions géométriques (plus connues) donnent l'impression d'être devenu fou quand on en est la victime (e.g. z'y va, mets ta mère !).
Pour en revenir aux images, la trame void and cluster 25x25 comporte un défaut qui provoque un lignage visible a l'oeil nu. Cette matrice est mauvaise ou tu t'es trompé Sam en recopiant les valeurs de seuil. Par contre je suis assez bluffé par la 16x16 sur nos images.
La thèse de Victor explique en détails Combiscreen ce n'est pas très compliqué et ce qui est très bien c'est qu'on peut inventer des formes géométriques à l'infini pour la matrice, du moment qu'elle est pavable. Mais en fouillant dans mes archives, je dois pouvoir te retrouver quelques matrices interessantes.
Enfin pour l'histoire de la palette custom, j'ai pas compris le delire. Il suffit de voir les poids accordés à R,V, B sur la palette thomson par exemple, pour comprendre que le choix est arbitraire et dicté plus par la facilité à pondérer le rouge, vert, bleu avec une PROM de 8x4 bits qu'autre chose. Les gars se sont dit on va rajouter un demi-niveau en luminosité et ... mince blanc clair ca existe pas, bon mettons... heu... du orange.
Maintenant concernant la composition d'images a partir d'encres custom, sujet hautement suivi dans le monde de l'impression de securite (e.g. billets de banques), c'est un sujet que je connais très bien aussi puisque ca faisait partie des sujets de recherches de notre labo. Voici quelques exemples et articles excellents à ce sujet :
http://lsp.epfl.ch/files/content/sites/ ... eynote.pdf
http://lsp.epfl.ch/colorpublications
Mais en particulier, pour ouvrir le débat lancé par defcard, celui-ci :
http://lspwww.epfl.ch/publications/colo ... wci_02.pdf
Notons que ces recherches ont abouti à un résultat industriel exceptionnel il y a environ 3 ans :
Images invisibles
Fini les aigles bleus moches sur les cartes Visa !
La reproduction couleur est un sujet complexe. L'article que je mentionne plus haut montre comment reproduire une image le plus fidèlement possible à partir d'un jeu d'encre choisies arbitrairement. On observe qu'il y a plusieurs approches possibles mais que toutes ont des défauts. On peut clore l'affaire en mentionnant qu'aucun écran ne peut reproduire parfaitement le monde réel, car l'espace des couleurs reproductibles (le gamut) dépend de la qualité des trois composantes RVB de base et de l'aptitude à les manipuler sans dérive en luminosité et sans influence réciproque (d'ou les notions de gamma, pitch, rémanence, calibration etc.). Le gamut n'étant autre qu'un espace vectoriel algébrique basé sur les trois composantes RVB, il est donc fini, contrairement à la réalité. Certaines couleurs sont donc purement et simplement impossibles à reproduire.
Au final, les industriels ont simplement décidé de normaliser les couleurs à partir de tests colorimétriques perceptuels réalisés auprès d'un échantillon représentatif de la population, c'est le fameux ensemble de normes CIE. On peut donc dire que ce qu'on voit sur un écran n'est pas réel. D'ailleurs il existe quelques expériences d'illusion colorimétrique qui comme les illusions géométriques (plus connues) donnent l'impression d'être devenu fou quand on en est la victime (e.g. z'y va, mets ta mère !).
- Papy.G
- Modérateur
- Messages : 3052
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Defcard Software-actus
Merci beaucoup Fool-Duplex, je mets à présent un nom sur ce phénomène qui fait que, selon l'éclairage, j'a du mal à différencier le vieux gris, le vieux gris jauni, et le nouveau gris dans mes Legos. Je me doutais bien que c'était un truc du genre.
Je pensais qu'il avait fin par assimiler les contraintes de bases et les lois mathématiques et physiques qui encadrent les applications électroniques d'imagerie depuis que l'on entendait plus parler des "images qui flashent", mais en fait, non.
Il y a bien longtemps que je ne suivais ce sujet que de loin, et je suis navré que cela finisse ainsi.
Merci à ceux qui ont eu le courage et la patience d'essayer d'enseigner leur savoir, je vous admire.
Je pensais qu'il avait fin par assimiler les contraintes de bases et les lois mathématiques et physiques qui encadrent les applications électroniques d'imagerie depuis que l'on entendait plus parler des "images qui flashent", mais en fait, non.
Il y a bien longtemps que je ne suivais ce sujet que de loin, et je suis navré que cela finisse ainsi.
Merci à ceux qui ont eu le courage et la patience d'essayer d'enseigner leur savoir, je vous admire.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
-
- Messages : 2341
- Inscription : 06 avr. 2009 12:07
Re: Defcard Software-actus
En effet, c'est bien à cet effet auquel tu es confronté, ce n'est pas un problème de vieillesse ou que sais-je ! On peut aller très loin dans le métamérisme. Quand je donnais le cours sur la couleur, j'avais un objet de couleur perçue bleutée (ciel clair) dans la salle de cours sous l'éclairage au néon. Ce chapitre du cours se donnait mi à l'intérieur et mi à l'extérieur, de préférence par beau temps. Une fois dehors, je poursuivais mon cours par une phrase du genre "et donc, si on reprend l'objet orange que je vous ai montré tout a l'heure ...". Immanquablement, un étudiant me corrigeait. Or l'objet etait bel et bien orange a la lumiere du soleil ! Hilarité et perplexité générale ... Pour prouver le métamérisme, je refaisais le chemin inverse et on pouvait observer le "changement" de couleur en rentrant à l'intérieur.
Dans le même genre, la lessive lave plus blanc que blanc de Coluche est effectivement une jolie astuce de colorimétrie. Techniquement, elle ne lave pas grand chose, mais elle rend bien le linge plus blanc que blanc, par l'adjonction d'un colorant appelé azurant; en fait une substance fluorescente qui absorbe les UV et les réémet dans le bleu, donnant effectivement l'illusion de blanc plus blanc que blanc. On utilise énormément les azurants pour le linge en coton, qui n'est pas blanc, contrairement à la croyance populaire. Un t-shirt en coton lavé maintes fois avec une lessive sans azurant jaunit ; il n'est pas usé ou plus sale, mais au contraire plus propre, car débarrassé des stilbènes qu'il contenait.
Dans le même genre, la lessive lave plus blanc que blanc de Coluche est effectivement une jolie astuce de colorimétrie. Techniquement, elle ne lave pas grand chose, mais elle rend bien le linge plus blanc que blanc, par l'adjonction d'un colorant appelé azurant; en fait une substance fluorescente qui absorbe les UV et les réémet dans le bleu, donnant effectivement l'illusion de blanc plus blanc que blanc. On utilise énormément les azurants pour le linge en coton, qui n'est pas blanc, contrairement à la croyance populaire. Un t-shirt en coton lavé maintes fois avec une lessive sans azurant jaunit ; il n'est pas usé ou plus sale, mais au contraire plus propre, car débarrassé des stilbènes qu'il contenait.
-
- Messages : 7970
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Defcard Software-actus
De quelle couleur est cette robe?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2341
- Inscription : 06 avr. 2009 12:07
Re: Defcard Software-actus
Encore cette histoire ...
- Papy.G
- Modérateur
- Messages : 3052
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Defcard Software-actus
Attention au phénomène d'irisation, qui est un autre phénomène rendant des couleurs changeantes, mais qui est dû à la structure de la surface incriminée, plus qu'au phénomène évoqué précédement. C'est un phénomène optique, qui n'a pas de rapport direct avec les mécanismes de perception humaine.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.