Wie wärs denn mit einer vorberechneten Tabelle?
das wären bei 8 bit farbwerten 2^24 werte, also ein mb, aber vll bräuchte man nicht so viele, und könnte dann interpolieren oder nearest neighbour machen....
Das mit der Tabelle habe ich mir auch schon überlegt, verfolge aber gerade einen anderen Weg...
Suche häufigste Farbe R
Suche häufigste Farbe G
Suche häufigste Farbe B
Bekomme dann so was:
Code: Alles auswählen
/mnt/plugins # ./aviagrep -o -f aviagrep.ppm
[OK] use optimized low frame size, cap with 180x288, usable 180x144
[OK] Start capture (180)x(288)
[OK] Read (51840) bytes from /dev/dbox/capture0
[OK] Avia Capture needs 0.0100 sec.
[OK] Unsquash (144) Lines each line (180) Pixel
[OK] Unsquashing needs 0.0200 sec.
[OK] Unsquashing done...
[OK] Start YUV2 -> RGB conversion
[OK] YUV2 -> RGB needs 0.0300 sec.
[OK] YUV2 conversion done...
[OK] Most frequently: Red [190] Value [215]
[OK] Most frequently: Green[244] Value [195]
[OK] Most frequently: Blue [245] Value [196]
[DEBUG] USE 605 Pixel
[OK] Write (138240) bytes (180)x(144)
[OK] Most frequently: Red [190] Value [215] <-- Rot mit 190er Farbwert kommt am häufigsten von alle anderen Rot Werten vor, 215 mal
[OK] Most frequently: Green[244] Value [195] <-- Grün mit 244er Farbwert kommt am häufigsten von alle anderen Rot Werten vor, 195 mal
[OK] Most frequently: Blue [245] Value [196] <-- Blau mit 245er Farbwert kommt am häufigsten von alle anderen Rot Werten vor, 196 mal
[DEBUG] USE 605 Pixel <- Jetzt suche ich R[190], G[?], B[?], das gleiche mit R[?], G[244], B[?] und R[?], G[?], B[196]
Somit habe ich aus dem Screenshot (190+215+245) = 650 Pixel der dominanten Farben im Bild... sollte so sein... Das Ergebnis sieht gar nicht mal so schlecht aus...
Die Einfärbungen im Bild stellen jetzt die Positionen von Rmax , Gmax, Bmax da...
Unten in dem kleinen Streifen sieht man dann die Farben die 'hoffentlich' charakteristisch genug sind um 'nur' damit weiterzurechnen...
Genau, daher ja auch der Kommentar an der Stelle im Sourcecode.
Ich hab das damals nur auf dem PC benutzt, es aber für die dbox2 eingebaut, weil ich neugierig war wie schnell das in der FPU-Emulation sein würde.
Daß 720x576 nicht geht wundert mich nicht, dafür ist nicht genug Platz vorhanden im Demux-RAM. Der 2.6er Treiber fängt das ab, der 2.4er wohl nicht.
Die bunten Streifen sind TS-Daten (vermutlich Video/Audio, wundert mich ein wenig, daß da noch ein Bild bei rauskommt).
Die maximale Auflösung ist die Hälfte der Vollauflösung bei PAL, also 720x288 oder 360x576, mehr geht nicht.
Der Demux captured immer in jeweils halbierten Schritten, also 720x288, 720x144, 720x72... oder halt 360x288, 180x288 usw.
Man kann aber auch ein kleineres Fenster setzen wenn man mag (zumindest beim 2.6er, beim 2.4er weiß ich's gerade nicht).
@Carjay
Erst einmal vielen Danke für deine Tools im cvs ohne die hätte ich das hier wohl nie hinbekommen...
Danke für die Infos der 'Capture Auflösungen'
Hier mal die Umrechnung von Yuv -> Rgb auf int basis:
Code: Alles auswählen
// ----------------------------------------------------------------------------
//
// /brief : "DBox friendly yuv -> rgb calculation"
//
// /date : "2006-10-20"
//
// /source: "http://de.wikipedia.org/wiki/YUV"
//
// ----------------------------------------------------------------------------
static inline void intMatrixYCbCrToRGB(
unsigned char Y,
unsigned char Cb,
unsigned char Cr,
T_ST_RGBColor *pstRGBColor
)
{
int _Y = (Y-16);
int _Cr = (Cr -128);
int _Cb = (Cb -128);
long _R, _G, _B;
_R=_G=_B=0;
// --------------------------------------------------------------
// "dbox friendly int matrix, thanks goes to"
// "http://de.wikipedia.org/wiki/YUV"
_R = (298*_Y +409*_Cr +128)>>8;
_G = (298*_Y -100*_Cb -208*_Cr +128)>>8;
_B = (298*_Y +516*_Cb +128)>>8;
// --------------------------------------------------------------
if (_R<0) _R=0;
if (_G<0) _G=0;
if (_B<0) _B=0;
pstRGBColor->ucR = (_R>255)? 255 : _R;
pstRGBColor->ucG = (_G>255)? 255 : _G;
pstRGBColor->ucB = (_B>255)? 255 : _B;
}
Gruss
-Ravnex-
Zum Schluss noch eine Wer-Weiß-Was-Frage:
Die Veröffentlichung von selbst erstellten Screenshots aus dem Tv ist was Urheberrechte angeht nicht ganz unproblematisch, habe leider noch keine Konkrete Aussage was man wirklich darf und was nicht gefunden. Vielleicht hat der eine oder andere ja mal Infos zu dem Thema.
Wenn ich mich hier auf Screenshots aus der TV-Werbung, sodass weder Marke noch Logo erkennbar sind beschränke sollte das doch weniger ein Problem darstellen, oder?
Bis ich da nicht mehr weiß werde ich vorerst auf weitere Screenshots verzichten...