compilerbitch: That's me, that is! (Default)
[personal profile] compilerbitch

From SarahWiki

For some time now, I've been using an Epson R2400 to produce fine-art monochrome prints, with results ranging from sadly lacking to outstanding. The problem has been consistency -- though in colour mode, I've had good results using the standard profiles, in advanced Monochrome mode, the closed loop between what's shown on the screen and what ends up on paper is broken. Generally speaking, my prints always ended up way too dark, so I'd end up creating gamma curves manually in Photoshop, looking something like this:


Image:Gammacurve.png

Simple adjustment curve -- not really good enough


With a few manual tweaks and iterations, I could generally manage to get a decent print, but it was a frustrating and annoying process. It was particularly disheartening to get something that really sings on the screen and just never quite manage to translate it into a print.

This is something that has been bothering me for quite some time now, though until now I've not really been able to come up with an adequate solution.

The problem

Put simply, the problem is that the curve that maps image information to the brightness of pixels on the monitor isn't sufficiently similar to the curve that maps that same information to ink on the paper. I knew I wasn't going to be able to attack this conventionally and still be able to use the Epson's Advanced B&W mode, so I decided to come up with an engineer's hack.

The conventional way to address this is to have a monitor profile that maps from the image's colour space to the monitor's colour space, and a printer profile that does the same thing in the printer world. A bit of maths, and you end up with a glued-together transform inside Photoshop that results in the correct colours on the page. My hack is basically to leave all of that machinery alone, let it do its thing, then come up with a way to map the errors in such a way that this could be used to fix the problem.

My first thought was to write some fancy software, and maybe even to build my own screen/print densitometer from scratch, but happily I figured out an easier, if slightly laborious, way to do it.

The solution

The first step was to make a grey scale ramp that covered the full 0-255 range in steps of 1. I actually created this with about 50 lines of Java code, but there's no reason other than impatience that's why I couldn't (far more laboriously) have constructed it in Photoshop or Illustrator directly.


Image:Bwtarget-small.png

Monochrome ramp target


(The full-resolution version can be downloaded here, should you want to try this for yourself: bwtarget.png)

I then loaded this into Photoshop, and made a letter-size print on my usual Epson Premium Glossy with all my usual driver settings. Next, I fired up my Bronica/Megavision camera and photographed the target image, being careful to make sure that the lighting was uniform and that no reflections were noticeable. I had to set the camera's contrast as low as it would go with full bit depth, but I managed to find an exposure that accommodated the full-black and the full-white squares without clipping. Keeping exactly the same camera settings (varying only aperture), I photographed the same target on the screen, opened in Photoshop.


Image:Print-test.jpg

Image:Screen-test.jpg

Test images


These are the images I got -- you can tell I didn't put a tremendous amount of effort into it, other than being careful to avoid reflections (hence the slight angle on the print). Using the Photoshop crop tool in perspective mode soon yielded a couple of usable versions:


Image:Print-test-cropped.jpg

Image:Screen-test-cropped.jpg

Cropped versions


At this stage, comparisons between these results aren't really valid, because the white and black levels aren't lined up. We need, in effect, to do the by-hand equivalent of a relative colorimetric mapping, so the best place to start is to extend the range of both of those images by applying levels layers:


Image:Print-test-levels.jpg

Image:Screen-test-levels.jpg

Levels-adjusted versions


The levels settings were carefully tweaked to leave the top-left full-black square at or very close to 0, and the bottom-right full-white square at or very close to 255, but without clipping. It's essential to get this right. From the above, it's clear that there isn't a huge difference between the images, but the print target is definitely noticeably darker.

OK, here comes the stunt. You now need to pull all of this into a single photoshop file, ideally using adjustment layers, looking something like this:


Image:Docstructure.png

Structure of Photoshop file


I've grouped everything relevant to the print images into one folder, and everything relevant to screen images into the other. Having the print images at the top is important. The levels laters you can see are the ones created that were mentioned above. In the print folder, and extra curves layer has been created -- we'll come back to that shortly. The directory containing the print files has been given a layer mask -- basically, this is just a series of vertical stripes, making it possible to look at both targets at once, butted up against each other, so you can visually get an idea of how they differ. You should end up with something like this:


Image:Blinds-unadjusted.jpg

Unadjusted 'vertical blinds' image


It's now immediately visually clear that the two ramps don't match exactly. In some places they are pretty close, but in other places they are way off.

Now, we go back to the curves layer created in the print folder -- the trick here is to manually tweak it as accurately as you can, trying to get the two ramps to line up so that you can't see the changes in tone. I ended up with a curve like this:


Image:Correction-curve.png

