Skip to content

Commit adc9379

Browse files
authored
Add files via upload
1 parent bdd3aef commit adc9379

1 file changed

Lines changed: 20 additions & 32 deletions

File tree

nQuant.Master/GilbertCurve.cs

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -155,46 +155,34 @@ private int DitherPixel(int x, int y, Color c2, float beta)
155155
else
156156
c2 = BlueNoise.Diffuse(pixel, palette[qPixelIndex], beta * .5f / saliencies[bidx], strength, x, y);
157157
}
158-
if (CIELABConvertor.U_Diff(pixel, c2) > (margin * acceptedDiff))
159-
c2 = BlueNoise.Diffuse(pixel, palette[qPixelIndex], beta * NormalDistribution(saliencies[bidx], .25f) + beta, strength, x, y);
160158
}
161159

162-
if (margin > 6 || (palette.Length <= 32 && weight < .01 && weight > .007)) {
163-
if (palette.Length > 4 && CIELABConvertor.Y_Diff(pixel, c2) > (beta * acceptedDiff)) {
164-
var kappa = saliencies[bidx] < .4f ? beta * .4f * saliencies[bidx] : beta * .4f / saliencies[bidx];
165-
var c1 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
166-
if (palette.Length > 32)
167-
kappa = beta * NormalDistribution(saliencies[bidx], 2f);
168-
else
160+
if (palette.Length > 4 && CIELABConvertor.Y_Diff(pixel, c2) > (beta * acceptedDiff)) {
161+
var kappa = saliencies[bidx] < .4f ? beta * .4f * saliencies[bidx] : beta * .4f / saliencies[bidx];
162+
var c1 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
163+
if (palette.Length > 32)
164+
kappa = beta * NormalDistribution(saliencies[bidx], 2f);
165+
else
166+
{
167+
if (weight >= .0015 && saliencies[bidx] < .6)
168+
c1 = pixel;
169+
if (saliencies[bidx] < .6)
170+
kappa = beta * NormalDistribution(saliencies[bidx], weight < .0008 ? 2.5f : 1.75f);
171+
else if (palette.Length >= 32 || CIELABConvertor.Y_Diff(c1, c2) > (beta * Math.PI * acceptedDiff))
169172
{
170-
if (weight >= .0015 && saliencies[bidx] < .6)
171-
c1 = pixel;
172-
if (saliencies[bidx] < .6)
173-
kappa = beta * NormalDistribution(saliencies[bidx], weight < .0008 ? 2.5f : 1.75f);
174-
else if (palette.Length >= 32 || CIELABConvertor.Y_Diff(c1, c2) > (beta * Math.PI * acceptedDiff))
175-
{
176-
var ub = 1 - palette.Length / 320.0;
177-
if (saliencies[bidx] > .15 && saliencies[bidx] < ub)
178-
kappa = beta * (!sortedByYDiff && weight < .0025 ? .55f : .5f) / saliencies[bidx];
179-
else
180-
kappa = beta * NormalDistribution(saliencies[bidx], weight < .0025 ? 1.82f : 2f);
181-
}
173+
var ub = 1 - palette.Length / 320.0;
174+
if (saliencies[bidx] > .15 && saliencies[bidx] < ub)
175+
kappa = beta * (!sortedByYDiff && weight < .0025 ? .55f : .5f) / saliencies[bidx];
176+
else
177+
kappa = beta * NormalDistribution(saliencies[bidx], weight < .0025 ? 1.82f : 2f);
182178
}
183-
184-
c2 = BlueNoise.Diffuse(c1, palette[qPixelIndex], kappa, strength, x, y);
185179
}
186-
}
187-
else if (palette.Length > 4 && (CIELABConvertor.Y_Diff(pixel, c2) > (beta * acceptedDiff) || CIELABConvertor.U_Diff(pixel, c2) < acceptedDiff)) {
188-
if(beta < .3f && (palette.Length <= 32 || saliencies[bidx] < beta))
189-
c2 = BlueNoise.Diffuse(c2, palette[qPixelIndex], beta * .4f * saliencies[bidx], strength, x, y);
190-
else
191-
c2 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
192-
}
193180

181+
c2 = BlueNoise.Diffuse(c1, palette[qPixelIndex], kappa, strength, x, y);
182+
}
183+
194184
if (DITHER_MAX < 16 && palette.Length > 4 && saliencies[bidx] < .6f && CIELABConvertor.Y_Diff(pixel, c2) > margin - 1)
195185
c2 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
196-
if (beta > 1f && CIELABConvertor.Y_Diff(pixel, c2) > DITHER_MAX)
197-
c2 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
198186

199187
return ditherable.DitherColorIndex(palette, c2.ToArgb(), bidx);
200188
}

0 commit comments

Comments
 (0)