I invented a way to make 508 DPI full-color images by alternately anodizing and ablating titanium

Pete,

AI gets things wrong fairly often. I’ve given mine standing instructions to just own up to it and move on. It sounds like Brave did just that. At this point, I have Claude (Cowork) keeping a running record of findings, and on its own it decided to keep a list of things to not bring up again because I proved them wrong. :slight_smile:

No need to apologize about dot size! I was thinking the laser might adjust the dot size which is clearly not the case for my laser at least. You got me on the right track. :+1:

For Python installation, I suggest you ask AI for help. You can even copy and paste the errors you’re getting into AI, and I bet it will help. If Brave doesn’t do a good job (I’ve never used it), I suggest trying Gemini (gemini.google.com). If you have a gmail account, you already have Gemini for free. I’m pretty sure it will be able to guide you through the installation. If the script uses libraries ask Gemini for commands to install them using the built in Python module installation option.

It’s a great idea to ask AI to explain Povilas’s script!

It is easy to make a set of values for the grid. The hard part is knowing what colors those values can assume (measuring the palette) and getting them arranged to produce the perception of lots more colors that actually look right. I have spent months on this. AI can write the code now, so you’re right that coding is now easy (although you’ll need a strong AI model to get it right).

I would happily share my separator script if you want to try it. It’s way bigger than the one from nothing.it and has lots of options, but I can also provide an extensive manual (full disclosure - it will be AI written). And I’ll make sure the manual has a starting command that will give you at least a decent set of PNGs to start. I think the script is likely fully applicable to what you want to do, but you would want to use the “footprint” PNG files for direct laser coloring because they don’t overlap. My anodize/ablate/anodize process tolerates multiple ablations of the same area of metal with no downside that I’ve noticed (it’s actually a feature because I always get color everywhere even if I don’t get perfect registration for every ablation), but I don’t think direct coloring would work well if you color the same are multiple times. It would be easy for me to make an option to adjust the footprint PNGs if you need something different from what it does now. If you’re interested, I could send you the script and/or a set of files from a sample separation that you could check out.

I like you you describe building a model in your mind and operate it under various conditions! My brain is very algorithmic, and I can’t remember random facts (used to have to derive the algebra rules while taking the test because I couldn’t remember them). So I’m thriving in this world where I have algorithms to prompt AI, use and modify scripts that implement algorithms, and use experimentation to develop my image coloring process. It sounds like you have a strong algorithmic streak too. :+1:

Hi Jack!

Thank you for your kind encouragement and for the links! You are helping me realize it would be a good idea to learn more about how my marvelous laser actually works. I’ll check out the links you provided. I’m glad you like this kind of stuff, and I’m enjoying interacting with humans about it instead of AI. :+1:

I am in awe of what Povilas accomplished (link in my GitHub site). I did just enough attempts at coloring directly with the laser (steel, brass, titanium) to appreciate how much calibration they did to get the amazing results they did. I found that I got different colors in different areas on the metal (corners didn’t get as hot), so I would have had to somehow adjust settings based on galvo angle. Plus, I don’t think my xTool F1 is powerful enough to do direct coloring well.

Now that I have dialed in the anodizing process, I get the same robust color whether it’s a single dot or a large patch and regardless of where it is on the metal. I’m really hoping others will try this, and I put a lot of work into documenting what I learned so others can get a jump start. I will happily share my scripts if you want to take another run at coloring metal using a different approach. :slight_smile: I am excited that you want to take the time to figure out what I’m doing, I welcome any and all questions, and I would love to help others get started doing this! I hope you check out the GitHub site (not written by AI), and if you do, please let me know if you have feedback.

To answer your question directly: I am using the same settings for all dots in each PNG. I think I’m over-ablating to get past the threshold needed to break the robust oxide layers my process produces (1.6x on individual dots, I think) which means I’m really blasting denser areas, but the dot-gain algorithm (and before I developed that, hand tweaking the separations) compensates well enough. That dog piece’s separation only got very minor tweaking; the dot gain compensation did the bulk of the work. Once an area is bare on the metal it gets the same color as any other bare spots when I do that anodization, regardless of where it is or the size of the area it is in. The color is determined by the depth of the oxide which is determined by the voltage, not by heat and all those tricky thermal issues. I have devised a way to apply the electric field uniformly every time, so I get the same color and consistent color every time. The trick is in properly separating the image into the dithered mosaic so it looks good on the metal. That part has to happen no matter how the metal gets anodized in the end or which metal it is.

