Pages: 1 ... 8 9 [10]   Go Down

Author Topic: New Approach for Generating Optimal Profile Patch Sets  (Read 21845 times)

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #180 on: April 06, 2019, 10:11:43 pm »

Suggests some weird stuff going on in I1Profiler. Almost like some matrixes that were being inverted for curve fitting had near singular Eigenvalues.
Any sort of curve fitting seems to have that sort of risk. I found that regularly spaced samples seems to exacerbate such issues - more stochastically spaced ones seemed less prone to such problems.
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #181 on: April 07, 2019, 01:02:32 am »

Any sort of curve fitting seems to have that sort of risk. I found that regularly spaced samples seems to exacerbate such issues - more stochastically spaced ones seemed less prone to such problems.

I haven't seen this on the packed grids. I'm actually rather astonished at how regular all the patch samples come out looking at just the average of the 8, equidistant LAB values compared to the centers. A simple bilinear interpolation should be sufficient and almost always stable. However, the problem came up when I created RGBLAB sets along the neutral axis for making ABW profiles with I1Profiler. Some of these exhibit wild variations.

Interestingly, and to my surprise. When these large excursions occurred, it was not in the AtoB tables. They retained accuracy to well under .05 dE. It was the BtoA tables that were toasted over 10 dE. And well within gamut and not anywhere near the boundaries.

One obvious conclusion is that the RGB<->LAB interpolation is done independently for the two tables and with no cross checking.

I'm going to try adding noise to the added samples. May help the math.

One nice side effect of independent interpolation of the tables is that it makes it easy to cross check profiles by running a very large RGB dataset through AtoB (save the Lab) then ->BtoA->AtoB (save Lab2) and check the variations.


EtoA: For those curious about what causes this without the tech jargon, finding the 3DLUT values involves having some metric that looks at all the nearby data (patch RGB and Lab values) to find an estimate of the values at another point on the 3DLUT grids. Sometimes, there are points within the collection that, varied together in certain ways, produce virtually no change. When this happens, it's called a singularity and the math explodes. It may seem odd that something that has essentially no impact explodes the math but it's because the variables have almost no effect on the accuracy so the math explodes as it tries to make them work. The solid solution is to find and remove these values when they have negligible effect then the math works well with little error on the remaining variables. This process is done with something called Singular_value_decomposition and it's very effective but rather CPU intensive.
« Last Edit: April 07, 2019, 11:11:47 am by Doug Gray »
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #182 on: April 07, 2019, 06:05:48 pm »

I'm retracting my warning. The problem I saw with the really wild errors was a result of poor synthesis of "color" patches used to fool I1Profiler into making a "color" profile that is excellent for ABW printing. While there is some applicability to the charts generated by ICCProfilePatches.exe it's confined to really small RGB color sets along with large numbers of neutrals and is negligible with charts sizes over where the color patches are over 200.

So now to port the MATLAB B&W code to C++ and finish this thing. I will eventually post the code and exe to GitHub where it won't get stripped when the servers here run out of room and delete attachments.
Logged

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #183 on: April 08, 2019, 02:27:58 am »

I'm retracting my warning. The problem I saw with the really wild errors was a result of poor synthesis of "color" patches used to fool I1Profiler into making a "color" profile that is excellent for ABW printing.
Hmm. Were you doing something like creating an RGB profile with patches only along the neutral axis ?
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #184 on: April 08, 2019, 10:51:19 am »

Hmm. Were you doing something like creating an RGB profile with patches only along the neutral axis ?

No, of course that doesn't work. What I had done was use measured neutrals from ABW along with synthetic "color" patches to fill out the gamut. The problem was that the synthetic patches L* were significantly out compared to the synthetic "color" patches. Errors increased as that divergence increased and eventually exploded. Really an error on my part. I have since aligned the L*'s of the synthetics with the measured ABW L*. And that works very well. This makes excellent ABW profiles. Goal was to make profiles that produce accurate mapping so, for instance, a ABW print on one printer/paper matches that of another printer/paper.  Within gamut limits much like a regular color profile.
Logged

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #185 on: April 08, 2019, 06:55:51 pm »

This makes excellent ABW profiles.
So I gather that nothing in the workflow is insisting that ABW profiles be monochrome profiles ?

