Я пытаюсь преобразовать изображение в двоичную форму, сначала, конечно, подготовив его (оттенки серого). Мой метод - найти максимальное и минимальное значения оттенков серого, затем найти среднее значение (которое является моим порогом), а затем перебираявсе пиксели я сравниваю текущий с порогом, и если шкала серого больше порога, я помещаю 0 в матрицу, или для других я ставлю 1. Но теперь я столкнулся с проблемой.Обычно я бинаризирую изображения с белым фоном, поэтому мой алгоритм основан на этой функции.Но когда я встречаю изображение с черным фоном, все рушится, но я все еще могу ясно видеть число (теперь точки смещения 0 и 1). Как я могу решить эту проблему, сделать мою программу более распространенной?Возможно, мне лучше поискать другие способы бинаризации /
PS Я искал понятное объяснение порогового метода Оцу, но, похоже, я не готов к такому трудному пути или нахожу очень сложные объяснения.каждый раз, но я не могу написать это на языке C. Если бы кто-то мог hrlp здесь, это было бы замечательно.
Извините, что не отвечал на вопросы, просто не видел их Во-первых - код
for (int y=1;y<Source->Picture->Height;y++)
for (int x=1;x<Source->Picture->Width;x++)
{
unsigned green = GetGValue(Source->Canvas->Pixels[x][y]);
unsigned red = GetRValue(Source->Canvas->Pixels[x][y]);
unsigned blue = GetBValue(Source->Canvas->Pixels[x][y]);
threshold = (0.2125*red+0.7154*green+0.0721*blue);
if (min>threshold)
min=threshold;
if (max<threshold)
max = threshold;
}
middle = (max+min)/2;
Затем перебирая изображение
if (threshold<middle)
{
picture[x][y]=1;
fprintf( fo,"1");
} else {
picture[x][y]=0;
fprintf( fo,"0");
}
}
fprintf( fo,"\n");
}
fclose(fo);
Итак, я получаю файл, что-то вроде этого
000000000
000001000
000001000
000011000
000101000
000001000
000001000
000001000
000000000
Здесь вы можете увидеть пример одного.
Тогда я могу интерполировать это или делать что-то еще (распознавать), в зависимости от нуля и единицы.Но если я поменяю цвета, цифры не будут такими же.Таким образом, признание не будет работать.Интересно, есть ли алгоритм, который может мне помочь?