I’m using titanium, not stainless. My anodizing bath is small, so I’m doing small sheets (100 mm x 100mm). I’m not sure how much bigger I can go, although I did by some 100 mm x 150 mm sheets that I’ll try at some point. Another constraint is that the F1 can’t engrave much larger than I’m already doing (150mm will go past its range). I haven’t tried it yet, but I developed the software to break a larger image across multiple sheets that I can combine after crafting them separately. I don’t know how obtrusive the seams will be. If I can find a way to get good anodized layers on larger sheets and if I get a laser that can ablate larger areas, I believe the process would then produce consistent colors regardless of size.

I found my xTool F1 has enough power to put a nice brown oxide directly on 304 stainless if I give it enough time and power. I made a fun tree (SVG from Etsy) image on a 100 mm square piece of that I embedded in the top of a box I made years ago for my Magic The Gathering stuff. Maybe you can do something fun like that with your stack of steel?

2 Likes

Inspired by this post, I decided to try making a 3d effect myself. It’s a great blue heron. It’s not nearly as cool as the other one (AI, not a photo, and I don’t think the 3d is nearly as compelling in mine), but I’m mostly pleased with how the metal recreated the source. I made the image using Nano Banana 2.

The biggest defect I see is banding in the sky (way too abrupt transition from lighter blue to darker blue where there should be a smooth gradient). I’ve seen this before but not as clear cut, and I think this one will be a good test case for me to try to address this banding challenge. I think there is some of the same effect on the bird’s neck and body, and I’ll look into why there is a light band just under the bottom edge of the frame on top.

Here are: the source, the metal prediction proof my separator script produced, and a photo of the result. I did cheat a little and hand-edited the silver and cyan layers a tiny bit to restore the green the little patch the “remove the background” feature of the separator missed.



5 Likes

When you applied the ‘Manual change/adjustment’ was it using a curve tool or sliders and was it applied globally.

Would a local adjustment/mask have kept the changed area where you intended only.

Could the changed sky area (banding) have fallen within the threshold because that area is a different/lighter shade of blue to that above it.

Super job, regardless.

1 Like

Thank you!

My “manual adjustments” involved tweaking parameters in the separator script. I have been tempted to do local adjustments, but I am trying to avoid labor-intensive special cases. I’m investigating the possible causes of the banding now. So far, I’ve had pretty good success finding global principles that at least mostly address the local issues.

One possible theory about the banding is that I have the wrong hues in the palette for cyan and blue, so the colorimetric engine is not dithering correctly across the boundary. But I was surprised the boundary looks so abrupt. Trying to look at it with my phone on high magnification and macro, I think I see some dithering, but the two shades are close, so it’s hard to see individual dots.

I took the crane image into gimp and applied levels. The banding in that specific area shows up at various level up to 57 levels. Here’s one I screen captured but I’m not sure how well it matches exactly.

Also a pixel dimm’s adjustment..from 0.1 to 0.12 on the x axis.

That’s a cool way to analyze the image! Thank you! I’ve never used or even seen gimp before, although I’m aware of people using it at Thayer School.

Which version of the crane image is this? I see you have the source, the photo of metal, and the proof in gimp.

The shape of the band in the sky on metal is different from this. In fact it correlates very closely with where the cyan layer ends. I went down a rabbit hole for the past couple of days investigating this and running tests. I think it has to do with over-ablating cyan so it actually produces enough heat oxide to affect the final voltage anodizing color. The sneaky part was the effect actually caused anodizing blue where cyan had been ablated to match the normal cyan color again. So it looked like those areas of blue weren’t ablating. Go figure!

I’m making a sheet to test a bunch of ablation settings for the lower voltage layers (silver and cyan), and I already have a new feature in the separator script to segregate dots in cyan and blue layers that happen to be over silver and cyan so I can run them using lower ablation settings. We’ll see if it works, and once I have this resolved I’ll report back.

Off the top of my head, it was not the finished job, and probably not the image with deep blue at top edge. I think the one I did was the lighter blue sky…as it might reveal the banding more subtly hidden. It appeared at many levels and I tried to find a close match to where it appears in your final job outcome.

The pixel dimm’s is cool, but be aware of overall image change…a good ai generator could surely deal with that.

