Datei:Barn-yuv.png

Aus testwiki
Zur Navigation springen Zur Suche springen
Originaldatei (400 × 1.196 Pixel, Dateigröße: 425 KB, MIME-Typ: image/png)

Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.

Beschreibung

Beschreibung
English: YUV colour space example using a photograph of the John Moulton Barn at the base of the Teton Range.
Datum
Quelle Concept from Image:YUV_components.jpg, original public domain image at Barns grand tetons.jpg.
Urheber Brian Szymanski
Genehmigung
(Weiternutzung dieser Datei)
Public domain Ich, der Urheberrechtsinhaber dieses Werkes, veröffentliche es als gemeinfrei. Dies gilt weltweit.
In manchen Staaten könnte dies rechtlich nicht möglich sein. Sofern dies der Fall ist:
Ich gewähre jedem das bedingungslose Recht, dieses Werk für jedweden Zweck zu nutzen, es sei denn, Bedingungen sind gesetzlich erforderlich.
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.

Kurzbeschreibungen

Ergänze eine einzeilige Erklärung, was diese Datei darstellt.

In dieser Datei abgebildete Objekte

Motiv

image/png

d3127a1d2ae6d38c684681282a72fe7b47e4f8a8

435.380 Byte

1.196 Pixel

400 Pixel

Dateiversionen

Klicke auf einen Zeitpunkt, um diese Version zu laden.

Version vomVorschaubildMaßeBenutzerKommentar
aktuell06:11, 22. Sep. 2007Vorschaubild der Version vom 06:11, 22. Sep. 2007400 × 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

Die folgende Seite verwendet diese Datei: