Python-OpenCV 图像处理(二十二):图像形态学(膨胀与腐蚀)

图像形态学:

是图像处理学科的一个单独分支学科,灰度与二值图像处理中重要手段,是由数学的集合论等相关理论发展起来。

膨胀:

卷积核所对应的原图像的像素值只要有一个是1,中心像素值就是1。一般在除噪是,先腐蚀再膨胀,因为腐蚀在去除白噪声的时候也会使图像缩小,所以我们之后要进行膨胀。当然也可以用来将两者物体分开。

作用:对象大小增加一个像素;平滑对象边缘;减少或者填充对象之间的距离

腐蚀:

腐蚀会把物体的边界腐蚀掉,卷积核沿着图象滑动,如果卷积核对应的原图的所有像素值为1,那么中心元素就保持原来的值,否则变为零。主要应用在去除白噪声,也可以断开连在一起的物体。

作用:对象大小减小一个像素;平滑对象边缘;弱化或者分割图像之间的半岛型连接

import cv2
import numpy as np
from matplotlib import pyplot as plt

__author__ = "zxsuperstar"
__email__ = "[email protected]"

"""
图像形态学 -- 膨胀与腐蚀

腐蚀是一种消除边界点,使边界向内部收缩的过程
可以用来消除小且无意义的物体.
腐蚀算法:
    用 3x3 的 kernel,扫描图像的每一个像素;
    用 kernel 与其覆盖的二值图像做 “与” 操作;
    如果都为1,结果图像的该像素为1;否则为0.
结果:使二值图像减小一圈.

膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程
可以用来填补物体中的空洞.
膨胀算法:
    用 3x3 的 kernel,扫描图像的每一个像素;
    用 kernel 与其覆盖的二值图像做 “与” 操作;
    如果都为0,结果图像的该像素为0;否则为1.
结果:使二值图像扩大一圈

腐蚀
cv2.erode(src,                 # 输入图像
	  kernel,                  # 卷积核
	  dst=None, 
	  anchor=None,
	  iterations=None,         # 迭代次数,默认1
	  borderType=None,
	  borderValue=None) 

膨胀
cv2.dilate(src,                    # 输入图像
           kernel,                 # 卷积核
           dst=None, 
           anchor=None, 
           iterations=None,        # 迭代次数,默认1
           borderType=None, 
           borderValue=None)
"""

def erode_demo(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGRA2GRAY)
    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    cv2.imshow("binary", binary)
    """
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))  # 椭圆结构
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))  # 十字结构
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))  # 矩形结构
    """
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))  #定义 kernel 矩阵
    dst = cv2.erode(binary,kernel) #腐蚀
    # dst = cv2.dilate(binary, kernel)  # 膨胀
    cv2.imshow("erode",dst)


if __name__ == "__main__":
    image = cv2.imread("11.jpg") #blue green red
    erode_demo(image)
    cv2.imshow("image",image)

    cv2.waitKey(0)
    cv2.destroyAllWindows()


运行结果:腐蚀和膨胀

Python-OpenCV 图像处理(二十二):图像形态学(膨胀与腐蚀)_第1张图片Python-OpenCV 图像处理(二十二):图像形态学(膨胀与腐蚀)_第2张图片

你可能感兴趣的:(python,图像处理)