目录

一.概述

二.灰度腐蚀

三.灰度膨胀

四.灰度图腐蚀与膨胀代码


一.概述

灰度形态学是二值形态学向灰度空间的自然扩展。
    在灰度形态学中,分别用图像函数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相关推荐

  1. Matlab的一些术语

    出处不详,感谢原作者. 一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名         computer 确定运行的计算机         eps 浮点相对精度        ...

  2. 背出来matlab就无敌了

    背出来,Matlab就无敌了  来源: 卞金鑫的日志 一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名         computer 确定运行的计算机         ep ...

  3. 网球目标检测——基于Python-OpenCV

    1.问题描述 本文章实现了通过读取摄像头所拍摄的图像,实时检测图像中的网球并推算其距离.确定其方位.核心问题是如何从摄像头拍摄的画面中检测出网球,并排除干扰项.此外,为了将该方法运用在嵌入式系统上,系 ...

  4. [转]MATLAB 主要函数指令表(按功能分类)

      1 常用指令(General Purpose Commands) 1.1 通用信息查询(General information) demo 演示程序 help 在线帮助指令 helpbrowser ...

  5. matlab常用函数与常用指令大全

    matlab常用函数与常用指令大全 matlab常用函数- - 1.特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 i ...

  6. matlabstrcmpi_matlab 常用函数

    一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN ...

  7. matlab函数大全

    matlab常用函数与常用指令大全 matlab常用函数- - 1.特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 i ...

  8. Matlab函数索引

    一.常用指令(General Purpose Commands) 1.1 通用信息查询(General information) demo 演示程序 help 在线帮助指令 helpbrowser 超 ...

  9. MATLAB 主要函数指令表

    MATLAB 主要函数指令表(按功能分类) 1 常用指令(General Purpose Commands) 1.1 通用信息查询(General information) demo 演示程序 hel ...

最新文章

  1. weblogic 部署后出现Error 404–Not Found
  2. RocketMQ:Producer启动流程与消息发送源码分析
  3. 笑脸符号怎么存入mysql_让MySql支持Emoji表情存储
  4. 获取不到时间_一月自考成绩查询时间一出,看了文章这次稳过
  5. 抓包写代码模拟怎么减少重复劳动
  6. 显示计算机硬盘驱动器更改,计算机更换硬盘驱动器后蓝屏发生了什么
  7. AVFoundation – AVAssetImageGenerator 截图
  8. 查询Oracle正在执行的sql语句,锁表,解锁
  9. pku 1463 Strategic game 树形DP
  10. python中文近义词工具_python根据词条生成同义词库
  11. DHTMLXGantt and DHTMLXGantt pro
  12. 近50年前500部精品电影合集
  13. Rust的前景怎么样?值不值的学—Rust对比、特色和理念
  14. 【高通平台】安卓平板,使用QQ 视频通话,视频旋转90度问题修改
  15. 2011年6月20日
  16. 如何在Windows使用 ffmpeg 转换整个目录?以MP4转MP3为例
  17. 369家数据中心在列!工信部下达2022年度国家工业节能监察任务
  18. 2021计算机科学与技术考研学校排名 (第四轮计算机科学与技术学科评估排名结果出炉)
  19. WGS数据分析处理流程
  20. ROS Navigation Tuning Guide(导航调试指南)

热门文章

  1. sklearn学习(逻辑回归)
  2. 7-13 菲姐游泳 - 实验3 游泳奥运冠军菲姐刻苦训练,从早上a时b分开始下水训练,直到当天的c时d分结束。请编程计算:菲姐当天一共训练多少小时多少分钟?
  3. 用冒泡法对任意输入的10个数由小到da进行排序
  4. [嘭嘭养成记]4. 使用已有诸多动作数据,统计关节的活动范围
  5. 【渝粤教育】电大中专职业健康与安全作业 题库
  6. Ebyte E72-2G4M20S1E模块的硬件和固件开发 - Part 1
  7. 电视:名存实亡,NTSC 色域
  8. 京东联盟高级API - 京东联盟二合一解析并带出所有此商品的券,解析二合一链接
  9. 关于代码的那些低级错误
  10. Telerik UI for WPF 2023 R1