Distinguishing different cmyk patches
Now that we are able to predict what should be the
output of the sensor given a certain map of cmyk, we have all the necessary
tools to study the sensor precision in distinguishing different cmyk values.
For this problem, we are determining how many of the
cmyk values from the table we have been given are distinguishable with the
sensor we have. We can indeed assume that these 1338 cmyk values represent a
good subset of the possible values that we could indeed need to recognize.
First we can see a first approach
of the problem to help understanding it. We determined which colors are
distinguishable under 2 different assumptions: the
noiseless sensor, and the actual noisy sensor.
The
first question that one can ask with this problem is: Are we able to decide,
for each pixel of the sensor, to which cmyk value the signal corresponds?
The answer that question, we can simulate in ISET the
sensor response for each of the cmyk values of the table; repeat this operation
several times (e.g. a thousand times) and just compute for each value the range
of the possible values taken by the sensor. If two ranges do not overlap, we
can then decide that these cmyk values are discriminable.
Unfortunately this method does not work as well as we
could have hoped!
Because the noise in the sensor is quite high, for a
given cmyk value, this range of possible values is usually very large. Therefore
most of the ranges overlap and none of the cmyk values is distinguishable from
the others… The result is even worse as the range of any cmyk value overlaps
with mot of the other ranges. Some decision as still possible but very few:
For instance if we know that each pixel in the image
is either black or white, we can be able to decide between the 2 possibility. But
if there is a third color in the middle (like grey), then we can never be able
to decide between black and gray for some pixel, and white and grey for some
other.
To see how we could circle around this problem, we can
take a look at a simulated image of ten columns of ten identical pixels each:
We can then see that even if the columns are very
noisy we can still easily see the difference between 2 different columns.
Only the column in the middle seems perfect (completely
noiseless), but it is actually worse as it is saturating…
This shows that we should be able to distinguish
between 2 areas with different cmyk values.
The last remark we can make from this experience is
that: if we compute the average of each column and the standard deviation of
this average (repeating the experiment several times), then most of the pixel values
are between mean-2*std and mean+2*std.
The
noiseless sensor does not imply the absence of any noise as we still have noise
from the lens, as well as some Poisson
noise from the light, we therefore still have to use an averaging method.
With
the last remark of the previous part, we can now have a better method to distinguish
areas of different cmyk values:
We can compute these intervals
[mean-2*std , mean+2*std] and decide whether 2 cmyk
values are discriminalble depending on whether these intervals overlap or not.
These intervals can not all
have the same width as the colors with a stronger sensor response give more signal,
and are then less noisy.
Using this method on a full
sensor patch, and without considering the sensor output quantization issue, we
are able to distinguish most of the patch. Using 2 different light values, we
can distinguish up to roughly 1200 different cmyk values.
Some values are still
undiscriminable: for instance the entries 856, 814 and 862 remain equivalent.
Their cmyk correspondences are:
Entry |
C |
M |
Y |
K |
856 |
100 |
83 |
100 |
20 |
814 |
83 |
100 |
100 |
20 |
862 |
100 |
100 |
83 |
20 |
We can however remark that these
values represent color close one to another. Moreover they are all very dark
and therefore the signal is noisier for these values.
a)
General case:
We
can now repeat this experience with the actual sensor. Of course, as we added
the noise of the sensor, the results are not as good as previously.
If we set the parameters of the experiment such that
we are averaging on the whole sensor (uniform page), and the light such that
there is no saturation,
We have roughly a thousand values that are 3-equivalent
or less. Which means that they can not be distinguished from at most 3 other
cmyk values.
The peak of the curve is at 0, and we have around 400
hundreds color that are 0-equivalent.
b)
Effect of the light:
To improve
these results, one of the possibilities is to vary the light intensity, so the darker
and noisier values become less noisy. The problem with this method is that the
brighter values will then saturate. Therefore this does not seem to be a very
good idea! However if we know that for a given image, we will probably try to
distinguish between dark values, we can increase the light intensity, knowing
that some values will saturate; but the values we are interested in become then
less noisy. This is a point where we could have interaction between the future misprint
detection algorithm and the parameters of the sensing device.
c)
Effect of the size of the patch:
These
experiment are all for a patch taking the whole sensor. This is not really a
case that we will often see with real printings. We therefore have to study the
effect of the size of the patch. This gives an idea of the cmyk spatial
resolution that we can have with this sensor. The following table gives
detailed results, that we can sum up as: if we divide the size of the patch by
4; the peak is around 2, if we divide it by 10, the peak is around 3; We can
then think that the performance is quite robust to the patch size. This is true
in some extend but becomes wrong when we have too small areas: if we divide the
patch size by 100, the peak is now around 7.
Results with
all parameters fixed except the size of the patch; (as here the light is set
quite high, some values are saturating and therefore the columns doesn’t some
at 1338, only the non saturating values are taken in account here.)
Number of
pixels |
8658 |
7070 |
5642 |
4374 |
3266 |
2318 |
1530 |
902 |
434 |
126 |
0-equivalent |
504 |
483 |
392 |
359 |
315 |
263 |
205 |
176 |
112 |
40 |
1-equivalent |
377 |
381 |
392 |
359 |
325 |
311 |
248 |
211 |
140 |
64 |
2-equivalent |
276 |
277 |
286 |
286 |
305 |
290 |
258 |
256 |
166 |
70 |
3-equivalent |
127 |
142 |
181 |
204 |
220 |
230 |
245 |
229 |
235 |
97 |
4-equivalent |
29 |
30 |
51 |
73 |
87 |
116 |
170 |
173 |
177 |
122 |
5-equivalent |
11 |
10 |
15 |
32 |
48 |
61 |
94 |
115 |
147 |
127 |
6-equivalent |
7 |
7 |
9 |
11 |
17 |
39 |
59 |
77 |
116 |
102 |
7-equivalent |
5 |
6 |
6 |
7 |
9 |
11 |
24 |
45 |
73 |
105 |
8-equivalent |
2 |
4 |
5 |
6 |
6 |
8 |
13 |
21 |
68 |
127 |
9-equivalent |
|
|
|
|
|
4 |
8 |
13 |
38 |
86 |
10-equivalent |
|
|
|
|
|
|
|
5 |
29 |
78 |
11-equivalent |
|
|
|
|
|
|
|
|
14 |
55 |