Correction curve


which gave me a somewhat better match between the ramps:


Image:Blinds-adjusted.jpg

Unadjusted 'vertical blinds' image


Notice that there are still a couple of areas that aren't perfect -- it's possible to go a bit too far with tweaking, generally if you find you're creating too big a spike in the curve it's probably due to some artefact of the test images -- in my case I think I still had a small reflection in the black area, so I chose to let this be and kept the curve smoother there.

It was a lot of work, but we've now got a curve that you can save (hit the 'Save...' button in the Curves box) and apply to pretty much any image. The way to use it is very simple: keep it turned off while you are working on the image on screen, then turn it on immediately before printing the image.

Getting a bit fancier

The method described so far certainly works very well, and I've had a few very nice prints from it so far. Being a bit of a glutton for punishment, I wanted to take this a bit further so I could create a proper transfer curve that I could type into Photoshop and thereby not have to deal with an annoying extra curves layer. Doing this is straightforward, but a little laborious. Start by opening the curves box for the adjustment curve. You'll probably want to make the box big (click the icon in the bottom right corner if you have the small version displayed). You'll also need to set the grid to 10x10, rather than the default 4x4 -- to do this, hold down Alt (or its Mac equivalent) and click once in the grid area.

Next, you need to start taking down some numbers by carefully measuring the curve. The idea is to measure the height of the curve at each 10% horizontal interval -- to do this, start with the first grid line on the left and hover the mouse over the exact pixel where the curve crosses the grid line. The Input and Output readings should track the movements of the cursor -- if they don't, close and reopen the curves box and try again. Write down the number shown for output for each grid line, e.g.

Grid Line     Output
0 0
1 17
2 52
3 90
4 115
5 134
6 160
7 185
8 218
9 237
10 255

Turning this into a set of numbers that you can type into the transfer curve box in the print dialogue is a little laborious. There are two problems -- the numbers here have a 0-255 range, whereas we actually need a 0-100 range. Also, we have numbers that increase with brightness, whereas we actually need numbers that increase with the amount of ink (i.e. that decrease with brightness). Doing this is easy enough. First, divide by 2.55 to get to the 0-100 range, then subtract this result from 100 to get the ink level. This now gives something that can be typed in directly:

From     To
100% 100%
90% 93.4%
80% 79.6%
70% 64.7%
60% 54.9%
50% 47.5%
40% 37.3%
30% 27.5%
20% 14.5%
10% 7.7%
0% 255

Note that the 'from' percentages are in reverse order, because they are based on ink density not brightness.

Once you've created the curve, save it, because Photoshop will zero it out if you change the print settings significantly so you'll need to be able to reload it later. Comparing prints made with this technique to those made by the (ostensibly slightly more accurate) adjustment curve layer shows them to be extremely similar -- if anything, I prefer the transfer curve results, perhaps because the inherent smoothing out of the transfer curve looks somewhat more pleasing even though it might be slightly less accurate.

Conclusions

Using this technique, I seem to (at long last) be able to go from an on-screen visualisation of an image to a print that basically retains the same tonal quality quite repeatably. Of course, no print ever looks exactly the same as its on-screen equivalent, but the important thing to take away from this is that if I can get something to really 'pop', glow, look three dimensional, whatever I'm trying to achieve on screen, really, this technique greatly increases the chance that a print will possess the same qualities.

(no subject)

Date: 2007-05-28 11:18 am (UTC)
From: [identity profile] fg.livejournal.com
that's really, really, really cool.

the only step i wonder about is taking a picture of the printout indoors. i don't know anything about the logic inside digital cameras, but do they adjust for brightness/contrast? if they only adjust linearly, you're fine, but if they have a levels curve that can change shape, then you'll have problems.

maybe if you take pictures in raw format?

(no subject)

Date: 2007-05-28 11:33 am (UTC)
From: [identity profile] fg.livejournal.com
oh whoops, i missed the step where you take a picture of the screen! i get it now.

(no subject)

Date: 2007-05-28 04:12 pm (UTC)
From: [identity profile] compilerbitch.livejournal.com
You are absolutely right -- you do indeed need to make sure the camera treats both shots exactly the same. It doesn't actually matter exactly how it renders each one, so long as there are no differences from one to the other. Any camera that can shoot RAW is probably fine, if it has enough dynamic range to capture the whole target (this is a bit tricky on the print actually). I used the Megavision back on my medium format camera which if you turn the contrast down to minimum and set no brightness adjustment basically just gives you the data from the image sensor exactly as-is, no interpolation or anything, which is ideal for this purpose. I probably wouldn't have been able to do it with a jpeg-only digital compact, but most current low to medium end DSLRs or higher end compacts would probably work fine.

