我一直在嘗試實現Python中指紋的本地脊定位。我使用了漸變方法,並使用sobel運算符來獲得我需要的漸變。但事實證明,這種方法存在很多缺陷,特別是90度左右。我可以包含迄今爲止所做的代碼,但由於它不能按我的要求工作,所以我不知道是否需要。我也看過線段方法,但是,我正在處理潛在指紋,因此很難知道是否應該在線段中尋找最大的黑色或白色。我也試圖實現一種算法來檢測連續線條的最大集中區域,但是我無法得到這個工作。任何其他算法的使用建議?實現本地脊定位
編輯:
我用一個函數來我的功能應用到塊,但就是沒有什麼關係的
def lro(im_np):
orientsmoothsigma = 3
Gxx = cv2.Sobel(im_np,-1,2,0)
Gxy = cv2.Sobel(im_np,-1,1,1)
Gyy = cv2.Sobel(im_np,-1,0,2)
Gxx = scipy.ndimage.filters.gaussian_filter(Gxx, orientsmoothsigma)
Gxy = numpy.multiply(scipy.ndimage.filters.gaussian_filter(Gxy, orientsmoothsigma), 2.0)
Gyy = scipy.ndimage.filters.gaussian_filter(Gyy, orientsmoothsigma)
denom = numpy.sqrt(numpy.add(numpy.power(Gxy,2), (numpy.power(numpy.subtract(Gxx,Gyy),2))))# + eps;
sin2theta = numpy.divide(Gxy,denom) # Sine and cosine of doubled angles
cos2theta = numpy.divide(numpy.subtract(Gxx,Gyy),denom)
sze = math.floor(6*orientsmoothsigma);
if not sze%2: sze = sze+1
cos2theta = scipy.ndimage.filters.gaussian_filter(cos2theta, orientsmoothsigma) # Smoothed sine and cosine of
sin2theta = scipy.ndimage.filters.gaussian_filter(sin2theta, orientsmoothsigma)#filter2(f, sin2theta); # doubled angles
orientim = math.pi/2. + numpy.divide(numpy.arctan2(sin2theta,cos2theta),2.)
return orientim
你如何處理黑白分離的圖像?疊加在原始?你有什麼建議,我可以使用,而不是索貝爾?我只看到Sobel用於獲取漸變的目的,所以我對其他方法感到不知所措。 – larstoc
找到方向(黑白)並將方向疊加在一起,以提供更密集的演示。我不記得確切的漸變發現者。標記一個範圍,只保留接觸中心的前景區域(去除其他脊),並使用mini Hough或其他技術找到角度。 – Jiminion
http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=948092 – Jiminion