kris
322123522c
Assign scan lines randomly to palettes and cluster independently. This doesn't give good results either, since
...
neighbouring lines end up getting similar but not identical colours, which still results in horizontal striping.
2021-11-10 00:34:17 +00:00
kris
fb52815412
Experiment with striping 16 palettes contiguously across line ranges.
...
As expected it has clear banding. A better approach (though still not optimal)
might be to assign lines to palettes randomly.
2021-11-09 22:42:27 +00:00
kris
80885aabf9
Working SHR version. Still just uses a single palette
2021-11-09 22:26:34 +00:00
kris
a92c9cd7b5
Work in CAM16-UCS colour space and cythonize
2021-11-09 15:13:07 +00:00
kris
1010b64272
Fix shift_pixel_window when shift_right_by > window_width
2021-11-03 15:19:29 +00:00
kris
1ed565ff8d
Fix a bug with palette depths < 8
2021-11-02 22:14:42 +00:00
kris
809b975e6e
Return a bitmap directly from dither_image. This removes the need to
...
deal with n-bit encodings at all in DHGRScreen
2021-11-02 14:42:00 +00:00
kris
b7e8c69f64
More descriptive variables
2021-11-02 13:48:53 +00:00
kris
8cfee55b1d
Get rid of support for 140px mode, it was only useful as a demo of why
...
other converters have the wrong basic approach.
2021-11-02 13:40:32 +00:00
kris
5675fac40d
Clean up a bit and accommodate palette depth in sliding pixel window
2021-11-02 12:29:30 +00:00
kris
24644658cb
Tidy a bit
2021-11-01 12:10:02 +00:00
kris
0c588f7489
Tidy
2021-07-19 18:40:16 +01:00
kris
e979df03bc
Nope, don't need XYZ
2021-07-19 18:13:43 +01:00
kris
8b500b16cb
Dither in XYZ representation but use CAM16UCS for colour differences.
...
This gives the best of both worlds: dithering in a linear space, with
good (and fast) perceptual error differences
TBD: would linear RGB work as well as XYZ?
2021-07-19 17:54:46 +01:00
kris
4984df7f7a
Tidy up and optimize a bit
2021-07-19 13:21:32 +01:00
kris
e08f25e4cc
Simplify
2021-07-19 12:55:50 +01:00
kris
508ce134aa
Try to fix how we compute the next pixel palette for 8-bit mode.
...
Still not sure this is correct.
2021-07-19 09:58:22 +01:00
kris
4fcda908bd
WIP - use colourspacious to perform image dithering in CAM02_UCS
...
colour space, which is supposed to be perceptually uniform. i.e. we
can use Euclidean distance instead of CIEDE2000
2021-07-15 13:58:22 +01:00
kris
527f6504f7
Add comments and tidy up some more
2021-03-15 17:22:14 +00:00
kris
ede063a21b
No need to pattern to have third axis of shape 1
...
Minor optimization to not compute error_fraction 3 times
Tidy a bit
2021-03-15 16:22:55 +00:00
kris
551be3eba7
Get --resolution=140 working again
...
Back out the pixel_palette_options WIP to make this mergable
2021-03-15 15:41:33 +00:00
kris
fcf83aaf9c
Even more fasterer!
2021-03-15 15:11:06 +00:00
kris
f157272327
Checkpoint more type annotations
2021-03-15 15:10:49 +00:00
kris
722e85f645
Combine loops in dither_lookahead and don't bother dithering beyond
...
lookahead or edge of screen.
2021-03-15 15:10:33 +00:00
kris
8b48455c8f
Checkpoint
2021-03-15 15:10:33 +00:00
kris
049c334950
Fixed
2021-03-15 15:10:33 +00:00
kris
f4cc7dac40
Checkpoint - I broke something
2021-03-15 15:10:33 +00:00
kris
a686ef76c3
WIP
2021-03-15 15:10:12 +00:00
kris
f87ca90fd4
Add a --verbose option to output progress
2021-03-15 15:01:21 +00:00
kris
e1108b4dd0
Tidy up a bit in preparation for merge.
2021-03-15 10:45:57 +00:00
kris
ad9515dcf2
Implement NTSC emulation, using an 8 pixel window for chroma signal.
...
Use this to precompute a new ntsc palette with 256 entries (though
only 84 unique colours) that are available by appropriate pixel
sequences. Unfortunately the precomputed distance matrix for this
palette is 4GB!
Optimize the precomputation to be less memory hungry, while also
making efficient use of the mmapped output file.
Add support for dithering images using this 8-bit palette depth,
i.e. to optimize for NTSC rendering. This often gives better image
quality since more colours are available, especially when modulating
areas of similar colour.
Fix 140 pixel dithering and render the output including NTSC fringing
instead of the unrealistic 140px output that doesn't include it.
Add support for rendering output image using any target palette, which
is useful e.g. for comparing how an 8-pixel NTSC rendered image will
be displayed on an emulator using 4-pixel ntsc emulation (there is
usually some colour bias, because the 8 pixel chroma blending tends to
average away colours).
Switch the output binary format to write AUX memory first, which
matches the image format of other utilities.
2021-02-14 23:34:25 +00:00
kris
d535d2430d
Tidy a bit
2021-01-22 22:26:10 +00:00
kris
081c815643
Flatten image array, about 5% faster
2021-01-22 22:19:48 +00:00
kris
61e1448b87
Refactor to use a Dither cstruct
2021-01-22 22:06:25 +00:00
kris
84442f32a7
Clean up some more
2021-01-21 23:33:12 +00:00
kris
e046f5fccf
Clean up a bit
2021-01-21 23:23:19 +00:00
kris
a4ecf69610
Checkpoint WIP
2021-01-21 23:17:55 +00:00
kris
a061795022
Re-enable 140px mode
2021-01-15 22:58:01 +00:00
kris
f5553e00b8
Rename
2021-01-15 22:20:28 +00:00