在Otsu之后,您似乎得到了反转的二进制图像,脊线变成了山谷。
您想要去除的那些小线条实际上是沿着脊线的间隙,应该通过Gabor滤波器进行去除。您可以再次应用Gabor滤波器或调整参数。
使用形态学运算符,您可以在这里取得相当大的进展。
img = cv.dilate(img, kernel, iterations)
img = cv.erode(img, kernel, iterations)
在编程方面,需要使用
标签或者其他过滤和平滑技术。所有可能有助于未来更详细搜索的关键词。
我特别想要摆脱那些小刺并使边缘变得平滑。
接下来,我将专注于您的“尤其紧迫的问题”,通过将它们转换成技术术语和某种要求进行翻译。
小刺 小刺通常是垂直指向的,而特征指纹线大多是水平对齐的。因此,使用Sobel滤波器可以解决问题,强调水平线条同时稀疏垂直线条。
img = cv.Sobel(src=img, ddepth=cv.CV_64F, dx=0, dy=1, ksize=5)
平滑边缘 平滑处理基本上是通过模糊处理,然后在第二步确保获得清晰的线条来完成的。这是通过以下方式实现的:
img = cv.medianBlur(img, 7)
并且
ret, img = cv.threshold(img, 50, 255, cv.THRESH_BINARY)
我的反转结果看起来像这样(通过进一步的超参数调整肯定可以获得更多收益)。