There are four most basic morphological operations, namely corrosion, expansion, open calculation and closed calculation. `scipy.ndimage implements these four operations for binary arrays and grayscale arrays respectively
Binary | Grayscale | |
---|---|---|
grey_erosion | Corrosion | |
grey_dilation | Inflation | |
grey_closing | Close (expand first and then corrode) | |
grey_opening | Open (corrode first and then expand) |
ij represents the set of all values that are 1 in B when the origin of B BB is at (i, j).
This formula means that when structure B is used to corrode A, when the origin of B is translated to the pixel (i,j) of image A, if B is completely surrounded by the overlapping area of the two, then Assigned a value of 1, otherwise assigned a value of 0. When a certain element in B is 1, if the corresponding position in A is also 1, then the value at (i, j) is 1. This is a more intuitive example. Inflation is the opposite, and can be expressed asimport 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()The effect is as follows
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()The effect is as follows. It can be seen that the opening operation will remove the isolated 1, and the closing operation will remove the isolated 0.
scipy, and the erosion, expansion, and opening and closing operations are performed in sequence.
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()
Parameter list
The parameters of the binary function and the grayscale function are not the same. The following takes the closing operation as an example. All parameters of the binary and grayscale functions , in addition to the input input, the parameters shared by both are- structure is an array type, indicating the construction element, which can be understood as a convolution template
- output is an array with the same dimensions as the input, and can save the result
- orgin filter setting, the default is 0
binary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)
- iterations is the number of executions
- mask mask array, which is bool type Array, the position corresponding to False will not change
- border_value The value at the edge
- brute_force If it is False, only the last iteration Only the changed values in will be updated
grey_closing(input, size=None, footprint=None, mode='reflect', cval=0.0)
- size is the filter template
- mode optional reflect,constant, nearest, mirror, wrap, edge filling method
- cval edge filling value
The above is the detailed content of How to implement basic morphological filtering in Python. For more information, please follow other related articles on the PHP Chinese website!

Create multi-dimensional arrays with NumPy can be achieved through the following steps: 1) Use the numpy.array() function to create an array, such as np.array([[1,2,3],[4,5,6]]) to create a 2D array; 2) Use np.zeros(), np.ones(), np.random.random() and other functions to create an array filled with specific values; 3) Understand the shape and size properties of the array to ensure that the length of the sub-array is consistent and avoid errors; 4) Use the np.reshape() function to change the shape of the array; 5) Pay attention to memory usage to ensure that the code is clear and efficient.

BroadcastinginNumPyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.Itsimplifiescode,enhancesreadability,andboostsperformance.Here'showitworks:1)Smallerarraysarepaddedwithonestomatchdimensions.2)Compatibledimensionsare

ForPythondatastorage,chooselistsforflexibilitywithmixeddatatypes,array.arrayformemory-efficienthomogeneousnumericaldata,andNumPyarraysforadvancednumericalcomputing.Listsareversatilebutlessefficientforlargenumericaldatasets;array.arrayoffersamiddlegro

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1)Listscanholdelementsofdifferenttypes,2)theyaredynamic,allowingeasyadditionsandremovals,3)theyofferintuitiveoperationslikeslicing,but4)theyarelessmemory-efficientandslowerforlargedatasets.

ToaccesselementsinaPythonarray,useindexing:my_array[2]accessesthethirdelement,returning3.Pythonuseszero-basedindexing.1)Usepositiveandnegativeindexing:my_list[0]forthefirstelement,my_list[-1]forthelast.2)Useslicingforarange:my_list[1:5]extractselemen

Article discusses impossibility of tuple comprehension in Python due to syntax ambiguity. Alternatives like using tuple() with generator expressions are suggested for creating tuples efficiently.(159 characters)

The article explains modules and packages in Python, their differences, and usage. Modules are single files, while packages are directories with an __init__.py file, organizing related modules hierarchically.

Article discusses docstrings in Python, their usage, and benefits. Main issue: importance of docstrings for code documentation and accessibility.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

WebStorm Mac version
Useful JavaScript development tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 English version
Recommended: Win version, supports code prompts!

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Notepad++7.3.1
Easy-to-use and free code editor
