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.

 

First approach:

         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:

                                              10_bandes.png

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.

 

Noiseless Sensor:

         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.

                                                 check.PNG

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.

 

Noisy Sensor:

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