1
0
mirror of https://github.com/ciromattia/kcc synced 2025-12-12 17:26:23 +00:00

Fix tint color detection (#1135)

* make color detection even more precise

* fix tinted images
This commit is contained in:
Alex Xu
2025-10-24 20:55:18 -07:00
committed by GitHub
parent 44401583e4
commit f2ab730691

View File

@@ -343,7 +343,15 @@ class ComicPage:
# bias adjustment
SPREAD_THRESHOLD = 5
if not self.opt.forcecolor and cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD:
if self.opt.forcecolor:
if any([
cb_nonzero[0] > 128,
cr_nonzero[0] > 128,
cb_nonzero[-1] < 128,
cr_nonzero[-1] < 128,
]):
return True
elif cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD:
return False
# check for large amount of extreme colors
@@ -358,7 +366,7 @@ class ComicPage:
return True
# get ride of most jpg compression
cutoff = (2, 2)
cutoff = (3, 3)
cb_hist, cr_hist = self.histograms_cutoff(cb, cr, cutoff)
cb_nonzero = [i for i, e in enumerate(cb_hist) if e]
@@ -368,11 +376,19 @@ class ComicPage:
# bias adjustment
SPREAD_THRESHOLD = 5
if not self.opt.forcecolor and cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD:
if self.opt.forcecolor:
if any([
cb_nonzero[0] > 128,
cr_nonzero[0] > 128,
cb_nonzero[-1] < 128,
cr_nonzero[-1] < 128,
]):
return True
elif cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD:
return False
# check for any amount of mild colors still remaining
DIFF_THRESHOLD = 6
# check for any amount of mild colors still remaining, 3 is barely enough, 2 is too high
DIFF_THRESHOLD = 3
if any([
cb_nonzero[0] <= 128 - DIFF_THRESHOLD,
cr_nonzero[0] <= 128 - DIFF_THRESHOLD,