Morphologische Operationen – Grenzextraktion

  „Bildmorphologie ist eine mathematische Theorie der Bildverarbeitung, die die Analyse und Verarbeitung von Formen und Strukturen in Bildern umfasst. Die Grenzextraktion bei Bildmorphologieoperationen ist eine gängige Verarbeitungsmethode, mit der die Konturen oder Kanten von Objekten in Bildern erkannt werden können.

Prinzip

  Das Hauptprinzip der Grenzextraktion besteht darin, Dilatation und Erosion bei morphologischen Operationen zu nutzen. Durch die Erweiterungsoperation wird der Objektbereich erweitert und die Objektgrenzen erweitert; durch die Erosionsoperation wird die Objektfläche verkleinert und die Objektgrenzen verkleinert. Durch die Differenz zwischen dem erweiterten Bild und dem korrodierten Bild können die Grenzen des Objekts ermittelt werden.

Funktion und anwendbare Szenarien

  Die Grenzextraktion wird häufig in Bereichen wie Bildsegmentierung, Objekterkennung und Merkmalsextraktion verwendet. Es kann helfen, die Grenzen von Objekten in Bildern zu lokalisieren und wird in Anwendungsszenarien wie der Identifizierung von Formen und der Berechnung der Fläche und des Umfangs von Objekten verwendet.

Mathematische Formel

  In der Bildmorphologie können Dilatations- und Erosionsoperationen mithilfe strukturierender Elemente auf Bilder angewendet werden. Das strukturierende Element ist normalerweise ein kleines Binärbild (z. B. ein Rechteck, ein Kreis oder ein Kreuz), das während der Dilatation oder Erosion mit dem Originalbild gefaltet wird.
  Dilatationsoperation Dilate ( I , S E ) \text{Dilate}(I, SE) Dilatieren(I,SE) Anzeigbar:
( Dilate ( I , S E ) ) ( x , y ) = max ⁡ ( i , j ) ∈ S E I ( x − i , y − j ) (\text{Dilate}(I, SE))(x, y) = \max_{(i,j) \in SE} I( x - i, y - j) (Dilatieren(I,SE))(x,y)=(i,j) SEmaxI(xi,Undj)
  Faule Operation Erode ( I , S E ) \text{Erode}(I, SE)Erodieren(I,SE) Anzeigbar:
( Erode ( I , S E ) ) ( x , y ) = min ⁡ ( i , j ) ∈ S E I ( x + i , y + j ) (\text{Erode}(I, SE))(x, y) = \min_{(i,j) \in SE} I( x + i, y + j) (Erodieren(I,SE))(x,y)=(i,j) SEminI(x+i,Und+j)
  Unter ihnen I I I Dies sind zwei Bilder von Import, S E SE SE ist ein konstituierendes Element.

Codebeispiele (mit Python und OpenCV)

import cv2
import numpy as np

def show_images(image):
    cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
    cv2.imshow('image',image)
    cv2.waitKey()
    cv2.destroyAllWindows()

def Boundary_Extracted(image):
    # 设定结构元素
    kernel = np.ones((5, 5), np.uint8)
    # 膨胀操作
    dilated = cv2.dilate(image, kernel, iterations=1)
    # 腐蚀操作
    eroded = cv2.erode(image, kernel, iterations=1)
    # 边界提取
    boundary = cv2.absdiff(dilated, eroded)
    return boundary

if __name__ == '__main__':
    # 读取图像
    img = cv2.imread('cat-dog.png', flags=0)
    re_img=Boundary_Extracted(img)
    # top_row = np.hstack((img, re_img[0]))
    # bottom_row = np.hstack((re_img[1], re_img[2])) #水平
    # combined_img = np.vstack((img, re_img))# 垂直
    combined_img=np.hstack((img,re_img))
    show_images(combined_img)

Guess you like

Origin blog.csdn.net/qq_50993557/article/details/134815277