cari
Rumahpembangunan bahagian belakangTutorial PythonBagaimana 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 开(先腐蚀后膨胀)

morfologi binari

Kakisan yang dipanggil dinyatakan dalam simbol matematik sebagai

Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python

di mana B

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

Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python

Dengan kata lain, selagi kawasan bertindih B dan A bukan set kosong, kemudian (i, j) titik Hanya tetapkan kepada 1.

Contohnya adalah seperti berikut

import 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

Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python

Operasi pembukaan adalah untuk menghakis dahulu dan kemudian mengembang; operasi penutupan adalah untuk mengembang dahulu dan kemudian menghakis Contohnya 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.

Bagaimana untuk melaksanakan penapisan morfologi asas dalam Python

Morfologi skala kelabu

Kakisan, pengembangan dan operasi membuka dan menutup imej skala kelabu adalah lanjutan daripada keadaan binarinya, menggunakan kaedah yang serupa dengan For the logic daripada lilitan, imej tangga diambil terus daripada

, 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 ialah

  • struktur ialah jenis tatasusunan, mewakili elemen pembinaan, yang boleh difahami sebagai templat konvolusi

  • output ialah tatasusunan dengan dimensi yang sama seperti input, dan hasilnya boleh disimpan

  • tetapan penapis organ, lalai ialah 0

Borang binari Parameter lain penapisan pembelajaran adalah seperti berikut

binary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)

di mana

  • lelaran ialah bilangan pelaksanaan

  • tatasusunan topeng topeng, yang terdiri daripada tatasusunan jenis bool, kedudukan yang sepadan dengan Palsu tidak akan berubah

  • nilai_sempadan Nilai di tepi

  • brute_force Jika Palsu, hanya lelaran terakhir Hanya nilai yang diubah dalam

  • grey_closing(input, size=None, footprint=None, mode='reflect', cval=0.0)
  • saiz ialah templat penapis

  • mod pantulan pilihan, pemalar, terdekat, cermin, balut, kaedah pengisian tepi

  • nilai isian tepi cval

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!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Bagaimana anda membuat tatasusunan pelbagai dimensi menggunakan numpy?Bagaimana anda membuat tatasusunan pelbagai dimensi menggunakan numpy?Apr 29, 2025 am 12:27 AM

Buat tatasusunan pelbagai dimensi dengan numpy dapat dicapai melalui langkah-langkah berikut: 1) Gunakan fungsi numpy.array () untuk membuat array, seperti Np.Array ([[1,2,3], [4,5,6]]) untuk membuat array 2D; 2) Gunakan np.zeros (), np.ones (), np.random.random () dan fungsi lain untuk membuat array yang diisi dengan nilai tertentu; 3) Memahami sifat bentuk dan saiz array untuk memastikan bahawa panjang sub-array adalah konsisten dan mengelakkan kesilapan; 4) Gunakan fungsi np.reshape () untuk mengubah bentuk array; 5) Perhatikan penggunaan memori untuk memastikan bahawa kod itu jelas dan cekap.

Terangkan konsep 'penyiaran' dalam array Numpy.Terangkan konsep 'penyiaran' dalam array Numpy.Apr 29, 2025 am 12:23 AM

Broadcastinginginnumpyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.itsImplifiescode, enhancesreadability, andboostsperformance.here'showitworks: 1) smallerarraysarepaddedwithonestomatchdimensions.2) CompatibeSt

Terangkan cara memilih antara senarai, array.array, dan array numpy untuk penyimpanan data.Terangkan cara memilih antara senarai, array.array, dan array numpy untuk penyimpanan data.Apr 29, 2025 am 12:20 AM

Forpythondatastorage, chooselistsforflexabilityWithMixedDatatypes, array.arrayformemory-efficienthomogeneousnumericaldata, andnumpyarraysforadvancednumericalcomputing.listsareversatileButlessefficefientfientfientfientfientfientfientfientfientfientfientfientforydodeSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShoFficeSforaydataSetShoSforayDataSetsforayDataSetsforayDataSetsforaydataSetShiSforayDodeSforayDodeSforaydataSetRaydataSetRaydataSetRaydataSet

Berikan contoh senario di mana menggunakan senarai python akan lebih sesuai daripada menggunakan array.Berikan contoh senario di mana menggunakan senarai python akan lebih sesuai daripada menggunakan array.Apr 29, 2025 am 12:17 AM

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1) listscanholdelementsofdifferenttypes, 2) thearedynamic, membolehkanEaseasyAdditionsandremoVals, 3) theofferintuitiitiveoperationslikeslicing, tetapi4).

Bagaimana anda mengakses elemen dalam pelbagai python?Bagaimana anda mengakses elemen dalam pelbagai python?Apr 29, 2025 am 12:11 AM

ToAccessElementsInapyThonArray, useIndexing: my_array [2] AccessestHeTheRdeLement, returning3.pythonuseszero-berasaskanIndexing.1) USE sitiveandnegativeindexing: my_list [0] forthefirstelement, my_list [-1] forthelast.2) menggunakanSlicingForarangange: my_list [1: 5] ekstrakSelemen

Adakah pemahaman tuple mungkin di Python? Jika ya, bagaimana dan jika tidak mengapa?Adakah pemahaman tuple mungkin di Python? Jika ya, bagaimana dan jika tidak mengapa?Apr 28, 2025 pm 04:34 PM

Artikel membincangkan kemustahilan pemahaman tuple di Python kerana kekaburan sintaks. Alternatif seperti menggunakan tuple () dengan ekspresi penjana dicadangkan untuk mencipta tupel dengan cekap. (159 aksara)

Apakah modul dan pakej dalam Python?Apakah modul dan pakej dalam Python?Apr 28, 2025 pm 04:33 PM

Artikel ini menerangkan modul dan pakej dalam Python, perbezaan, dan penggunaannya. Modul adalah fail tunggal, manakala pakej adalah direktori dengan fail __init__.py, menganjurkan modul yang berkaitan secara hierarki.

Apa itu Docstring dalam Python?Apa itu Docstring dalam Python?Apr 28, 2025 pm 04:30 PM

Artikel membincangkan docstrings dalam python, penggunaan, dan faedah mereka. Isu Utama: Kepentingan Docstrings untuk Dokumentasi Kod dan Kebolehcapaian.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa