def process(nameImage): # result = fingerprint_pipline('101_3.tif') output_dir = './output/' block_size = 16 im = cv.imread('./input/' + nameImage, 0) normalized_img = normalize(im.copy(), float(100), float(100)) # ROI and normalisation (segmented_img, normim, mask) = create_segmented_and_variance_images(normalized_img, block_size, 0.2) # orientations angles = orientation.calculate_angles(normalized_img, W=block_size, smoth=False) orientation_img = orientation.visualize_angles(segmented_img, mask, angles, W=block_size) # find the overall frequency of ridges in Wavelet Domain freq = ridge_freq(normim, mask, angles, block_size, kernel_size=5, minWaveLength=5, maxWaveLength=15) # create gabor filter and do the actual filtering gabor_img = gabor_filter(normim, angles, freq) # thinning oor skeletonize thin_image = skeletonize(gabor_img) # minutias (minutias, result_minutias) = calculate_minutiaes(thin_image) # singularities (singularities_img, result_singulares) = calculate_singularities(thin_image, angles, 1, 15, mask) # visualize pipeline stage by stage output_imgs = [ im, normalized_img, segmented_img, orientation_img, gabor_img, thin_image, minutias, singularities_img ] for i in range(len(output_imgs)): if len(output_imgs[i].shape) == 2: output_imgs[i] = cv.cvtColor(output_imgs[i], cv.COLOR_GRAY2RGB) results = np.concatenate([ np.concatenate(output_imgs[:4], 1), np.concatenate(output_imgs[4:], 1) ]).astype(np.uint8) cv.imwrite(output_dir + nameImage + '.png', results) return result_minutias, result_singulares
def prediction(args): thetas = load_thetas() kms, prices = load_dataset() norm_mileage = normalize(args.mileage, kms) estimation = estimate_price(*thetas, norm_mileage) if sum(thetas) != 0: estimation = denormalize(estimation, prices) print(f"Estimation for {args.mileage} is {round(estimation, 2)}")
def fingerprint_pipline(input_img): block_size = 16 # pipe line picture re https://www.cse.iitk.ac.in/users/biometrics/pages/111.JPG # normalization -> orientation -> frequency -> mask -> filtering # normalization - removes the effects of sensor noise and finger pressure differences. normalized_img = normalize(input_img.copy(), float(100), float(100)) # color threshold # threshold_img = normalized_img # _, threshold_im = cv.threshold(normalized_img,127,255,cv.THRESH_OTSU) # cv.imshow('color_threshold', normalized_img); cv.waitKeyEx() # ROI and normalisation (segmented_img, normim, mask) = create_segmented_and_variance_images(normalized_img, block_size, 0.2) # orientations angles = orientation.calculate_angles(normalized_img, W=block_size, smoth=False) orientation_img = orientation.visualize_angles(segmented_img, mask, angles, W=block_size) # find the overall frequency of ridges in Wavelet Domain freq = ridge_freq(normim, mask, angles, block_size, kernel_size=5, minWaveLength=5, maxWaveLength=15) # create gabor filter and do the actual filtering gabor_img = gabor_filter(normim, angles, freq) # thinning oor skeletonize thin_image = skeletonize(gabor_img) # minutias minutias, pos = calculate_minutiaes(thin_image) # singularities #singularities_img = calculate_singularities(thin_image, angles, 1, block_size, mask) # visualize pipeline stage by stage return minutias, pos
def fingerprint(input_img): block_size = 16 # pipe line picture re https://www.cse.iitk.ac.in/users/biometrics/pages/111.JPG # normalization -> orientation -> frequency -> mask -> filtering # normalization - removes the effects of sensor noise and finger pressure differences. normalized_img = normalize(input_img.copy(), float(100), float(100)) # color threshold # threshold_img = normalized_img # _, threshold_im = cv.threshold(normalized_img,127,255,cv.THRESH_OTSU) # cv.imshow('color_threshold', normalized_img); cv.waitKeyEx() # ROI and normalisation (segmented_img, normim, mask) = create_segmented_and_variance_images(normalized_img, block_size, 0.2) # orientations angles = orientation.calculate_angles(normalized_img, W=block_size, smoth=False) orientation_img = orientation.visualize_angles(segmented_img, mask, angles, W=block_size) # find the overall frequency of ridges in Wavelet Domain freq = ridge_freq(normim, mask, angles, block_size, kernel_size=5, minWaveLength=5, maxWaveLength=15) # create gabor filter and do the actual filtering gabor_img = gabor_filter(normim, angles, freq) # thinning oor skeletonize thin_image = skeletonize(gabor_img) # minutias minutias = calculate_minutiaes(thin_image) # singularities singularities_img = calculate_singularities(thin_image, angles, 1, block_size, mask) # visualize pipeline stage by stage output_imgs = [ input_img, normalized_img, segmented_img, orientation_img, gabor_img, thin_image, minutias, singularities_img ] for i in range(len(output_imgs)): if len(output_imgs[i].shape) == 2: output_imgs[i] = cv.cvtColor(output_imgs[i], cv.COLOR_GRAY2RGB) results = np.concatenate([ np.concatenate(output_imgs[:4], 1), np.concatenate(output_imgs[4:], 1) ]).astype(np.uint8) return results
def _normalize_dataset(kms, prices): normalized_kms = map(lambda km: normalize(km, kms), kms) normalized_prices = map(lambda price: normalize(price, prices), prices) return [Data(x, y) for x, y in zip(normalized_kms, normalized_prices)]