gray morphology basic operation
生活随笔
收集整理的這篇文章主要介紹了
gray morphology basic operation
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一.概述
二.灰度腐蝕
三.灰度膨脹
四.灰度圖腐蝕與膨脹代碼
一.概述
灰度形態學是二值形態學向灰度空間的自然擴展。
??? 在灰度形態學中,分別用圖像函數f(x,y)和b(x,y)表示二值形態學中的目標圖像A和結構元素B,并把f(x,y)稱為輸入圖像,b(x,y)稱為結構元素,函數中的(x,y)表示圖像中像素點的坐標。
??? 二值形態學中用到的交和并運算在灰度形態學中分別用最大極值和最小極值運算代替。
二.灰度腐蝕
? 灰度腐蝕運算的計算是逐點進行的,求某點的腐蝕運算結果就是:計算該點局部范圍內各點與結構元素中對應點的灰度值之差,并選取其中的最小值作為該點的腐蝕結果。
??? 經腐蝕運算后,圖像邊緣部分具有較大灰度值的點的灰度會降低,因此,邊緣會向灰度值高的區域內部收縮。
三.灰度膨脹
灰度膨脹運算的特點:
??? 灰度膨脹運算的計算是逐點進行的,求某點的膨脹運算結果就是:計算該點局部范圍內各點與結構元素中對應點的灰度值之和,并選取其中的最大值作為該點的腐蝕結果。
??? 經膨脹運算后,圖像邊緣部分得到了延伸。
四.灰度圖腐蝕與膨脹代碼
# -*- coding:utf-8 import cv2 as cv import numpy as nppath='/home/image/Pictures/lena256.jpg' src=cv.imread(path,0) (H,W)=src.shapetemplate=np.array([[0,2,0],[2,3,2],[0,2,0]])def solveErode(ge,i,j,a,b):a11 = ge[i, j] - template[0, 0]a12= ge[i, j] - template[0, 1]a13 = ge[i, j] - template[0, 2]a21 = ge[i, j] - template[1, 0]a22 = ge[i, j] - template[1, 1]a23 = ge[i, j] - template[1, 2]a31 = ge[i, j] - template[2, 0]a32 = ge[i, j] - template[2, 1]a33 = ge[i, j] - template[2, 2]if i==a and j==b:return a22elif i==a and j>b:return a21elif i==a and j<b:return a23elif i<a and j<b:return a33elif i<a and j==b:return a32elif i<a and j>b:return a31elif i>a and j<b:return a13elif i>a and j==b:return a12else:return a11def solveDilate(ge,i,j,a,b):a11 = ge[i, j] + template[0, 0]a12 = ge[i, j] + template[0, 1]a13 = ge[i, j] + template[0, 2]a21 = ge[i, j] + template[1, 0]a22 = ge[i, j] + template[1, 1]a23 = ge[i, j] + template[1, 2]a31 = ge[i, j] + template[2, 0]a32 = ge[i, j] + template[2, 1]a33 = ge[i, j] + template[2, 2]if i == a and j == b:return a22elif i == a and j > b:return a21elif i == a and j < b:return a23elif i < a and j < b:return a33elif i < a and j == b:return a32elif i < a and j > b:return a31elif i > a and j < b:return a13elif i > a and j == b:return a12else:return a11#grayErosion ge=np.zeros((H,W),np.uint8) for i in range(1,H-1):for j in range(1,W-1):a1=solveErode(src,i-1,j-1,i,j)a2=solveErode(src,i-1,j,i,j)a3=solveErode(src,i-1,j+1,i,j)a4=solveErode(src,i,j-1,i,j)a5=solveErode(src,i,j,i,j)a6=solveErode(src,i,j+1,i,j)a7=solveErode(src,i+1,j-1,i,j)a8=solveErode(src,i+1,j,i,j)a9=solveErode(src,i+1,j+1,i,j)list = [a1, a2, a3, a4, a5, a6, a7, a8, a9]ge[i,j]=min(list)#grayDilation gd=np.zeros((H,W),np.uint8) for i in range(1,H-1):for j in range(1,W-1):a1 = solveDilate(src, i - 1, j - 1, i, j)a2 = solveDilate(src, i - 1, j, i, j)a3 = solveDilate(src, i - 1, j + 1, i, j)a4 = solveDilate(src, i, j - 1, i, j)a5 = solveDilate(src, i, j, i, j)a6 = solveDilate(src, i, j + 1, i, j)a7 = solveDilate(src, i + 1, j - 1, i, j)a8 = solveDilate(src, i + 1, j, i, j)a9 = solveDilate(src, i + 1, j + 1, i, j)list = [a1, a2, a3, a4, a5, a6, a7, a8, a9]gd[i,j]=max(list)if __name__=='__main__':files=[src,ge,gd]cv.imshow('original*********************grayErison******************grayDilate',np.hstack(files))cv.waitKey(0)運行結果:
總結
以上是生活随笔為你收集整理的gray morphology basic operation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最受欢迎的五大BUG管理系统
- 下一篇: ET-B33H-M@GB插4G卡后如何访