The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Photography & Images

Taking & making images.

  • Subpixel Zoo: Capturing the Specimens

    Subpixel Zoo: Capturing the Specimens

    A Hacker News discussion led to the Subpixel Zoo, which led to thinking the patterns might make interesting layered “art”. After fetching the *.webp images and figuring out how to persuade Thunar to display them, the next step was converting them into paths suitable for laser cutting.

    Although the images are algorithmically generated in a common layout, figuring out how to get the outlines as paths seemed to require a journey into the depths of the Pygame library and that would turn into a major digression.

    Instead, start with one of the webp images:

    sq_RGBY
    sq_RGBY

    The deliberate blurring apparently simulates what you see in real life.

    Import the image into LightBurn, which converts it to grayscale under the plausible assumption you’re going to engrave the image on something. Then:

    • Create a rounded rectangle overlaying the lower-left-most subpixel to good eyeballometric accuracy
    • Turn it into a four-element rectangular array, twiddling the center-to-center spacing to match the subpixel layout
    • Duplicate those four upward in another array to create a subpixel block, as marked in the upper-left corner of the original image
    • Slam another array across the bottom row and upward, twiddling the spacing to match the subpixel block spacing along both axes

    Which eventually looks like this:

    SubPixels - LightBurn vector overlay
    SubPixels – LightBurn vector overlay

    I made the final array absurdly large, cropped it with a square to match the template I used for the layered paper patterns, resized the result to be 170 mm on a side, then dropped the square into the middle of the template:

    Subpixel Zoo - Quattron RGBY - LightBurn black mask layer
    Subpixel Zoo – Quattron RGBY – LightBurn black mask layer

    One gotcha: crop the subpixels on a Fill layer so LightBurn will close the truncated edges, then put them on a Line layer for cutting. The doc explains why, although it’s not obvious at first, as is the fact that you must delete the group of shapes outside the square before it looks like anything happened during the cut operation.

    The resulting layout contains all the subpixel rectangles, so it’s what you want for the top black mask layer. Duplicate the pattern and delete the subpixels corresponding to each color, until you have one template for each of the Red / Green / Blue layers:

    Subpixel Zoo - Quattron RGBY - LightBurn layers
    Subpixel Zoo – Quattron RGBY – LightBurn layers

    The blank over on the right is the Yellow layer, which does get a quartet of layer ID holes cut in the lower right corner.

    Then it’s just a matter of cutting the blanks, locating the fixture on the platform, dropping the appropriate color sheet in place, cutting it, then assembling the stack in the gluing fixture:

    Subpixel Zoo - Quattron RGBY
    Subpixel Zoo – Quattron RGBY

    It’s kinda cute, in a techie way.

    I did a bunch of layouts, just to see what they looked like:

    Subpixel Zoo - 8x8 layouts
    Subpixel Zoo – 8×8 layouts

    In person, the RGBY patterns look bright and the RGB patterns seem dull by comparison. I’m using cardstock paper, rather than fancy art paper, which surely makes all the difference.

  • Thunar WEBP Thumbnails

    Thunar WEBP Thumbnails

    For whatever reason, the Thunar file browser in XFCE does not automagically show thumbnails for webp images. Some searching produced a recipe, although the displayed webp.xml file needs the last two lines to close the tags:

    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
        <mime-type type="image/webp">
            <comment>WebP file</comment>
            <icon name="image"/>
            <glob-deleteall/>
            <glob pattern="*.webp"/>
        </mime-type>
    </mime-info>
    

    The magic copy-to-clipboard button includes those tags, so I suppose it’s another case of being careful what you believe on the Intertubes.

    Going through the steps displayed images of the Subpixel Zoo:

    Thunar - webp previews
    Thunar – webp previews

    They’ll turn into layered paper patterns:

    Subpixel Zoo - Quattron RGBY Shifted - detail
    Subpixel Zoo – Quattron RGBY Shifted – detail
  • Sinking Rocks

    Sinking Rocks

    Trigger warning: trypophobia fuel.

    Spotted on the walking path near the Vassar College golf course:

    Sinking Stones - A
    Sinking Stones – A

    They’re everywhere:

    Sinking Stones - B
    Sinking Stones – B

    I think the path surface rises as it freezes, then the stones sink into the loosened soil as they warm up. Other parts of the path, generally having more loam / mulch / organic material than mud & pebbles, have an obviously raised / porous / crunchy texture on bitterly cold (by my standards) days.

    Surely, someone can pull a PhD thesis from similar observations …

  • EBL Bucked Lithium AA and AAA Cells

    EBL Bucked Lithium AA and AAA Cells

    A new kitchen scale eats a quartet of AAA alkaline cells every month, so a set of bucked lithium AAA cells make sense:

    EBL AAA first charge - 2024-09-11
    EBL AAA first charge – 2024-09-11

    The cells claim 1200 mA·hr capacity, because it looks much more impressive than 1.2 A·hr, and deliver 900 mA·hr at 500 mA, likely higher than the scale’s actual load current.

    The old Sony DSC-H5 works well with the light box and gets a pair of bucked lithium AA cells to replace the tired Eneloops:

    EBL AA first charge - 2024-10-17
    EBL AA first charge – 2024-10-17

    They claim 3000 mA·hr and deliver 2.5 A·hr at 500 mA: nearly perfect, considering some of the junk I’ve gotten over the years.

    Now, to see how they behave in real life …

  • SJCAM M20 Dashboard Camera: NP-BX1 Battery Deterioration

    SJCAM M20 Dashboard Camera: NP-BX1 Battery Deterioration

    A year of limited use (a little over 3000 miles) after setting up the SJCAM M20 action camera as a dashcam in the Forester has killed the junk-as-delivered Batmax NP-BX1 battery:

    Batmax NP-BX1 - 2022-H in 2024-11
    Batmax NP-BX1 – 2022-H in 2024-11

    Although the total capacity remains about the same as before, the voltage depression causes the camera (which expects to run from a high-voltage lithium cell) to crash immediately after the car’s USB power jack shuts off, preventing it from properly closing the video file.

    Another Batmax battery from the same batch works fine, so we’ll see if it can survive for another year.

  • Simpleminded Photographic Light Box

    Simpleminded Photographic Light Box

    The general idea of a light box is (wait for it) a uniform background in a box full of bright light:

    Light Box - overview
    Light Box – overview

    Obviously, this is a low-budget light box, but it makes perfect sense if you already have an essentially unlimited supply of moving boxes, 11×17 inch plotter paper, and a couple of photo / video lights lying around.

    A two-layer cardboard ring glued to the top keeps the light from sliding off the box and stiffens the gaping hole letting the light shine through.

    You’d normally use a fabric background to get rid of those ugly gaps around the edges and a larger box would be better, so this is along the lines of a proof-of-concept.

    From the camera’s viewpoint, it looks better than my crusty desktop cutting mat:

    Light Box - gears overview
    Light Box – gears overview

    Those gears would not look out of place in Bowman’s bedroom in 2001: A Space Odyssey.

    In this day and age, you’d normally use a phone camera:

    Light Box - gears overview - DOF
    Light Box – gears overview – DOF

    The lens on my Pixel 6a has a fixed focal length (around 4.4 mm = 27 mm equivalent) and a fixed f/1.8 (-ish) aperture, producing a razor-thin depth of field at the rear of the front gears. Note the fuzzy gears in the background, all of three inches away, and the slightly fuzzy front edge of the front gears. The camera’s digital zoom doesn’t help matters in the least, despite the AI-powered interpolation.

    Keeping things close together helps, although the far end of the wipe towers and the rear of the gears lose detail:

    Light Box - gears stacked
    Light Box – gears stacked

    Looking from above also helps a little, but a top viewing port would reduce the skewed perspective:

    Light Box - gears detail - DOF
    Light Box – gears detail – DOF

    Shallow DOF keeps your attention on the foreground, which is why real photographers use it for portraits:

    Light Box - gears standing - DOF
    Light Box – gears standing – DOF

    The camera, an ancient Sony DSC-H5 with a zoom lens going down to f/8, still does nice work through a 2× macro adapter lens:

    Light Box - gear detail - top light
    Light Box – gear detail – top light

    The DOF is still narrow, but at least the entire front gear is in focus.

    Adding a front light picks out the knurling:

    Light Box - gears detail - front light
    Light Box – gears detail – front light

    The results definitely look better than before, but it’ll take a bit of getting used to traipsing to the Basement Laboratory for every photo …

  • Royal Carting Truck: Squeeze Play

    Royal Carting Truck: Squeeze Play

    I’m riding downhill from Red Oaks Mill toward the bridge across the Wappinger Creek, pedaling a bit over 24 mph = 37 feet/sec, far enough into the lane to avoid trash along the curb on the right:

    Royal front 2024-09-13 - 078
    Royal front 2024-09-13 – 078

    Although you can barely see the vehicle passing on my left, I’ve just realized I am in one heap of trouble.

    Half a second later (the frame number in the caption ticks along at 60 fps) I’m caught in the slipstream:

    Royal front 2024-09-13 - 108
    Royal front 2024-09-13 – 108

    Another half second and I’m leaning slightly to the right:

    Royal front 2024-09-13 - 138
    Royal front 2024-09-13 – 138

    Make that wobbling:

    Royal front 2024-09-13 - 158
    Royal front 2024-09-13 – 158

    Well, that’s a relief:

    Royal front 2024-09-13 - 178
    Royal front 2024-09-13 – 178

    The truck is now completely within our lane and I’m further to the right, so our paths really were converging:

    Royal front 2024-09-13 - 208
    Royal front 2024-09-13 – 208

    Elapsed time: 2.2 seconds.

    The view from the rear shows the driver started with reasonable clearance (these frames tick at 30 fps):

    Royal rear 2024-09-13 - 090
    Royal rear 2024-09-13 – 090

    A second later, the dumpster grabber is about even with my handlebars, corresponding to the first helmet camera picture:

    Royal rear 2024-09-13 - 120
    Royal rear 2024-09-13 – 120

    A third of a second later:

    Royal rear 2024-09-13 - 130
    Royal rear 2024-09-13 – 130

    The rear wheels passed much closer:

    Royal rear 2024-09-13 - 180
    Royal rear 2024-09-13 – 180

    In general, Royal’s drivers give us plenty of clearance.

    In this case, I think he badly misjudged how fast I was moving and figured he would be well past by the time he had to be completely in the right lane to avoid vehicles in the left-turn lane on the bridge.

    However, intent wouldn’t make me any less dead after a trip around those tires …