開操作與閉操作


開操作

  閉操作同樣使輪廓線更為光滑,但與開操作相反的是,它通常連接狹窄的間斷和長細的鴻溝,消除小的孔洞,並填補輪廓線中的斷裂。

  使用結構元素 B 對集合 A 進行開操作,定義為:

               

 閉操作

  閉操作同樣使輪廓線更為光滑,但與開操作相反的是,它通常連接狹窄的間斷和長細的鴻溝,消除小的孔洞,並填補輪廓線中的斷裂。

             

 

 

開操作有一個簡單的幾何解釋

對形態學上的開操作和閉操作的簡單說明

import cv2 as cv

def open_image(image):
    '圖像開操作'
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    # res=cv.bitwise_not(gray)
    #圖像二值化
    ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow('binary',binary)
    #獲取形態學結構kernel,采用的形態學方式MORPH_RECT
    kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))
    #圖像的開操作
    binary=cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
    cv.imshow('open',binary)

def close_image(image):
    '圖像閉操作'
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    # res=cv.bitwise_not(gray)
    ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
    kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))
    #操作函數morphologyEx
    binary=cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel)
    cv.imshow('close',binary)

src = cv.imread("tree.jpg")
cv.imshow("原來", src)
open_image(src)
close_image(src)
cv.waitKey(0)
cv.destroyAllWindows()

 

 

   閉運算用來連接被誤分為許多小塊的對象,而開運算用於移除圖像噪音形成的斑點.因此,某些情況下可以連續運用這兩種運算。如對一副二值圖連續使用閉運算和開運算,將獲得圖像中的主要對象。同樣,如果想消除圖像中的噪聲(即圖像中的“小點”),也可以對圖像先用開運算后用閉運算,不過這樣也會消除一些破碎的對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM