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 sebagai Dengan kata lain, selagi kawasan bertindih B dan A bukan set kosong, kemudian (i, j) titik Hanya tetapkan kepada 1. Contohnya adalah seperti berikutimport 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()
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()
, 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)
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!