Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 4429 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ß.
Ähnliche Inhalte
Grafikkarten & Monitore
Wie schliesst man ein RGB Kabel an und wo gibt es sowas noch? (20)

Frage von winIT3264 zum Thema Grafikkarten & Monitore ...

CPU, RAM, Mainboards
Corsair RGB LED Lüfter laut (2)

Frage von uridium69 zum Thema CPU, RAM, Mainboards ...

C und C++
Arduino "Serial input zu analogwrite" (1)

Frage von Zerou24 zum Thema C und C ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Monitoring
Netzwerk-Monitoring Software (17)

Frage von Ghost108 zum Thema Monitoring ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

Windows 10
Windows 10 Ordnerfreigabe (15)

Frage von Xaero1982 zum Thema Windows 10 ...