Intro: Ember Printer: Enhancing Horizontal Resolution
A previous Instructable showed how to measure the horizontal resolution of Ember 3D prints. That resolution is ultimately limited by the size and spacing of the mirrors in Ember's DMD and the filtering applied to the image of each slice to convert them to the DMD's diamond pixel array. The focus of the projected slice images, the properties of the resin, and the settings (e.g. exposure) that control the printing process may further limit resolution. While the number of distinct line pairs per mm that can be printed cannot be increased beyond these fundamental limits, it is possible to represent some features with greater detail than these limits might otherwise suggest.
In the field of lithography, e.g. for semiconductor manufacturing, a variety of such resolution enhancement techniques are used. One of the most well known is Optical Proximity Correction (OPC). In this Instructable we'll see how OPC may be used to improve the fidelity with which fine details may be printed. While printed text is used as an example here, the same technique could be applied in any case where it was desired to make the corners of printed objects sharper.
Step 1: Optical Proximity Correction (OPC)
The image above left (in blue) shows how an L-shaped lithographic mask (top) leads to a printed image (bottom) in which the corners are rounder and the lines are shorter than in the mask, due to optical proximity effects. On the right (in green) it shows how adding "serifs" and cutouts to correct the mask leads to a printed image that better represents the original desired shape. Thus OPC provides a way to compensate for errors introduced in the lithographic process, regardless of their specific causes.
While OPC may be applied manually, as in this Instructable, there are also algorithms that may be used to automate the correction process. See Fast Optical and Process Proximity Correction Algorithms for Integrated Circuit Manufacturing, for a good discussion of those techniques.
Step 2: Example Print
In order to try out OPC, a simple example print was composed of embossed text on a flat base. A 1280x800 PNG (above) was created in Microsoft Paint, using white text on a black background. The word "EXPERIMENTALLY" (which contains a wide variety of letterforms), was placed using three sizes of the Arial font: 10, 14, and 20 points. Two copies of the word were placed for each attempt at correction, with an uncorrected original kept for comparison just above the corrected version.
For OPC, white pixels were drawn next to each outside corner of each letterform and black pixels were drawn on the letterform itself at its inside corners. In order to provide room for those OPC "serifs", the spacing between many of the letters had to be increased. Thus the enhanced detail in printed features provided by OPC can actually reduce the density with which features may be packed together in a print.
The image above was mirrored (to put the printed text in the right direction) and 8 copies of it were added to the same 60 base slices as in the previous Instructable. The same print settings were also archived together with those slice images to make the print data file attached here. Since the layer thickness is 0.025 mm, the printed text should have a height of 0.2 mm.
The 10-point text did not print completely, and little improvement was seen for the 20-point text (for which 3 different attempts at manual OPC are included). However, significant improvement was seen in the 14-point text (at lower left in the image above), whose characters are made of 3-pixel wide lines.
Step 3: Results
The effects of OPC on the 14-point text can be seen in these magnified images of the print. Each one shows the uncorrected text above the corrected text. The first one also shows the corresponding magnified portion of the source image. Even at the lowest magnification, it can be seen that many of the outside and inside corners are sharper when OPC is used.
The extrapolation of this technique to three dimensions is left as an exercise for the reader.