Would it even cope with monochrome profiles ?

(i.e. is the Epson printer being sent RGB data and converting to monochrome ?)
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #186 on: April 08, 2019, 07:17:58 pm »

So I gather that nothing in the workflow is insisting that ABW profiles be monochrome profiles ?

Would it even cope with monochrome profiles ?

(i.e. is the Epson printer being sent RGB data and converting to monochrome ?)
I1Profiler, or Argyll's colprof, would just see the patch set as another RGB/Lab dataset and make a profile. It is a "color" profile in that the only measured values are the monochrome ones from the ABW mode print. Color patches are synthesized to align with the monochrome L*s. As such, it is not designed to convert a color image to B&W when printing. Conversion to B&W must be done first. Soft proofing accurately shows the tone curve for Perc. Rel. and Abs. Col. but does not show paper/ink tint colors. It always shows as neutrals. They are, after all, not something one can edit in a B&W image but something set with sliders in the driver (where available)

Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #187 on: April 09, 2019, 01:19:52 am »

I have ported the ABW work to C++ and here's my ABW profile printing results.

Neutral patches were made from L*=0 to 100 in steps of 1 and printed in a 16 bit tifs. 9 duplicates of the 101 patches were made and scrambled to reduce printer position variation which can be quite large and create slightly ragged steps.

The tif file was printed using standard color management selecting the ABW profile created with I1Profiler and my C++ program. The results printing in Perceptual Intent and Abs. Col. Intent are shown in the attached Matlab plot.

Average dE00 was .33 and would have been lower but I didn't follow my usual sequence of printing an initial page then tossing it.

Still, the very smooth performance of ABW is very evident and cleaner than I can get using color printing. The Abs. has nice ending plateaus at L*=3 and L*=95 which is the paper's black ink point and white point respectively.

The Perc. plot goes smoothly from end to end intercepting the black and white points. Rel. Col. with BPC (not plotted) would produce a very straight line from end to end.

Logged

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #188 on: April 09, 2019, 01:51:17 am »

