Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Farbraumkonvertierung RGB-YUV

Frage Entwicklung C und C++

Mitglied: Bierkistenschlepper

Bierkistenschlepper (Level 2) - Jetzt verbinden

22.01.2010 um 12:07 Uhr, 4392 Aufrufe

Hallo,

leider klappt bei mir die Farbraumkonvertierung von RGB nach YUV in der Sprache C nicht. Ich bin jetzt schon ewig am probieren und obwohl es in der englischen Wikipedia sehr genau beschrieben ist, hat das Bild nachher einen Farbstich...
http://en.wikipedia.org/wiki/YUV
Aktuell habe ich das Verfahren aus numerical approximation implementiert. Hier mein Code:

int i, j;
int rgb[3];
int yuv[3] = {0, 0, 0};
for(i = 0; i < B.dimx; i++){
for(j = 0; j < B.dimy; j++){
rgb[0] = B.val[0][i*B.dimx+j];
rgb[1] = B.val[1][i*B.dimx+j];
rgb[2] = B.val[2][i*B.dimx+j];

//YUV->RGB-Transformation wie in der englischen Wikipedia
yuv[0] = 66*rgb[0] + 129*rgb[1] + 25*rgb[2];
yuv[1] = -38*rgb[0] -74*rgb[1] + 112*rgb[2];
yuv[2] = 112*rgb[0] - 94*rgb[1] - 18*rgb[2];
yuv[0] = yuv[0] + 128 >> 8;
yuv[1] = yuv[1] + 128 >> 8;
yuv[2] = yuv[2] + 128 >> 8;
B.val[0][i*B.dimx+j] = yuv[0]+16;
B.val[1][i*B.dimx+j] = yuv[1]+128;
B.val[2][i*B.dimx+j] = yuv[2]+128;
printf("YUV-Werte %d %d %d \n", B.val[0][i*B.dimx+j], B.val[1][i*B.dimx+j], B.val[2][i*B.dimx+j]);


}
}

Vor der Transformation (das ist ein Testbild)
P3
4 4
255
255 255 255 10 1 1 200 2 4 3 3 10
98 5 0 1 1 1 2 2 2 3 3 10
0 235 0 10 1 132 2 2 2 3 128 10
0 5 0 1 1 1 2 2 2 3 3 10

Nach der Transformation
P3
4 4
255
235 128 128 19 127 132 69 99 214 19 131 128
44 112 169 17 128 128 18 128 128 19 131 128
134 60 42 32 184 123 18 128 128 82 95 82
19 127 126 17 128 128 18 128 128 19 131 128

Also eigentlich ists genau das gleiche wie in der Wikipedia, aber das Bild hat einen Grün/Blaustich und die Farben sind total verkehrt. Auf den ersten Blick fällt mir aber auf, dass es keine negativen Werte gibt. Laut meiner Dozentin sollten U und V aber im Bereich -[128, 127] liegen... Ich habe es auch schon mit dieser Matrixmultiplikation versucht, aber dann scheitere ich an dem "verschieben" der Zahlen, d.h. manche Zahlen sind zu groß.
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (31)

Frage von Maik82 zum Thema Linux Netzwerk ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

Switche und Hubs
LAG zwischen SG300-Switches macht Probleme. Wer weiß Rat? (20)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...