Bestand:Barn-yuv.png

Uit testwiki
Naar navigatie springen Naar zoeken springen
Oorspronkelijk bestand (400 × 1.196 pixels, bestandsgrootte: 425 kB, MIME-type: image/png)

Dit bestand is afkomstig van Wikimedia Commons en kan ook in andere projecten gebruikt worden. De bestandsbeschrijvingspagina wordt hieronder weergegeven.

Beschrijving

Beschrijving
English: YUV colour space example using a photograph of the John Moulton Barn at the base of the Teton Range.
Datum
Bron Concept from Image:YUV_components.jpg, original public domain image at Barns grand tetons.jpg.
Auteur Brian Szymanski
Toestemming
(Hergebruik van dit bestand)
Public domain Ik, de auteursrechthebbende van dit werk, geef dit werk vrij in het publieke domein. Dit is wereldwijd van toepassing.
In sommige landen is dit wettelijk niet mogelijk; in die gevallen geldt:
Ik sta iedereen toe dit werk voor eender welk doel te gebruiken, zonder enige voorwaarden, tenzij zulke voorwaarden door de wet worden voorgeschreven.
Generation
InfoField
To generate this map, Brian Szymanski used this Perl script, and then ran optipng with a full search to shrink the filesize. The code is mostly here for reference, but it is wrong. The first channel of the blue/yellow map has to be set to U as well and the third channel of the red/green map has to be set to 0.5.
#!/usr/bin/env perl
use strict;
use warnings;
use GD;
GD::Image->trueColor(1);
my %color_cache;
sub cached_allocate {
	my $img = shift;
	my @rgb = @_;
	my $rgb = join(",", @rgb);
	$color_cache{$rgb} = $img->colorAllocate(@rgb) unless($color_cache{$rgb});
	return $color_cache{$rgb};
}

my $img = GD::Image->new("barn.png");
my ($height, $width) = ($img->height, $img->width);
my $yuv_img = GD::Image->new($width, $height*4);
foreach my $y (0..$height-1) {
	foreach my $x (0..$width-1) {
		my ($r, $g, $b) = map { $_ / 256 } my @rgb = $img->rgb($img->getPixel($x, $y));
		my $Y = 0.299 * $r + 0.587 * $g + 0.114 * $b;
		my $U = 0.436 * ($b - $Y) / (1 - 0.114);
		my $V = 0.615 * ($r - $Y) / (1 - 0.299);
		$Y *= 256;
		$U += .436; $U *= (256/.872);
		$V += .615; $V *= (256/1.23);
		($Y, $U, $V) = map { int(0.5+$_) } ($Y, $U, $V);
		die "YUV: $Y,$U,$V" if (($Y > 255) or ($U > 255) or ($V > 255));
		$yuv_img->setPixel($x, $y, cached_allocate($yuv_img, @rgb));
		$yuv_img->setPixel($x, $height+$y, cached_allocate($yuv_img, $Y, $Y, $Y));
		$yuv_img->setPixel($x, 2*$height+$y, cached_allocate($yuv_img, 0, 255-$U, $U));
		$yuv_img->setPixel($x, 3*$height+$y, cached_allocate($yuv_img, $V, 255-$V, 0));
	}
};
$yuv_img->_file("barn-yuv.png");
Running this script requires the GD Graphics Library and GD CPAN module.

Raison d'être

This is a cleaner/more accurate version of Image:YUV_components.jpg. The improvements are:

  • Using a lossless image format, PNG, to avoid JPEG artefacts.
  • Not scaling U and V to extreme values; instead, raw values are used to better approximate the chroma component.
  • Fixing the inverted polarity of U and V components.

Bijschriften

Beschrijf in één regel wat dit bestand voorstelt

Items getoond in dit bestand

beeldt af

image/png

d3127a1d2ae6d38c684681282a72fe7b47e4f8a8

435.380 byte

1.196 pixel

400 pixel

Bestandsgeschiedenis

Klik op een datum/tijd om het bestand te zien zoals het destijds was.

Datum/tijdMiniatuurAfmetingenGebruikerOpmerking
huidige versie22 sep 2007 06:11Miniatuurafbeelding voor de versie van 22 sep 2007 06:11400 × 1.196 (425 kB)wikimediacommons>Brianski== Summary == {{Information |Description=YUV colorspace |Source=Adapted from en:Image:YUV_components.jpg |Date=2007/09/22 |Author=en:User:(3ucky(3all, updated by User:Brianski |Permission=Creative Commons Attribution or GFDL |see_also=[[barn

Dit bestand wordt op de volgende pagina gebruikt: