Guest User

Untitled

a guest
Dec 10th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. from PIL import Image
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. from skimage.filters import threshold_otsu
  5. import glob
  6. import sys
  7.  
  8. from skimage import feature
  9. from skimage.transform import hough_line, hough_line_peaks, hough_circle, hough_circle_peaks
  10. from skimage.morphology import disk, square, closing, opening
  11. from skimage import measure
  12.  
  13. from scipy import ndimage as ndi
  14. from copy import deepcopy
  15.  
  16. import visualPercepUtils as vpu
  17.  
  18. def testOtsu(im, params=None):
  19. nbins = 256
  20. th = threshold_otsu(im)
  21. hist = np.histogram(im.flatten(), bins=nbins, range=[0, 255])[0]
  22. # vpu.showInGrid([im,hist],m=2,n=1)
  23. # exit()
  24. return [th, im > th, hist] # threshold, binarized image (using such threshold), and image histogram
  25.  
  26.  
  27. def fillGaps(im, params=None):
  28. binIm = im > threshold_otsu(im)
  29. sElem = disk(params['closing-radius'])
  30. return [binIm, closing(binIm, sElem)]
  31.  
  32. def removeSmallRegions(im, params=None):
  33. binIm = im > threshold_otsu(im)
  34. sElem = disk(params['opening-radius'])
  35. return [binIm, opening(binIm, sElem)]
  36.  
  37. def fillGapsThenRemoveSmallRegions(im, params=None):
  38. out = fillGaps(im, params) # first, fill gaps
  39. binIm, closeIm = out[0], out[1]
  40. sElem = disk(params['opening-radius'])
  41. return [binIm, opening(closeIm, sElem)]
  42.  
  43. def labelConnectedComponents(im, params=None):
  44. binIm = fillGapsThenRemoveSmallRegions(im, params)[1]
  45. return [binIm, measure.label(binIm, background=0)]
  46.  
  47. def ss(im):
  48. plt.imshow(im, cmap="gray")
  49.  
  50. def sc(im):
  51. plt.imshow(im, cmap="jet")
  52.  
  53.  
  54. im = Image.open('imgs-P5/monedas.pgm').convert('L')
  55. im1 = Image.open('imgs-P5/monedas1.pgm').convert('L')
  56. im2 = Image.open('imgs-P5/monedas2.pgm').convert('L')
  57.  
  58.  
  59. monedas = np.array(im)
  60. monedas1 = np.array(im1)
  61. monedas2 = np.array(im2)
  62.  
  63. ss(monedas)
  64.  
  65. labeled = labelConnectedComponents(monedas2, {'closing-radius': 2, 'opening-radius': 5})[1]
  66.  
  67. sc(labeled)
  68.  
  69. regions = measure.regionprops(labeled)
  70. r = 1
  71. for region in regions:
  72. print "Region", r
  73. print "\t area: ", region.area
  74. print "\t perimeter: ", region.perimeter
  75. r += 1
  76.  
  77. edges = feature.canny(labeled, sigma=0, low_threshold=0, high_threshold=1, use_quantiles=False)
  78. hough_radii = np.arange(18, 26, 1)
  79. hough_res = hough_circle(edges, hough_radii)
  80.  
  81.  
  82. ss(feature.canny(labeled, sigma=0, low_threshold=0, high_threshold=1, use_quantiles=False))
  83.  
  84. accums, cx, cy, radii = hough_circle_peaks(hough_res, hough_radii,total_num_peaks=4)
  85. for center_y, center_x, radius in zip(cy, cx, radii):
  86. print center_x, center_y
  87. print radius
Add Comment
Please, Sign In to add comment