I went down a rabbit hole for a couple of weeks investigating the bands in the heron’s sky, exploring dead ends, trying things that didn’t work (many calibration test sheets), and otherwise having many adventures. Part way through, I realized that the lighter blue tracked exactly where there was originally cyan where the layers called for ablating blue (would have seen this sooner, but I was mistakenly looking at the PNGs that report where dots are supposed to end up in the end, not the PNGs that specify where to ablate). This led to the conclusion that the “blue anodizing to cyan instead of blue” effect had something to do with the fact that those areas had been cyan previously. I had noticed that there was a slight brownish tinge in those areas, and that suddenly seemed much more relevant.

I thought that perhaps I was using too much energy to ablate which was causing residue. Lowering power (shorter duration and/or lower power) didn’t fix it, and many settings didn’t ablate at all because there’s a pronounced threshold effect.

So then I thought maybe I was using too little power. Higher power didn’t help either.

After extensive test sheets, I am mostly convinced that there is no sweet spot that properly ablates cyan in preparation for anodizing blue, and this seems to also be true for ablating silver in preparation for anodizing blue. My working theory is:

  • The silver and cyan layers have oxide’s strong effect of having a "hreshold below which no ablation happens.
  • They are thin so they absorb less energy once the threshold is exceeded.
  • Absorbing less energy from the ablation and having enough energy exceed the threshold results in the metal heating enough to react with the air which leaves the brownish tinge.

I assumed the layer was oxide produced by the heat. I was puzzled how having a start on the oxide layer could end up making a different color than bare metal. I’ve learned that hysteresis effects happen from just about anything, but the impact of the brownish tinge was pretty extreme (the equivalent of 29 volts instead of 23 volts). Why didn’t the oxide stop forming roughly when the new layer grew on top of the brownish oxide so the two were at the blue thickness would would have the resistance needed to counter the 23 volts that anodizes blue? It instead went to the depth caused by 29 volts that produces cyan.

I experimented with directly coloring titanium both titanium and 304 stainless with the F1 (was surprised how well that worked on my first attempt doing small squares which I now realize are the easiest shape to color). I was surprised that the best colors resulted from using the blue laser. I’m intrigued by that approach and may see what kinds of images I can produce with direct laser heating (like Povilas has done so well). I might even try anodizing a relatively thin layer (probably blue) and seeing if I can increase the oxide depth by heating the anodized layer in selected areas. I would love to be able to develop a technique people could use to make color images using my separator by directly heating the metal instead of having to set up the anodizing stuff just to get their first image. But there are many possible ways this could have challenges. One I’m sure will arise is that temperature on the metal will be affected by the density of the dots which dithering inevitable varies. And 100mm width means the metal will have time to cool before the laser gets back to any given area. This could be another fun puzzle but for now at least I want to make some more actual images.

I had lots more brainstorming conversations with both Gemini and Claude, and eventually one of them suggested that the brownish tinge might be something other than oxide. It informed me that if the metal gets hot enough in air, nitrogen can also react. It said that if nitrogen was reacting, it was probably forming titanium oxy nitride. It might also be titanium nitride (which makes some drill bits yellow), but that requires higher temperatures and the oxygen present in the air would most likely also react). Importantly, it told me that I could determine if nitrogen was involved by measuring the layer’s resistance. Titanium oxide has high resistance, oxy nitride or nitride have low resistance. So I got out my multimeter and carefully measured resistances (gently because I didn’t want to get low resistance because I scratched through the layer). I consistently got low resistance in the brownish areas and high resistance in the oxide layers.

At that point, I realized that the low resistance areas would anodize the full thickness brown voltage oxide on top of them. Both AIs agreed that this thicker combination would likely have similar optical properties to a pure oxide layer of the same thickness. If the oxy nitride layer’s thickness was roughly the difference in thickness between blue and cyan oxide layers, that would explain the mysterious “anodizing blue makes cyan” behavior I observed.

I had already made a feature for the separator that segregates the “blue over cyan” dots into a separate PNG so I could try ablating them with different settings. I realized I could ablate the two regimes of blue (areas not over cyan and areas over cyan) separately and anodize them separately at different voltages. I would anodize the not over cyan region at the normal voltage and then anodize the over cyan region at a lower voltage to grow the oxide just enough to make the combination match the blue thickness. I tried this, starting at a deliberately too low voltage (got brown at first) and increasing voltage until the boundary between the blue and blue on cyan was minimized. I think I overshot the voltage a little, and the presence of the brown seems to have affected the hue a little, but the result was a big improvement.

