Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python
Terdapat empat operasi morfologi yang paling asas, iaitu kakisan, pengembangan, pengiraan terbuka dan pengiraan tertutup masing-masing melaksanakan empat operasi ini untuk tatasusunan binari dan tatasusunan skala kelabu
二值 | 灰度 | |
---|---|---|
binary_erosion | grey_erosion | 腐蚀 |
binary_dilation | grey_dilation | 膨胀 |
binary_closing | grey_closing | 闭(先膨胀后腐蚀) |
binary_opening | grey_opening | 开(先腐蚀后膨胀) |
ij bermaksud apabila B BB Apabila asalan berada di (i , j), set semua nilai yang 1 dalam B.
Formula ini bermakna apabila struktur B digunakan untuk menghakis A, apabila asal B diterjemahkan kepada piksel (i,j) imej A, jika B dikelilingi sepenuhnya oleh kawasan bertindih kedua-duanya, kemudian Berikan nilai 1, jika tidak, berikan nilai 0. Apabila elemen tertentu dalam B ialah 1, jika kedudukan sepadan dalam A juga 1, maka nilai pada (i, j) ialah 1. Ini adalah contoh yang lebih intuitif. pengembangan adalah sebaliknya, yang boleh dinyatakan sebagaiimport numpy as np import matplotlib.pyplot as plt import scipy.ndimage as sn x = np.zeros([20,20]) x[5:15, 5:15] = 1 x_ero = sn.binary_erosion(x) x_dil = sn.binary_dilation(x) fig = plt.figure() ax = fig.add_subplot(1,3,1) ax.imshow(x) plt.title("original") ax = fig.add_subplot(1,3,2) ax.imshow(x_ero) plt.title("erosion") ax = fig.add_subplot(1,3,3) ax.imshow(x_dil) plt.title("dilation") plt.show()Kesannya adalah seperti berikut
x = np.zeros([20,20]) x[5:15, 5:15] = 1 x[10:12,10:12] = 0 x[2:4, 2:4] = 1 x_open = sn.binary_opening(x) x_close = sn.binary_closing(x) fig = plt.figure() ax = fig.add_subplot(1,3,1) ax.imshow(x) plt.title("original") ax = fig.add_subplot(1,3,2) ax.imshow(x_open) plt.title("opening") ax = fig.add_subplot(1,3,3) ax.imshow(x_close) plt.title("closing") plt.show()Kesannya adalah seperti berikut. Dapat dilihat bahawa operasi pembukaan akan mengeluarkan 1s terpencil, dan operasi penutupan akan mengeluarkan 0s terpencil.
, dan hakisan, pengembangan serta operasi buka dan tutup dilakukan mengikut turutan. scipy
from scipy.misc import ascent img = ascent() funcs = { "original": lambda x, tmp:x, "erosion" : sn.grey_erosion, "dilation" : sn.grey_dilation, "opening" : sn.grey_opening, "closing" : sn.grey_closing } fig = plt.figure() for i, key in enumerate(funcs): ax = fig.add_subplot(2,3,i+1) plt.imshow(funcs[key](img, (10,10)), cmap=plt.cm.gray) plt.title(key) plt.show()
Senarai parameter
Parameter fungsi binari dan fungsi skala kelabu adalah tidak sama yang berikut mengambil operasi penutup sebagai contoh untuk menunjukkan semua parameter daripada fungsi binari dan skala kelabu , sebagai tambahan kepada input input, parameter yang dikongsi oleh kedua-duanya ialahbinary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)di mana
grey_closing(input, size=None, footprint=None, mode='reflect', cval=0.0)
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!