日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gray morphology basic operation

發布時間:2024/1/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。