我发现很难为迷宫找到一种自适应图像阈值技术,该技术将返回高值或低值以确保所有路径都是相同的颜色。
到目前为止,我已经尝试了一个明显不起作用的固定阈值和 otsu 的方法,它在中间返回一个值,这意味着某些像素没有正确转换。
原始图像 - https://imgur.com/DqaUYfW
大津的方法 - https://imgur.com/a/V5t6rqZ
所需的输出 - https://imgur.com/a/yvXuAqC
我发现很难为迷宫找到一种自适应图像阈值技术,该技术将返回高值或低值以确保所有路径都是相同的颜色。
到目前为止,我已经尝试了一个明显不起作用的固定阈值和 otsu 的方法,它在中间返回一个值,这意味着某些像素没有正确转换。
原始图像 - https://imgur.com/DqaUYfW
大津的方法 - https://imgur.com/a/V5t6rqZ
所需的输出 - https://imgur.com/a/yvXuAqC
抱歉,我没有 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()