Move DHR examples to subdir in preparation for adding SHR examples
14
README.md
@ -90,11 +90,11 @@ TODO: link to KansasFest 2022 talk slides/video for more details
|
||||
|
||||
## Double Hi-Res
|
||||
|
||||
See [here](examples/gallery.md) for more sample Double Hi-Res image conversions.
|
||||
See [here](examples/dhr/gallery.md) for more sample Double Hi-Res image conversions.
|
||||
|
||||
### Original
|
||||
|
||||

|
||||

|
||||
|
||||
(Source: [Shreygadgil](https://commons.wikimedia.org/wiki/File:Vibrant_Wings.jpg), [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0), via Wikimedia Commons)
|
||||
|
||||
@ -103,18 +103,18 @@ See [here](examples/gallery.md) for more sample Double Hi-Res image conversions.
|
||||
This image was generated using
|
||||
|
||||
```buildoutcfg
|
||||
python convert.py --lookahead 8 --palette openemulator examples/parrots-original.png examples/parrots-iipix-openemulator.dhr
|
||||
python convert.py --lookahead 8 --palette openemulator examples/dhr/parrots-original.png examples/dhr/parrots-iipix-openemulator.dhr
|
||||
```
|
||||
|
||||
The resulting ][-pix preview PNG image is shown here.
|
||||
|
||||

|
||||

|
||||
|
||||
### OpenEmulator screenshot
|
||||
|
||||
This is a screenshot taken from OpenEmulator when viewing the Double Hi-res image.
|
||||
|
||||

|
||||

|
||||
|
||||
Some difference in colour tone is visible due to blending of colours across pixels (e.g. brown blending into grey, in the background). This is due to the fact that OpenEmulator simulates the reduced chroma bandwidth of the NTSC signal.
|
||||
|
||||
@ -122,7 +122,7 @@ Some difference in colour tone is visible due to blending of colours across pixe
|
||||
|
||||
This is an OpenEmulator screenshot of the same image converted with `--palette=ntsc` instead of `--palette=openemulator`. Colour match to the original is substantially improved, and more colour detail is visible, e.g. in the shading of the background.
|
||||
|
||||

|
||||

|
||||
|
||||
## Super Hi-Res
|
||||
|
||||
@ -157,4 +157,4 @@ TODO: add example images
|
||||
|
||||
Initial release
|
||||
|
||||

|
||||

|
||||
|
44
docs/dhr.md
@ -67,19 +67,19 @@ By contrast, OpenEmulator uses a more complex (and realistic) band-pass filterin
|
||||
|
||||
(Source: [Reinhold Möller](https://commons.wikimedia.org/wiki/File:Nymphaea_caerulea-20091014-RM-115245.jpg), [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0), via Wikimedia Commons)
|
||||
|
||||

|
||||

|
||||
|
||||
OpenEmulator screenshot of image produced with `--palette=openemulator --lookahead=8`. The distorted background colour compared to the original is particularly noticeable.
|
||||
|
||||

|
||||

|
||||
|
||||
OpenEmulator screenshot of image produced with `--palette=ntsc --lookahead=8`. Not only is the background colour a much better match, the image shading and detail is markedly improved.
|
||||
|
||||

|
||||

|
||||
|
||||
Rendering the same .dhr image with 4-pixel colour shows the reason for the difference. For example the background shading is due to pixel sequences that appear (with this simpler and less hardware-accurate rendering scheme) as sequences of grey and dark green, with a lot of blue and red sprinkled in. In NTSC these pixel sequences combine to produce various shades of green.
|
||||
|
||||

|
||||

|
||||
|
||||
# Dithering and Double Hi-Res
|
||||
|
||||
@ -188,7 +188,7 @@ The mapping from RGB colour space to CAM16-UCS is quite complex, so to avoid thi
|
||||
These three images were converted using the same target (openemulator) palette, using ][-pix, bmp2dhr and a2bestpix (since this is supported by all three), and are shown as screenshots from openemulator.
|
||||
|
||||
### Original
|
||||

|
||||

|
||||
|
||||
(Source: [Purple Sherbet Photography from Worldwide!](https://commons.wikimedia.org/wiki/File:Colourful_assortment_of_paper_clips_(10421946796).jpg), [CC BY 2.0](https://creativecommons.org/licenses/by/2.0), via Wikimedia Commons)
|
||||
|
||||
@ -198,24 +198,24 @@ The following images were all generated with a palette approximating OpenEmulato
|
||||
|
||||
Preview image and OpenEmulator screenshot
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### ][-pix NTSC 8-pixel colour (Preview image)
|
||||
|
||||
Preview image and OpenEmulator screenshot
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### bmp2dhr (OpenEmulator screenshot)
|
||||

|
||||

|
||||
|
||||
Comparing bmp2dhr under openemulator is the scenario most favourable to it, since the 140px resolution and non-treatment of fringing is masked by the chroma blending. Colours are similar to ][-pix, but the 140px dithering and lack of gamma correction results in less detail, e.g. in hilights/shadows.
|
||||
|
||||
### a2bestpix (OpenEmulator screenshot)
|
||||
|
||||

|
||||

|
||||
|
||||
This a2bestpix image is actually atypical in quality, and shows some severe colour errors relating to the pixels that should be close to the orange/brown colours. These may be due to errors/omissions in the set of "colour blocks". The effects of not gamma-correcting the source image can also be seen.
|
||||
|
||||
@ -225,7 +225,7 @@ The difference in treatment of NTSC artifacts is much more visible when using an
|
||||
|
||||
### Original
|
||||
|
||||

|
||||

|
||||
|
||||
(Source: [Cephas](https://commons.wikimedia.org/wiki/File:Marmota_monax_UL_04.jpg), [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0), via Wikimedia Commons)
|
||||
|
||||
@ -233,34 +233,34 @@ The following images were generated with a palette matching the one used by Virt
|
||||
|
||||
### ][-pix
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### bmp2dhr
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
The image is heavily impacted by colour fringing, which bmp2dhr does not account for at all. The difference in brightness of the groundhog's flank is also because bmp2dhr does not gamma-correct the image, so shadows/highlights tend to get blown out.
|
||||
|
||||
### bmp2dhr (OpenEmulator)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
This bmp2dhr image was generated using a palette approximating OpenEmulator's colours (`--palette=openemulator` for ][-pix), i.e. not the same image files as above.
|
||||
On OpenEmulator, which simulates NTSC chroma sub-sampling, the fringing is not pronounced but changes the colour balance of the image, e.g. creates a greenish tinge.
|
||||
|
||||
### ][-pix, 4-pixel colour (OpenEmulator)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Colour balance here is also slightly distorted due to not fully accounting for chroma blending.
|
||||
|
||||
### ][-pix, NTSC 8-pixel colour (OpenEmulator)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Detail and colour balance is much improved.
|
||||
|
Before ![]() (image error) Size: 549 KiB After ![]() (image error) Size: 549 KiB ![]() ![]() |
Before ![]() (image error) Size: 456 KiB After ![]() (image error) Size: 456 KiB ![]() ![]() |
Before ![]() (image error) Size: 512 KiB After ![]() (image error) Size: 512 KiB ![]() ![]() |
0
examples/autumn-iipix-openemulator-preview.png → examples/dhr/autumn-iipix-openemulator-preview.png
Before ![]() (image error) Size: 304 KiB After ![]() (image error) Size: 304 KiB ![]() ![]() |
Before ![]() (image error) Size: 314 KiB After ![]() (image error) Size: 314 KiB ![]() ![]() |
Before ![]() (image error) Size: 584 KiB After ![]() (image error) Size: 584 KiB ![]() ![]() |
0
examples/blue-frog-iipix-ntsc-openemulator.png → examples/dhr/blue-frog-iipix-ntsc-openemulator.png
Before ![]() (image error) Size: 503 KiB After ![]() (image error) Size: 503 KiB ![]() ![]() |
Before ![]() (image error) Size: 411 KiB After ![]() (image error) Size: 411 KiB ![]() ![]() |
Before ![]() (image error) Size: 462 KiB After ![]() (image error) Size: 462 KiB ![]() ![]() |
Before ![]() (image error) Size: 250 KiB After ![]() (image error) Size: 250 KiB ![]() ![]() |
0
examples/blue-frog-iipix-virtualii-preview.png → examples/dhr/blue-frog-iipix-virtualii-preview.png
Before ![]() (image error) Size: 279 KiB After ![]() (image error) Size: 279 KiB ![]() ![]() |
Before ![]() (image error) Size: 566 KiB After ![]() (image error) Size: 566 KiB ![]() ![]() |
Before ![]() (image error) Size: 521 KiB After ![]() (image error) Size: 521 KiB ![]() ![]() |
Before ![]() (image error) Size: 437 KiB After ![]() (image error) Size: 437 KiB ![]() ![]() |
Before ![]() (image error) Size: 474 KiB After ![]() (image error) Size: 474 KiB ![]() ![]() |
Before ![]() (image error) Size: 274 KiB After ![]() (image error) Size: 274 KiB ![]() ![]() |
Before ![]() (image error) Size: 248 KiB After ![]() (image error) Size: 248 KiB ![]() ![]() |
Before ![]() (image error) Size: 494 KiB After ![]() (image error) Size: 494 KiB ![]() ![]() |
Before ![]() (image error) Size: 554 KiB After ![]() (image error) Size: 554 KiB ![]() ![]() |
Before ![]() (image error) Size: 644 KiB After ![]() (image error) Size: 644 KiB ![]() ![]() |
0
examples/groundhog-iipix-ntsc-openemulator.png → examples/dhr/groundhog-iipix-ntsc-openemulator.png
Before ![]() (image error) Size: 564 KiB After ![]() (image error) Size: 564 KiB ![]() ![]() |
Before ![]() (image error) Size: 513 KiB After ![]() (image error) Size: 513 KiB ![]() ![]() |
Before ![]() (image error) Size: 544 KiB After ![]() (image error) Size: 544 KiB ![]() ![]() |
Before ![]() (image error) Size: 370 KiB After ![]() (image error) Size: 370 KiB ![]() ![]() |
0
examples/groundhog-iipix-virtualii-preview.png → examples/dhr/groundhog-iipix-virtualii-preview.png
Before ![]() (image error) Size: 347 KiB After ![]() (image error) Size: 347 KiB ![]() ![]() |
Before ![]() (image error) Size: 579 KiB After ![]() (image error) Size: 579 KiB ![]() ![]() |
Before ![]() (image error) Size: 499 KiB After ![]() (image error) Size: 499 KiB ![]() ![]() |
Before ![]() (image error) Size: 565 KiB After ![]() (image error) Size: 565 KiB ![]() ![]() |
Before ![]() (image error) Size: 505 KiB After ![]() (image error) Size: 505 KiB ![]() ![]() |
Before ![]() (image error) Size: 540 KiB After ![]() (image error) Size: 540 KiB ![]() ![]() |
Before ![]() (image error) Size: 365 KiB After ![]() (image error) Size: 365 KiB ![]() ![]() |
Before ![]() (image error) Size: 339 KiB After ![]() (image error) Size: 339 KiB ![]() ![]() |
Before ![]() (image error) Size: 481 KiB After ![]() (image error) Size: 481 KiB ![]() ![]() |
Before ![]() (image error) Size: 582 KiB After ![]() (image error) Size: 582 KiB ![]() ![]() |
Before ![]() (image error) Size: 532 KiB After ![]() (image error) Size: 532 KiB ![]() ![]() |
Before ![]() (image error) Size: 556 KiB After ![]() (image error) Size: 556 KiB ![]() ![]() |
Before ![]() (image error) Size: 496 KiB After ![]() (image error) Size: 496 KiB ![]() ![]() |
Before ![]() (image error) Size: 534 KiB After ![]() (image error) Size: 534 KiB ![]() ![]() |
Before ![]() (image error) Size: 299 KiB After ![]() (image error) Size: 299 KiB ![]() ![]() |
Before ![]() (image error) Size: 304 KiB After ![]() (image error) Size: 304 KiB ![]() ![]() |
Before ![]() (image error) Size: 357 KiB After ![]() (image error) Size: 357 KiB ![]() ![]() |
Before ![]() (image error) Size: 530 KiB After ![]() (image error) Size: 530 KiB ![]() ![]() |
Before ![]() (image error) Size: 441 KiB After ![]() (image error) Size: 441 KiB ![]() ![]() |
Before ![]() (image error) Size: 488 KiB After ![]() (image error) Size: 488 KiB ![]() ![]() |
Before ![]() (image error) Size: 310 KiB After ![]() (image error) Size: 310 KiB ![]() ![]() |
Before ![]() (image error) Size: 305 KiB After ![]() (image error) Size: 305 KiB ![]() ![]() |
Before ![]() (image error) Size: 473 KiB After ![]() (image error) Size: 473 KiB ![]() ![]() |
Before ![]() (image error) Size: 557 KiB After ![]() (image error) Size: 557 KiB ![]() ![]() |
Before ![]() (image error) Size: 421 KiB After ![]() (image error) Size: 421 KiB ![]() ![]() |
Before ![]() (image error) Size: 487 KiB After ![]() (image error) Size: 487 KiB ![]() ![]() |
Before ![]() (image error) Size: 518 KiB After ![]() (image error) Size: 518 KiB ![]() ![]() |
Before ![]() (image error) Size: 265 KiB After ![]() (image error) Size: 265 KiB ![]() ![]() |
Before ![]() (image error) Size: 274 KiB After ![]() (image error) Size: 274 KiB ![]() ![]() |
Before ![]() (image error) Size: 403 KiB After ![]() (image error) Size: 403 KiB ![]() ![]() |
0
examples/paperclips-a2bestpix-openemulator.png → examples/dhr/paperclips-a2bestpix-openemulator.png
Before ![]() (image error) Size: 565 KiB After ![]() (image error) Size: 565 KiB ![]() ![]() |
Before ![]() (image error) Size: 558 KiB After ![]() (image error) Size: 558 KiB ![]() ![]() |
Before ![]() (image error) Size: 570 KiB After ![]() (image error) Size: 570 KiB ![]() ![]() |
Before ![]() (image error) Size: 473 KiB After ![]() (image error) Size: 473 KiB ![]() ![]() |
Before ![]() (image error) Size: 539 KiB After ![]() (image error) Size: 539 KiB ![]() ![]() |
Before ![]() (image error) Size: 318 KiB After ![]() (image error) Size: 318 KiB ![]() ![]() |
Before ![]() (image error) Size: 328 KiB After ![]() (image error) Size: 328 KiB ![]() ![]() |
Before ![]() (image error) Size: 522 KiB After ![]() (image error) Size: 522 KiB ![]() ![]() |
Before ![]() (image error) Size: 560 KiB After ![]() (image error) Size: 560 KiB ![]() ![]() |
Before ![]() (image error) Size: 502 KiB After ![]() (image error) Size: 502 KiB ![]() ![]() |
Before ![]() (image error) Size: 535 KiB After ![]() (image error) Size: 535 KiB ![]() ![]() |
Before ![]() (image error) Size: 341 KiB After ![]() (image error) Size: 341 KiB ![]() ![]() |