Извините, у меня нет java, поэтому я просто пробую некоторые методы на python и могу получить желаемый результат, который вы хотите. Надеюсь, это поможет вам.
import cv2
import numpy as np
image = cv2.imread("1.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_,thresh = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)
cv2.imshow("thresh",thresh)
blur = cv2.GaussianBlur(gray,(5,5),0)
ret3,otsu = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("otsu",otsu)
adaptive_thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 29, 30)
cv2.imshow("adaptive_thresh",adaptive_thresh)
cv2.imshow("img",image)
cv2.waitKey(0)
cv2.destroyAllWindows()
![enter image description here](https://i.stack.imgur.com/eJpTt.png)
- Фиксированный двоичный порог
![enter image description here](https://i.stack.imgur.com/m2vWL.png)
![enter image description here](https://i.stack.imgur.com/LcOKM.png)