Here’s the result:

This investigation took a lot of time away from actually making new art, but it was a fun puzzle, I learned a lot, and I’m feeling good about eventually being able to make a prediction and see it work.

I haven’t tried it yet, but I bought “wine preserver” argon gas and plan to build a frame to hold it on the sheet (argon is denser than air, so it should stay put ok) while I ablate the silver and cyan before anodizing blue. Argon is an inert noble gas that won’t react with the Ti no matter how hot it gets, so this should prevent formation of oxide, nitride, and oxy nitride, leaving nice bare metal for the blue 23 volts to anodize consistently regardless of what colors were under it. The argon is expensive ($18 for a can that AI estimates is enough to fill the frame 6 times), but I can get it for much less per volume if I get a larger amount sold in volume for welding. And I only need it for blue when it’s dithered with cyan and (I think) silver and maybe for purple dithered with those colors and blue. Fortunately, brown anodizes well over those colors even though it’s an even lower voltage than blue and purple. I’m not sure why, but I’m grateful. Brown dithering well with all colors is lucky because it gets dithered a lot on pretty much every piece. And I don’t use purple much because it doesn’t seem to be picked by the separator much.

1 Like

Hey Mark

Very interesting and a lot to consider. If I focus on the basics of what I see, there is a noticeable difference in the last example, the dither looks larger and there is a Halo effect right across the image in the blue area we’re discussing (except at the far left…where it looks natural enough). Are you employing a Feathering technique where cloud meets blue sky and the neck of the bird.

