赞
踩
- import numpy as np
- import matplotlib.pyplot as plt
- from skimage import data, io
- from skimage.filters import threshold_local
- from skimage.morphology import binary_opening, binary_closing, disk
- from skimage import img_as_ubyte
-
- image = data.coins()
- plt.imshow(image, cmap='gray', vmin=0, vmax=255)
局部二值化
- print(image.shape) # (303, 384)
- th = threshold_local(image, block_size=125, offset=-15) #局部二值化阈值
-
- # 二值化处理
- mask0 = image > th
-
- plt.imshow(mask0, cmap='gray')
- plt.show()
closing处理
- mask1 = binary_closing(mask0, disk(3)) # <-disk(1)填不满
- plt.imshow(mask1, cmap='gray')
- plt.axis('off')
- plt.show()
opening处理
- mask2 = binary_opening(mask1, disk(3))
- plt.imshow(mask2, cmap='gray')
- plt.axis('off')
- plt.show()
- masked = image*mask2
- plt.imshow(masked, cmap='gray')
- plt.axis('off')
- plt.show()
- from skimage.measure import label
- from skimage.color import label2rgb
-
- label_img = label(mask2)
- c_label_img = label2rgb(label_img, bg_label=0, image=image) #領域ごとに適当に色をつけて表示
-
- plt.figure(figsize=(10,4))
- plt.subplot(121)
- plt.imshow(label_img)
- plt.axis('off')
- plt.colorbar()
- plt.subplot(122)
- plt.imshow(c_label_img)
- plt.axis('off')
- plt.show()
抽出7号硬币
- mask3 = np.zeros(label_img.shape)
- mask3[label_img==7]=1
-
- plt.figure(figsize=(10,4))
- plt.subplot(121)
- plt.imshow(mask3, cmap='gray')
- plt.subplot(122)
- plt.imshow(image*mask3, cmap='gray')
- plt.show()
- from skimage.measure import regionprops
-
- props = regionprops(label_img, intensity_image=image)
-
- areas = [] #面积
- means = [] #硬币的平均亮度
-
- for prop in props:
- if prop['area']>500: #面积500以上
- y1, x1, y2, x2 = prop['bbox'] #外接矩形的坐标
- plt.imshow(image[y1:y2,x1:x2],cmap='gray')
- plt.show()
- print("ID:", prop['label']) #lebel号
- print("面积:", prop['area']) #面积
- print("平均亮度:", prop['mean_intensity']) #平均亮度
- print("周长:", prop['perimeter']) #周长(単位为像素)
-
- areas.append(prop['area'])
- means.append(prop['mean_intensity'])
-
- plt.scatter(areas, means)
- plt.xlabel("Area")
- plt.ylabel("Mean Intensity")
- plt.show()
- for item in props[0]:
- print(item, ":", prop[item])
-
-
- # area : 1464
- # area_bbox : 1886
- # area_convex : 1500
- # area_filled : 1464
- # axis_major_length : 45.320677849714
- # axis_minor_length : 41.148342391948304
- # bbox : (248, 336, 289, 382)
- # centroid : (268.0075136612022, 358.1448087431694)
- # centroid_local : [20.00751366 22.14480874]
- # centroid_weighted : (267.9509544384042, 358.0799674180582)
- # centroid_weighted_local : [19.95095444 22.07996742]
- # coords : [[248 354]
- # [248 355]
- # [248 356]
- # ...
- # [288 361]
- # [288 362]
- # [288 363]]
- # eccentricity : 0.4191056170704604
- # equivalent_diameter_area : 43.17432910297829
- # euler_number : 1
- # extent : 0.7762460233297985
- # feret_diameter_max : 46.87216658103186
- # image : [[False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]
- # ...
- # [False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]]
- # image_convex : [[False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]
- # ...
- # [False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]]
- # image_filled : [[False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]
- # ...
- # [False False False ... False False False]
- # [False False False ... False False False]
- # [False False False ... False False False]]
- # image_intensity : [[0 0 0 ... 0 0 0]
- # [0 0 0 ... 0 0 0]
- # [0 0 0 ... 0 0 0]
- # ...
- # [0 0 0 ... 0 0 0]
- # [0 0 0 ... 0 0 0]
- # [0 0 0 ... 0 0 0]]
- # inertia_tensor : [[1.28372473e+02 7.75907761e-02]
- # [7.75907761e-02 1.05824397e+02]]
- # inertia_tensor_eigvals : [128.37274004734735, 105.82413010031311]
- # intensity_max : 214.0
- # intensity_mean : 154.29781420765028
- # intensity_min : 77.0
- # label : 24
- # moments : [[1.46400000e+03 3.24200000e+04 9.05872000e+05 2.83783940e+07]
- # [2.92910000e+04 6.48530000e+05 1.81086080e+07 5.66984330e+08]
- # [7.40967000e+05 1.64094240e+07 4.51511658e+08 1.39022544e+10]
- # [2.10321410e+07 4.65826844e+08 1.26060977e+10 3.80602543e+11]]
- # moments_central : [[ 1.46400000e+03 -2.35900188e-12 1.87937301e+05 -5.63933841e+03]
- # [ 3.67705866e-12 -1.13592896e+02 -1.06074294e+04 7.50381781e+04]
- # [ 1.54926917e+05 5.39692284e+03 1.33022875e+07 1.27460882e+05]
- # [ 7.82879427e+03 -1.13419012e+05 -2.08187942e+06 -1.65495983e+07]]
- # moments_hu : [ 1.59970540e-01 2.37223328e-04 3.04639425e-07 1.15677975e-09
- # -2.10816335e-17 -1.75684355e-11 -5.20826290e-18]
- # moments_normalized : [[ nan nan 8.76861155e-02 -6.87662695e-05]
- # [ nan -5.29991640e-05 -1.29347327e-04 2.39143759e-05]
- # [ 7.22844242e-02 6.58102465e-05 4.23938735e-03 1.06165437e-06]
- # [ 9.54645630e-05 -3.61461987e-05 -1.73405075e-05 -3.60265893e-06]]
- # moments_weighted : [[2.25892000e+05 4.98768800e+06 1.38932782e+08 4.33358566e+09]
- # [4.50676100e+06 9.97437860e+07 2.78354830e+09 8.69601199e+10]
- # [1.13345767e+08 2.51326943e+09 6.92456647e+10 2.13172404e+12]
- # [3.20261718e+09 7.10839231e+10 1.92812715e+12 5.82844892e+13]]
- # moments_weighted_central : [[ 2.25892000e+05 -5.32253353e-10 2.88047935e+07 -6.06344440e+06]
- # [ 2.08956408e-10 2.34649959e+05 1.34456542e+06 6.86928200e+07]
- # [ 2.34315836e+07 1.23560438e+06 1.99961371e+09 3.00734819e+08]
- # [ 6.29603118e+06 1.60850955e+07 3.86165186e+08 4.53452447e+09]]
- # moments_weighted_hu : [ 1.02369680e-03 1.11728663e-08 1.70997792e-13 1.38882458e-13
- # -2.12784146e-26 -7.43233122e-18 2.30216331e-27]
- # moments_weighted_normalized : [[ nan nan 5.64498854e-04 -2.50015695e-07]
- # [ nan 4.59852743e-06 5.54408411e-08 5.95948586e-09]
- # [ 4.59197950e-04 5.09480203e-08 1.73477660e-07 5.48947405e-11]
- # [ 2.59606011e-07 1.39547189e-09 7.04888039e-11 1.74151952e-12]]
- # orientation : -1.5673552548724272
- # perimeter : 141.29646455628165
- # perimeter_crofton : 136.63896538976286
- # slice : (slice(248, 289, None), slice(336, 382, None))
- # solidity : 0.976
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。