Мне кажется, вы выполняете какую-то сегментацию. Вы можете попробовать сделать это с помощью адаптивного алгоритма, который устанавливает сам порог, вычисляя некоторые средние значения точек. Этот конкретный алгоритм предполагает, что граничные точки представляют фон, а остальные точки представляют объект. Вот алгоритм:
calculate u1 -> the grayscale average of boundary points
calculate u2 -> the grayscale average of all other points
T_old = 0
T_new = (u1 + u2) / 2
while (T_new != T_old)
//you might want to modify this by introducing an epsilon value, something like
// if T_new near T_old (abs(T_new-T_old)>1)
u1 = grayscale average of points where grayscale intensity is lower than T_new
u2 = grayscale average of points where grayscale intensity is higher or equal to T_new
T_old =T _new
T_new = (u1 + u2) / 2
end
threshold = T_new
Это должно найти почти оптимальный порог для изображения в градациях серого.