Have you considered isolating the blue sky and using a Graded colour ’ Colour grading tool’ from top to bottom or visa versa to achieve a natural transition from blue to light-blue that works without comming near the value where banding begins (that is to say, Use the tones from the bottom of sky area up to just before the banding range starts…and stretch that all the way to the top, eliminating the banding values.

That could also lead you back to another banding situation…but it might indicate a mechanical limit that may be best dealt with artistically, by that I mean Produce a pleasing result rather than a true rendition…for the sake of return on investment.

The purging of air from the surface is interesting for experimental value, Could you begin by layering through a sheet of glass to minimise the air.

Nearly forgot, did a quick job on slate 120mm/Height yesterday…Two burns 50% power on second burn as the first was too contrasty. Needs work but on a larger scale it would be pleasing enough I’d say.

Now that blue and cyan are actually two different colors, the dithering worked in the area below the pure blue area. That’s probably why it looks bigger. I think the halo you’re seeing is probably the border where the cyan ended. Since I overshot the voltage a little, it’s still lighter in the “previously cyan” area.

I think the simple way to address this is to avoid expanses of blue sky and/or not have gradient in the sky. I like the idea of adding more clouds/trees, etc. Then if banding occurs, it will be camoflauged in the other stuff like it is in the clouds to the left. And your suggestion could work too. Maybe tell the separator something like “if you notice a large expanse of nearly the same blue, just pick the color that is closest and use it solid across that whole area”.

I like your idea of covering the argon, but I think the laser might actually engrave the glass, and I would have to recalibrate to account for the loss of power from reflection off the glass and transmission through the glass.

That burn on slate looks awesome! I think it’s already excellent. :slight_smile: I especially like how effective the gray scale is, including very convincing wood grain and clouds. Great work!

I’m really enjoying seeing how images can work on different mediums. :+1:

I’m pretty sure you could focus on the material that is below the glass and that’s where the energy will be delivered. There have been many discussions about this but I’m lacking any details on reflection…and what other effects may occur using your method. When I was learning about my vacuum chamber for use in coffee extraction I discovered that it’s pretty hard to purge the air from the metal chamber wall surface (titaniumis probably a high grade finish), and it makes me wonder (a) how effective would flooding a container with Argon be at replacing the air. (b) does the method require a certain amount of air to form the oxide layer.

Regarding the sky area, If I can speak as a viewer of this work as opposed to a creator, I think as long as it looks good nobody would question it. I’ve seen some quality work of that type here on LB and most of it was made up of well defined areas with contrasting saturated colours..as I remember.

I started photographing in a slightly different way today as the IR method didn’t seem to be working as I thought it would. I got a circular polarising lense for the full frame dslr and started shooting closeups and importing to image software where I applied settings generally used for IR and b/w. It’s much closer to what I’m aiming for and will try to laser an eg tomorrow. As I was working with the colour levels this evening I noticed there is a Cyan specific adjustment and I was wondering what would happen if the cyan in your image (sky area) was removed from the RGB and the blue was enhanced, and then graded. I might see what that does tomorrow.

I posted a halloween-themed piece in another thread.

Your glass idea makes me think I should probably at least cover the argon frame in-between using it. Argon is heavier than air, so it should tend to stay in the frame, but I don’t know how fast brownian motion will dissipate it if it’s open to the air on top.

I agree that in the end what matters is how the blue looks, not whether it adheres to the source image or not. I especially feel this way when it’s an AI-generated source image.

I’m glad you’re getting closer to what you’re aiming for with your photography! I’m looking forward to seeing your example when it’s ready. As you experiment, remember that sometimes unexpected results can be productive too. Kevlar resulted from a “failed” attempt to make a new insulating material.

Amazing work !!!

I tried ablating through argon to see if it would make the “blue over cyan” areas actually anodize to blue. It didn’t work. Those areas where the blue layer ablated cyan anodized differently than areas right next to them where blue ablated green. The “blue over green” areas anodized to blue while the “blue over cyan” areas anodized to cyan in the same dunk. The effect was just the same as when I anodized in air. I’m actually mildly relieved because working with the argon was a pain and was going to require some pretty involved engineering to get right.

I’m now confident that the residue left from the cyan ablation isn’t nitride or oxy nitride. The argon displaced the air, so there was no nitrogen available to react with the hot metal. This understanding is progress even though using argon didn’t become a solution.

My current theory is that the leftover heat after ablating the cyan is annealing the titanium surface. If the annealed surface is smoother than the not-annealed surface where the thicker green layer absorbed enough energy to avoid heating to the annealing point, this would explain why it behaves differently to the same anodizing voltage dunk. I’ve experimented with sanding the titanium to 400p grit before anodizing, and I noticed that this dramatically lowers the voltages required to achieve colors. For example, a 91v dunk that normally makes green produces a weak pink that I normally don’t see until 110v or 115v when the surface has my normal “roughen the 400p surface with the laser” treatment. So maybe the metal isn’t getting hot enough to make significant oxide but is getting hot enough to anneal a bit.

After three weeks down this rabbit hole, I’m going to leave it for a while. I have workarounds:

  1. Ablate the “blue over cyan” areas separately and after the regular blue dunk so I can dunk at a lower than blue voltage and gradually increase the voltage until the “blue over cyan” is as close to blue as possible, and
  2. Avoid having large regions with cyan to blue smooth gradient.

And I’m working to buy a MOPA laser which may give me ablation settings option that can ablate cyan without leaving that “anodizes to cyan” effect on blue.

Do you think the sanding to 400p increased the surface area and thereby the quantity N bonding to surface.

Did you discover any more about the possibility of not having to move the material if using MOPA.

I think a smoother surface has decreased surface area. It’s like how a flat plain has less surface aread than a mountain range. I don’t know why texture makes such a big difference in anodizing voltages. When I discovered this, I was trying a smoother surface because it’s supposed to result in shinier oxides, but then I realized that ablating would make a different surface, so I run the laser on the bare metal with ablation-like settings so the first dunk has similar conditions to the dunks after ablation.

I have an elaborate concept for coloring with MOPA. If it works, I could put a prepped sheet in the laser, run a python script once, wait for the script and laser to finish, and have a completed piece waiting for me. So there would be no removal of the material in that scenario. There are many ways this plan could end up needing changes, might not work well, or might not work at all. But a good part of the fun is in the trying, and I will model your cadre’s “try stuff” and learn from the failures approach. :slight_smile:

Ah, I thought you were roughing the surface rather than smoothing it. As you were saying, the argon reduces the N available for oxidising. What would happen if extra N were fed into the Air-Assist during the process.

I also tried something elaborate yesterday by reducing an image to 202 separate tone files. It took a while for the laptop to process but it did do it but then got lost in the hard-drive and laptop battery was just about to quit so I’ll do it again but try to optimise the image and batch the file count.

Nitride and oxy nitride are undesirable for making titanium oxide, but I did notice some of my “coloring titanium with heat” attempts had a nice shiny gold color in the IR grid. Maybe adding nitrogen during a coloring run like that would enhance the gold color?

202 separate tone files is a lot! I like how you’re pushing into new realms to see what you may find. :+1: Do you have something specific in mind for all those files?