-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Version 1.8 #13
Comments
|
Для определения цветного/серого пользуй S из HSL:
Для определения ЧБ пользуй гистограмму серого:
PS: можешь испльзовать два отдельных коэффициента: klow (для чёрного) и kup (для белого). Или вообще только чёрный. |
Опция |
По поводу количества потоков - проблема была в максимальном количестве waitable objects, равном |
Отслеживай показатели насыщенности(S) и светлости(L) своих изображений: int v_min = buf[i*(size_t)channels];
int v_max = v_min;
size_t ch = (channels < 3) ? channels : 3;
for(j = 1; j < ch; j++) {
int origin = buf[i*(size_t)channels+j];
v_min = (v_min < origin) ? v_min : origin;
v_max = (v_max < origin) ? origin : v_max;
}
int HSL_S = v_max - v_min;
int HSL_L = (v_max + v_min) / 2;
PS: Порог (128) также рекомендую производить по Для анализа используй гистограммы: uint64_t hist_L[256] = {0}, hist_S[256] = {0}, hist_SL[256] = {0};
int thres_L = 192;
hist_L[HSL_L]++;
hist_S[HSL_S]++;
hist_SL[HSL_S] += (HSL_L < thres_L) ? 1 : 0; Для получения точечтой оценки используй "доминанту" гистограммы: for (unsigned int i = 1; i < 256; i++)
{
histogram[i] += histogram[i - 1];
}
unsigned int ilow = 0;
for (unsigned int i = (256 >> 1); i > 0; i >>= 1)
{
uint64_t sum_max = 0;
unsigned int inew = ilow;
for (unsigned int j = ilow; j < (ilow + i); j++)
{
uint64_t const sum_low = (j > 0) ? histogram[j] : 0;
uint64_t const sum_high = histogram[j + i];
uint64_t const sum = sum_high - sum_low;
if (sum > sum_max)
{
inew = j;
sum_max = sum;
}
}
ilow = inew;
}
return ilow; |
Помимо указанных манипуляций с HSL, можно также делать вспомогательное обесцвеченное изображение:
и применять различные метрики к двум изображениям. Ежели метрики простые (MSE, PSNR или корреляция), то можно обойтись без хранения вспомогательного изображения, вычисляя метрику "на лету". По значению же метрики и производить классификацию серый/цветной. Желательно предусмотреть подавление фонового оттенка с помощью чего то, вроде фильтра GrayWorld. |
Мне для первой итерации достаточно будет, чтобы он ч/б сканы, сохранённые в jpeg, корректно обрабатывал. То есть (берём модель HSV), условно, V близко к границам, а по S построим гистограмму, и чтобы большинство значений было в районе 0 (вычисляем порог от размера исходного изображения). |
Таски на версию 1.8
-automode
для автоматического выбора, использовать ли чб (чб или градации серого) или фото (цветные изображения) режим для каждой страницыОпционально
The text was updated successfully, but these errors were encountered: