On Mon, Sep 13, 2010 at 2:36 AM, Martin Renold <[email protected]> wrote: > On Sun, Sep 12, 2010 at 06:59:50PM +0200, Martin Renold wrote: >> [...] >> That should be acceptable, why didn't I think of it before... > > Doh. I should have wondered why I had that idea now. It's because I /did/ > think of it before. It is what the old code did...
I've just added a test for roundtripping (patch attached), and this fully explains the problems we've been having! I initially thought that my dithering code must have some mistake, but the below results did not change at all after reverting my dithering commit. In summary, on about 75% of roundtrips 8>16>8, the result is +1 vs the input. (logged output follows -- only wrong roundtrips are printed.) ----- 1 roundtrips as 2 2 roundtrips as 3 3 roundtrips as 4 4 roundtrips as 5 5 roundtrips as 6 6 roundtrips as 7 7 roundtrips as 8 8 roundtrips as 9 9 roundtrips as 10 10 roundtrips as 11 11 roundtrips as 12 13 roundtrips as 14 15 roundtrips as 16 17 roundtrips as 18 19 roundtrips as 20 21 roundtrips as 22 23 roundtrips as 24 25 roundtrips as 26 27 roundtrips as 28 29 roundtrips as 30 30 roundtrips as 31 31 roundtrips as 32 33 roundtrips as 34 35 roundtrips as 36 37 roundtrips as 38 39 roundtrips as 40 41 roundtrips as 42 43 roundtrips as 44 44 roundtrips as 45 45 roundtrips as 46 46 roundtrips as 47 47 roundtrips as 48 49 roundtrips as 50 51 roundtrips as 52 53 roundtrips as 54 54 roundtrips as 55 55 roundtrips as 56 57 roundtrips as 58 59 roundtrips as 60 60 roundtrips as 61 61 roundtrips as 62 62 roundtrips as 63 63 roundtrips as 64 65 roundtrips as 66 67 roundtrips as 68 68 roundtrips as 69 69 roundtrips as 70 70 roundtrips as 71 71 roundtrips as 72 73 roundtrips as 74 75 roundtrips as 76 76 roundtrips as 77 77 roundtrips as 78 78 roundtrips as 79 79 roundtrips as 80 81 roundtrips as 82 83 roundtrips as 84 84 roundtrips as 85 85 roundtrips as 86 86 roundtrips as 87 87 roundtrips as 88 89 roundtrips as 90 91 roundtrips as 92 92 roundtrips as 93 93 roundtrips as 94 94 roundtrips as 95 95 roundtrips as 96 97 roundtrips as 98 99 roundtrips as 100 100 roundtrips as 101 101 roundtrips as 102 102 roundtrips as 103 103 roundtrips as 104 105 roundtrips as 106 107 roundtrips as 108 108 roundtrips as 109 109 roundtrips as 110 110 roundtrips as 111 111 roundtrips as 112 113 roundtrips as 114 115 roundtrips as 116 116 roundtrips as 117 117 roundtrips as 118 118 roundtrips as 119 119 roundtrips as 120 121 roundtrips as 122 123 roundtrips as 124 124 roundtrips as 125 125 roundtrips as 126 126 roundtrips as 127 127 roundtrips as 128 129 roundtrips as 130 131 roundtrips as 132 132 roundtrips as 133 133 roundtrips as 134 134 roundtrips as 135 135 roundtrips as 136 137 roundtrips as 138 139 roundtrips as 140 140 roundtrips as 141 141 roundtrips as 142 142 roundtrips as 143 143 roundtrips as 144 145 roundtrips as 146 147 roundtrips as 148 148 roundtrips as 149 149 roundtrips as 150 150 roundtrips as 151 151 roundtrips as 152 153 roundtrips as 154 155 roundtrips as 156 156 roundtrips as 157 157 roundtrips as 158 158 roundtrips as 159 159 roundtrips as 160 161 roundtrips as 162 163 roundtrips as 164 164 roundtrips as 165 165 roundtrips as 166 166 roundtrips as 167 167 roundtrips as 168 169 roundtrips as 170 171 roundtrips as 172 172 roundtrips as 173 173 roundtrips as 174 174 roundtrips as 175 175 roundtrips as 176 177 roundtrips as 178 179 roundtrips as 180 180 roundtrips as 181 181 roundtrips as 182 182 roundtrips as 183 183 roundtrips as 184 185 roundtrips as 186 187 roundtrips as 188 188 roundtrips as 189 189 roundtrips as 190 190 roundtrips as 191 191 roundtrips as 192 193 roundtrips as 194 195 roundtrips as 196 196 roundtrips as 197 197 roundtrips as 198 198 roundtrips as 199 199 roundtrips as 200 201 roundtrips as 202 203 roundtrips as 204 204 roundtrips as 205 205 roundtrips as 206 206 roundtrips as 207 207 roundtrips as 208 209 roundtrips as 210 211 roundtrips as 212 212 roundtrips as 213 213 roundtrips as 214 214 roundtrips as 215 215 roundtrips as 216 216 roundtrips as 217 217 roundtrips as 218 218 roundtrips as 219 219 roundtrips as 220 220 roundtrips as 221 221 roundtrips as 222 222 roundtrips as 223 223 roundtrips as 224 225 roundtrips as 226 227 roundtrips as 228 228 roundtrips as 229 229 roundtrips as 230 230 roundtrips as 231 231 roundtrips as 232 232 roundtrips as 233 233 roundtrips as 234 234 roundtrips as 235 235 roundtrips as 236 236 roundtrips as 237 237 roundtrips as 238 238 roundtrips as 239 239 roundtrips as 240 241 roundtrips as 242 243 roundtrips as 244 244 roundtrips as 245 245 roundtrips as 246 246 roundtrips as 247 247 roundtrips as 248 248 roundtrips as 249 249 roundtrips as 250 250 roundtrips as 251 251 roundtrips as 252 252 roundtrips as 253 253 roundtrips as 254 254 roundtrips as 255
From 88e3fb5920a5ed3d1abcf4b4d2d722db64553483 Mon Sep 17 00:00:00 2001 From: David Gowers <[email protected]> Date: Mon, 13 Sep 2010 14:41:33 +0930 Subject: [PATCH] testing: test 8bpp->16bpp->8bpp roundtrip precision. --- tests/test_mypaintlib.py | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/tests/test_mypaintlib.py b/tests/test_mypaintlib.py index 184cad0..410bf76 100755 --- a/tests/test_mypaintlib.py +++ b/tests/test_mypaintlib.py @@ -21,6 +21,19 @@ def tileConversions(): dst = zeros((N, N, 4), 'uint8') mypaintlib.tile_convert_rgba16_to_rgba8(src, dst) assert (dst[:,:,3] == 255).all() + #8>16>8 roundtrip is lossless + fill = list (range (255+1)) * ((N*N*4) / 256) + src = empty((N,N,4), 'uint8') + src.flat[:] = fill + dst = zeros((N, N, 4), 'uint16') + dst2 = zeros((N, N, 4), 'uint8') + mypaintlib.tile_convert_rgba8_to_rgba16 (src, dst) + mypaintlib.tile_convert_rgba16_to_rgba8 (dst, dst2) + for i in range (255+1): + if src.flat[i] != dst2.flat[i]: + print ("%d roundtrips as %d" % (src.flat[i], dst2.flat[i])) + assert (src == dst2).all() + def directPaint(): -- 1.7.2
_______________________________________________ Mypaint-discuss mailing list [email protected] https://mail.gna.org/listinfo/mypaint-discuss