I1Profiler, or Argyll's colprof, would just see the patch set as another RGB/Lab dataset and make a profile.
Sorry, that's not what I was asking. I was wondering if Epson's driver in AWB mode expects monochrome ICC profiles (i.e. ICC profiles with one device channel).  [ Assuming of course that Epson's driver in AWB has a slot for ICC profiles. ]
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #189 on: April 09, 2019, 01:59:38 am »

Sorry, that's not what I was asking. I was wondering if Epson's driver in AWB mode expects monochrome ICC profiles (i.e. ICC profiles with one device channel).  [ Assuming of course that Epson's driver in AWB has a slot for ICC profiles. ]
Epson, and other drivers will convert RGB values that are not equal to B&W. Probably with some standard algo weighting the RGBs. I'm not aware of any documentation on it.  Since this profile is designed for B%W images all the values exiting the CME will be within about 1 bit from each other and are usually the same. Thus whatever the driver does mapping different RGB levels to B&W doesn't affect anything.
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #190 on: May 05, 2019, 06:55:32 pm »

I have substantially improved the controls for evaluating profiles.

The primary conclusion is that the Packed RGB approach provides much less value than I had expected. The differences between just a straight linear RGB set and packed linear sets of similar sizes are very small. However, what has shown up in spades is that getting good performance on near neutrals is very dependent on the patch set and benefits from larger, near neutral patch sets. Further the tracked profiles, where an initial profile is made with a larger number of neutrals (100 to 250), then a set of patches with tracking neutrals and standard set of color patches, produces the best result with excellent accuracy on both color and near neutrals.

I no longer generate a patch set. Print it. Then validate it by printing known colors. This is inadequate as the printer variation overcomes differences in patch size effectiveness once the overall size exceeds about 1000 patches. This is what I have done to effectively eliminate the page variation that has obscured earlier results.

To compare various patch sets, I concatenate them so I have all the different sets I wish to compare. Then I randomize them so that each patch set is distributed over all the printed pages. Thus, any differences due to warm up, or printer cartridge shaking, or even paper variation are distributed.

When the pages are scanned, the results are de-randomized and each set corresponding to specific patch sets being tested is extracted and saved as a CGATs file which then is plopped into I1Profiler's measurement tab to create a profiles for that set.

Then, a similar process is done for measuring color accuracy. The basic set for this is a combination of colors, measured and extracted from an XRite ColorChecker SG but only color patches are used, the neutrals are excluded.  To test the neutrals, a set of L* values from 3 to 95, with a* and b* set to 0 is used.

For testing each profile created from the previous process, the Lab colors are then converted to device space and concatenated and randomized then printed on 1 or more pages depending on the number of profiles being tested. The scanned results are then descrambled and statistics gathered on actual measured Lab values.

While warm up, occasional ink cartridge "shaking" or other changes in the printer can and do cause changes, these effects apply to all the tested patch sets so I get good relative repeatability (around .02 on dE averages) even while seeing between .1 and .3 dE variation due from print to print.

More specifically, I can easily get an average dE of .45 to .60  from one print to another using the same profile. But using the same profile within the scrambled sets, I see that variance drop to a difference of around .02.

The main result is that I see the total patch size, not whether they are packed, as being the largest determiner of color profile accuracy and the spacing and arrangement of near neutrals the big factor for B&W or near neutral accuracy. The automatically generated patch sets I1Profiler produces are pretty good for colors. They increase the RGB spacing irregularly, for instance, increasing the spacing of one channel at a time and filling in whatever is left with near neutrals. The break points where the number of near neutrals is greatest produces the better near neutral profile performance though the dE2k of the near neutrals still exceeds that of the colors. I have various near neutral sets that produce materially better results in this region and generating tracking profiles produces better results yet with much fewer added near neutrals.

This will result in a substantial re-write of my code which gave undue advantage to packed RGB patch sets.
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #191 on: May 06, 2019, 02:52:15 pm »

One of the cool things this new approach provides is detailed evaluation of things like quantitatively evaluating exactly what improvements occur with the second pass of I1Profiler. And it's astonishingly consistent. I'm kicking myself for not thinking of it earlier. Matlab is such a useful tool for this.
Logged

rasworth

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 473
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #192 on: May 06, 2019, 03:23:23 pm »

Eagerly awaiting!

Richard Southworth
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #193 on: June 01, 2019, 01:34:16 am »

I have some good detail now on the where packed grids provide benefit, and where they don't.

Each of these ave dE00 values were from measuring a 301 patch set of dispersed, in gamut, LAB values. The same values were used for all profiles created from the different patch sets.

The packed and standard profile patch sets were all concatenated, randomized, printed and scanned then de-randomized to make CGATs files which were then used to create profiles for their patch set. These profiles were used to create device space RGB patch sets with Abs. Col. conversion. Randomized, printed, and scanned then de-randomized and statistics gathered.

For patch sizes below about 1500, packed grids produce lower deltaE 2000 results than straight linear grids, the I1Profiler default. However, the advantages are greatest at small patch counts. For instance, the packed grid 5x5x5 with an inset 4x4x4 for a total of 189 patches produced an ave. dE00 of .60 while the traditional linear grid of 6x6x6 (216 patches) was dE00 of .73

However, increasing the grid size up to about 3000 resulted in asymptotically approaching dE00 of .30 whether the patches were packed or traditional. There was no measurable difference and increasing the patch count over 6000 actually slightly increased the dE00 from .30 to .32

Turns out the 855 packed grid, 8x8x8 with an inset 7x7x7 with added near neutrals outperforms the I1Profiler 957 patch, one page iSis default on my three printers for both glossy and matte. It's not printer specific so I've added it as an attachment.

Logged

rasworth

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 473
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #194 on: June 01, 2019, 11:04:39 am »

Doug,

To verify I understand I'm summarizing:

1.  Your attached target patch set, consisting of a main 8x8x8 and packed 7x7x7 and 100 or so added near neutrals is a good (.6 avg. dE00) overall profile generating target set.

2.  Better neutral performance can be obtained using the 8x8x8/7x7x7 together with 100 tracked neutrals.

Richard Southworth
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: New Approach for Generating Optimal Profile Patch Sets
« Reply #195 on: June 01, 2019, 11:46:45 am »

Doug,

To verify I understand I'm summarizing:

1.  Your attached target patch set, consisting of a main 8x8x8 and packed 7x7x7 and 100 or so added near neutrals is a good (.6 avg. dE00) overall profile generating target set.

Yes, the target set has better performance than the I1iSis 957 patch set which fits on a single US letter size page. For my 3 printers it improves accuracy on my 3 printers by about 30% of what can be achieved by using a large number, 3000 or so, of patches. Increasing the I1Profiler patch set generator to about 1300, exclusive of near neutrals, produces roughly the same improvement. However, for day to day work with an iSis, the single page set is attractive. I posted a detailed comparison of this v the standard iSis 957 patch set as well as an extended patch set from I1Profiler using 2 pages, 1914 patches.
Quote


2.  Better neutral performance can be obtained using the 8x8x8/7x7x7 together with 100 tracked neutrals.

It generally produces better neutrals than the I1Profiler's 957 iSis patch set. but not always. Depends on the printer an paper. However, when used with tracking neutrals it is always much better on neutrals regardless of the patch set size. At least with more than a few hundred color patches. Without sufficient color patches, >100 or so,  the tracking neutrals gets squirrely.
Quote



Richard Southworth
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Packed v Conventional Patch Grids. A Comparison Using 1940 Independent Colors
« Reply #196 on: August 28, 2019, 11:58:16 pm »

Executive Summary:

Packed grids of the same size offer little advantage over conventional grids for larger patch counts over 1000 in terms of averge dEs. However, they signficantly reduce the dEs associated with the worst 20% of dEs and most especially, the worst 5%.

In particular, The average dEs of the packed grid with a count of 1729 patches is virtually identical to that of the conventional grid of 4096 patches for the worst 5% of dEs.


Detail
I return to evaluate packed v standard grid patch performance with a set of 3 packed grid patches and 3 standard grid patches using a very large (1940) set of independent color patches randomly distributed in the printer's RGB device space.

There are 3 conventional grid patch sets and 3 packed grid sets of similar sizes. They are:

Conventional: 343, 1728, and 4096 patch counts which are grids of 7x7x7, 12x12x12, and 16x16x16.

Packed:  341, 1729, 3925 patch counts which are grids of 6x6x6, 10x10x10, 13x13x13 each of which has an inset grid with the same spacing and patches centered in the cubes of its surrounding grid.

These 3 sets are close enough in patch counts to produce a good performance comparison of the two approaches.

High precision is obtained by using a very large set of patches together with the patch targets scrambled and combined into 14, 957 patch sheets. It's possible to find even tiny differences in performance as the standard deviation of the means decreases in proportion to the square root of the number of patches in a group.

Further, the large number of patches allows closer examination of the characteristics of outliers and not just total averages. When looking at outliers, like the 1% that are the worst, it's important to get enough patch samples to reduce the impact of paper/printer anomalous results which can easily produce dE's of 1 or more on exactly the same color.

Here are two chart pairs, one for Argyll created profiles and one for I1Profilers using the highest quality settings. The chart's X axis is percent of patches that are at or below the dE00 shown in the Y axis. The colors represent the patch size of charts, red for the smallest, black for the largest. Solid lines are from the packed, dashed from the conventional grids.

Each chart pair has the full range of 1% to 99% on the left, and an expanded range showing outliers 80% to 99% on the right.

A few points of note.

The packed, 341 chart shows that only about 1 in 10 printed colors exceeded .95 dE while the 343 patch conventional grid chart shows 1 in 10 exceeded 1.07 dE for I1Profiler profiles. Interestingly, the Argyll profiles showed worse performance 1.02 dE and 1.23 dE respectively.

For the large (4k) patch sets, the differences between I1Profiler and Argyll patches reversed. One in ten patches of the both the 3925 packed and 4096 conventional profile exceeded .60 dE however, for the Argyll profile 3925 packed patches dE dropped to .54.

Generally, the Argyll profiles reduced outliers the most for large patch sets and noticeably so for the larger packed, profiles.

The I1Profiler packed 1729 profile performed as well as the conventional, 4096 patch profile keeping the dE below 1.0 for 97% of the independent colors.

The packed 3925 patch Argyll profile printer 99% of all 1940 patches with a dE of 1.0 or lower.

Argyll



I1Profiler



« Last Edit: August 29, 2019, 12:01:26 am by Doug Gray »
Logged
Pages: 1 ... 8 9 [10]   Go Up