(no subject)

Date: 2007-05-28 04:23 pm (UTC)
From: [identity profile] dd-b.livejournal.com
When I was doing quadtone B&W printing from Photoshop 5 and 5.5, there was a "transfer curve" you could apply during the printing process, which I had set up to do this at pretty much the same 10 points...no, 11, fencepost. Anyway. That function seems to be gone, though, so adding an extra layer instead is nice approach. I love adjustment layers!

I was using a scanner as data source, equating max and min black, and then linearizing inside that range, mostly, and that was working quite well for what I wanted.

(no subject)

Date: 2007-05-28 05:03 pm (UTC)
From: [identity profile] compilerbitch.livejournal.com
Actually, the feature is still there, it's just a bit difficult to find. You need to go to 'Print with Preview', click 'More Options' (if you haven't already), select 'Output' from the box that you probably normally have displaying 'Colour Management', then click the Transfer... button and you have exactly that transfer curve facility (that I explained how to generate the numbers for above.)

(no subject)

Date: 2007-05-28 05:05 pm (UTC)
From: [identity profile] dd-b.livejournal.com
Ah, buried under there, I should have looked there, I know how complicated the print-with-preview dialog box is. Well, I've still got my "profile" transfer curves, but the Epson 1160 has paper-handling problems and must have a clogged head by now. I'm mostly out of B&W until I get a 2400 or something.

(no subject)

Date: 2007-05-28 05:15 pm (UTC)
From: [identity profile] compilerbitch.livejournal.com
I probably wouldn't have recommended an R2400 for B&W until I figured this trick out, but now that it's there, I am very happy with the results (and I'm about as picky as you can get!)

Though my gear is quite nontraditional, I do have quite a traditionalist approach to the presentation of my images -- I like glossy prints with deep blacks, neutral tones, lots of sharpness, good contrast, etc. The R2400 with Epson Premium Glossy paper is quite remarkably good, actually -- my current results are way better than anything I ever managed in a wet darkroom. It's been a lot of work to get that far, of course, but I think it's worth it!

(no subject)

Date: 2007-05-28 05:09 pm (UTC)
From: [identity profile] compilerbitch.livejournal.com
My main reason for doing this was frustration, really. I'd had some success using Quadtone RIP to get past the 'everything is too dark' issue, but in general I think its output is significantly inferior to that of the native Epson drivers if you have a very high resolution original (which most of mine are). Prints made with the native driver really do look *much* sharper, and I prefer their tonality too. Solving the linearisation problem basically has given me the best of both worlds, so I'm now much happier with my R2400 than I was.

(no subject)

Date: 2007-05-29 05:02 pm (UTC)
From: [identity profile] nwhitehe.livejournal.com
Another random data point: on my monitor setup, I've thought the black & white pictures you've posted have been too dark. My setup is an LCD adjusted for accurate color using Apple's color preferences wizard thingy. (Well, "accurate" for an LCD). There might be an actual gamma incompatibility somewhere in the processing pipeline.

(no subject)

Date: 2007-05-29 08:48 pm (UTC)
From: [identity profile] philipstorry.livejournal.com
Oooh. Just in time, as I have a new PC arriving soon. I could use this to do some quick checking of my calibration - thanks!

(no subject)

Date: 2007-05-30 04:29 pm (UTC)
From: [identity profile] midendian.livejournal.com
Cute hack! :)

(no subject)

Date: 2007-06-13 02:59 am (UTC)
From: [identity profile] x-mass.livejournal.com
mentioning your cool HDR stuff do you know of sunnybrook technology http://www.techfinance.ca/m-news_releases+newsrel+relid-5.html they changed their names to brightside http://www.hardwaresecrets.com/article/208/1 but have just been bought by dolby http://www.dolby.com/promo/hdr/ who presumably plan to licence the tech to others

I was just wondering if your ideas overlap the patents held originally by whitehead/University of British Columbia http://www.physics.ubc.ca/ssp/ssp_impact.htm.
http://66.102.9.104/search?q=cache:xnkBYCv1yGsJ:www.brightsidexdr.com/people.php+Dr.+Lorne+Whitehead+hdr&hl=en&ct=clnk&cd=2&client=firefox-a


just thought you might be interested

Profile

compilerbitch: That's me, that is! (Default)
compilerbitch

January 2016

S M T W T F S
     12
3 45 6789
10111213 141516
17181920212223
24 252627282930
31      
Page generated Oct. 16th, 2025 06:18 pm

Style Credit

Expand Cut Tags

No cut tags