Hi - > From: [EMAIL PROTECTED] > Subject: [Mjpeg-users] Re: Mjpeg-users digest, Vol 1 #889 - 5 msgs Hmmm, the digest form apparently obscures the initial Subject: - was wonder what "Vol 1 #899 - 5 msgs" was all about.
It is a low volume group for the most part - would it be feasible to use the individual article form I wonder? > Have you tried yuvcorrect -M STAT? It makes frame-by-frame histograms No, I had forgotten about it. > INFO: [yuvcorrect] 020 00041 00000 00000 > INFO: [yuvcorrect] 021 00432 00000 00000 > INFO: [yuvcorrect] 022 02900 00000 00000 > INFO: [yuvcorrect] 023 09386 00000 00000 > INFO: [yuvcorrect] 024 16027 00000 00000 > INFO: [yuvcorrect] 025 16109 00000 00000 > INFO: [yuvcorrect] 026 12281 00000 00000 > INFO: [yuvcorrect] 027 09313 00000 00000 > INFO: [yuvcorrect] 028 06954 00000 00000 > INFO: [yuvcorrect] 029 04929 00000 00000 > INFO: [yuvcorrect] 030 03300 00000 00000 > INFO: [yuvcorrect] 031 02051 00000 00000 > INFO: [yuvcorrect] 032 01248 00000 00000 > INFO: [yuvcorrect] 033 00681 00000 00000 > INFO: [yuvcorrect] 034 00384 00000 00000 > INFO: [yuvcorrect] 035 00204 00000 00000 > INFO: [yuvcorrect] 036 00091 00000 00000 > INFO: [yuvcorrect] 037 00041 00000 00000 > So it looks like I have less of a spread than you, especially in CbCr. Not much less though. The center in your case is similar - in your case it's 25, in my test it was 28. > Sounds like you want to apply a nonlinear mapping that squeezes your > darker pixels closer together but leaves the rest alone. Perhaps a Not really, at least I don't think so. What I _think_ I need (and have the initial attempt running) is a _very_ selective highpass filter (no pixels with Y' above 48 are even looked at) that uses a 'midpoint' and a combination of clip and core. More below. > piecewise-linear extension to yuvcorrect? Have you tried adjusting > the gamma (a power nonlinearity curve) via yuvcorrect? That might But that affects *everything*, not just the values that are similar in value *and* close to black (where closeness is user specified). Right? > have a similar effect. Or, you could just clip below some "black" > threshold, and then restretch what remains to the full range, That's a bit too aggressive I suspect. > something like: > yuvcorrect -Y Y_1.0_28_235_16_235 Will that translate both 31/128/125 and 26/129/129 into 28/128/128? > or just clip: > yuvcorrect -Y Y_1.0_28_235_28_235 > or clip and shift down (makes it darker though): > yuvcorrect -Y Y_1.0_28_235_16_223 I think what is wanted, and appears to be working is to specify a 'center point' and a 'radius' for Y', Cb, and Cr (usually Cb and Cr would be the same but they don't have to be). Here's a small sample of real data from a 'black frame': 28 128 125 29 128 125 29 128 125 31 129 126 29 129 126 32 129 124 30 129 124 The distribution for the frame is: Y 16 4669 Y 17 4434 Y 18 1645 Y 19 2228 Y 20 3909 Y 21 6750 Y 22 10897 Y 23 17327 Y 24 25437 Y 25 33738 Y 26 41316 Y 27 46068 Y 28 44184 Y 29 35925 Y 30 26505 Y 31 18060 Y 32 11277 Y 33 5925 Y 34 2862 Y 35 1329 Y 36 606 Y 37 274 Y 38 127 Y 39 73 Y 40 23 U 122 32 U 123 98 U 124 362 U 125 1222 U 126 3432 U 127 9572 U 128 20388 U 129 26756 U 130 16098 U 131 5866 U 132 1816 U 133 548 U 134 166 U 135 38 U 136 2 V 120 62 V 121 354 V 122 1624 V 123 6420 V 124 17160 V 125 24796 V 126 18654 V 127 10470 V 128 4858 V 129 1486 V 130 424 V 131 66 V 132 20 To reduce the random shades of grey problem what I want to do is convert 23-31/124-132/124-132 into 28/128/128 but leave things like 49/125/128 and 16/200/64 alone. What I have is a preliminary 'y4mblackfix' which takes allows me to specify what pixels are to be considered identically black and to subsitute the specified center point values. '-y 27 -Y 4" sets the centerpoint for Y' to 27 meaning that pixels with 23 thru 31 values will be examined to see if their Cb and Cr values qualify as 'black'. The defaults for the center point and radius for Cb and Cr are 128 and 4 respectively (and usually are not changed). This means that 23-31/124-132/124-132 pixels become 27/128/128 - the Y' values 23, 24, 25, 26 become 27 (clip) and 28,29,30,31 become 27 (core) Similarily the Cr/Cb values 124,125,126,127 and 129,130,131,132 become 128. Undetectable to most human eyes (I really think) but to the encoder it has a lot more redundancy in place of random variation and that helps the picture quality in dim scenes. Much less random/noise variation in the dark scenes and that should keep grey blocks from dancing around the screen. The tests so far show that after the fade in/out from black the number of "DARK" pixels detected falls dramatically. INFO: [a.out] W 720 H 480 R 30000/1001 Fsize 518400 INFO: [a.out] frame 0 num_dark: 130448 INFO: [a.out] frame 1 num_dark: 134646 INFO: [a.out] frame 2 num_dark: 137259 INFO: [a.out] frame 3 num_dark: 134091 INFO: [a.out] frame 4 num_dark: 139798 INFO: [a.out] frame 5 num_dark: 140109 INFO: [a.out] frame 6 num_dark: 139352 INFO: [a.out] frame 7 num_dark: 141879 INFO: [a.out] frame 8 num_dark: 138247 INFO: [a.out] frame 9 num_dark: 142985 INFO: [a.out] frame 10 num_dark: 140461 INFO: [a.out] frame 11 num_dark: 140132 INFO: [a.out] frame 12 num_dark: 139869 INFO: [a.out] frame 13 num_dark: 135289 INFO: [a.out] frame 14 num_dark: 135146 INFO: [a.out] frame 15 num_dark: 143586 INFO: [a.out] frame 16 num_dark: 28684 INFO: [a.out] frame 17 num_dark: 28777 INFO: [a.out] frame 18 num_dark: 31784 INFO: [a.out] frame 19 num_dark: 32846 INFO: [a.out] frame 20 num_dark: 31032 INFO: [a.out] frame 21 num_dark: 33111 INFO: [a.out] frame 22 num_dark: 32915 see how it's falling quickly? Each frame is 345600 pixels of course (720x480). But a few more frames later on, after the fade in from black is finishing and the opening logo comes up: INFO: [a.out] frame 100 num_dark: 209 INFO: [a.out] frame 101 num_dark: 209 INFO: [a.out] frame 102 num_dark: 216 INFO: [a.out] frame 103 num_dark: 227 INFO: [a.out] frame 104 num_dark: 220 INFO: [a.out] frame 105 num_dark: 212 INFO: [a.out] frame 106 num_dark: 219 INFO: [a.out] frame 107 num_dark: 226 Then the dark nightscene begins: INFO: [a.out] frame 1029 num_dark: 59440 INFO: [a.out] frame 1030 num_dark: 60310 INFO: [a.out] frame 1031 num_dark: 59036 INFO: [a.out] frame 1032 num_dark: 60712 INFO: [a.out] frame 1033 num_dark: 57905 ~15% of the pixels appear to be 'dark' with randomly varying but close values. Later on as the fades to/from black happen it's interesting to watch the number of 'dark pixels' go up and down. > I hope that the encoder doesn't waste a lot of bits encoding chroma > for such low luma, as the eye can't distinguish dark colors so well. Bits are bits and pixels are pixels. If the encoder gets random values close to black but not exactly black then of course it will attempt its best to encode the data. Mpeg2enc has no idea that 31/128/125 and 28/124/127 should be treated the same - so in dark scenes where many/all of the pixels are close together in value the slightest difference will get picked up as the 'action' that needs to be encoded - at that point there is the familar splotches of grey dancing around on the screen. I'm going to play around a bit more and burn a DVD or two to see if the program's having the expected visual effect using a real TV Cheers, Steven Schultz 2 ------------------------------------------------------- This SF.net email is sponsored by:Crypto Challenge is now open! Get cracking and register here for some mind boggling fun and the chance of winning an Apple iPod: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en _______________________________________________ Mjpeg-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/mjpeg-users