Skip to content

Commit 3819e37

Browse files
authored
Add files via upload
1 parent adc9379 commit 3819e37

1 file changed

Lines changed: 36 additions & 25 deletions

File tree

nQuant.Master/GilbertCurve.cs

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -157,31 +157,42 @@ private int DitherPixel(int x, int y, Color c2, float beta)
157157
}
158158
}
159159

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))
172-
{
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);
178-
}
179-
}
180-
181-
c2 = BlueNoise.Diffuse(c1, palette[qPixelIndex], kappa, strength, x, y);
182-
}
183-
184-
if (DITHER_MAX < 16 && palette.Length > 4 && saliencies[bidx] < .6f && CIELABConvertor.Y_Diff(pixel, c2) > margin - 1)
160+
if (margin > 6 || (palette.Length <= 32 && weight < .01 && weight > .007))
161+
{
162+
if (palette.Length > 4 && CIELABConvertor.Y_Diff(pixel, c2) > (beta * acceptedDiff))
163+
{
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
169+
{
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+
}
182+
}
183+
184+
c2 = BlueNoise.Diffuse(c1, palette[qPixelIndex], kappa, strength, x, y);
185+
}
186+
}
187+
else if (palette.Length > 4 && CIELABConvertor.Y_Diff(pixel, c2) > (beta * Math.PI * acceptedDiff))
188+
{
189+
if (beta < .3f && (palette.Length <= 32 || saliencies[bidx] < beta))
190+
c2 = BlueNoise.Diffuse(c2, palette[qPixelIndex], beta * NormalDistribution(saliencies[bidx], .4f), strength, x, y);
191+
else
192+
c2 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
193+
}
194+
195+
if (DITHER_MAX < 16 && palette.Length > 4 && saliencies[bidx] < .6f && CIELABConvertor.Y_Diff(pixel, c2) > margin - 1)
185196
c2 = Color.FromArgb(a_pix, r_pix, g_pix, b_pix);
186197

187198
return ditherable.DitherColorIndex(palette, c2.ToArgb(), bidx);

0 commit comments

Comments
 (0)