图像的膨胀和腐蚀原理及opencv实现

本文介绍了图像处理中的形态学操作——膨胀和腐蚀,这两种技术主要用于改变二值图像中高亮区域的大小。膨胀使得物体边界向外扩展,而腐蚀则会消除边界点,减小物体面积。通过具体的例子和OpenCV库的Python实现,展示了如何进行图像膨胀和腐蚀操作,以调整和清理图像中的目标区域。
摘要由CSDN通过智能技术生成

1 膨胀和腐蚀介绍

腐蚀和膨胀是形态学最基本的操作,都是针对白色部分(高亮部分)而言的。
膨胀就是使图像中高亮部分扩张,得到比原图更大的高亮区域;腐蚀是原图像中的高亮区域被蚕食,得到比原图更小的高亮区域。
膨胀是求结构元素下像素最大值,腐蚀是求结构元素下像素最小值。

1.1 膨胀

具体操作:用一个结构元素扫描图像中的每一个像素,看结构元素覆盖下的原图的像素(二值图像只有0和1)的最大值是多少,若最大值是1,则该点像素为1;若最大值是0,则该点像素是0。

例子如下:
原图

结构元素

以第三行第二个像素点为例,将结构元素的中心点放置在该像素点上,结构元素覆盖的区域像素点的最大值为1,因此第三行第二个像素点的值为1。

膨胀后的结果:

膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可填补目标中的孔洞。

1.2 腐蚀

具体操作:用一个结构元素扫描图像中的每一个像素,用结构元素的中心对准当前正在扫描的像素,看结构元素覆盖下的原图对应的像素(二值图像只有0和1)的最小值是多少,若最小值是0,则该点像素为0;若是1,则该点像素是1。
例子如下:
原图
哈哈哈
结构元素

以第二行第三个像素点为例,将结构元素的中心点放置在该像素点上,用结构元素的中心对准当前正在扫描的像素,结构元素覆盖的区域像素点的最小值为0,因此第二行第三个像素点的值变成0。

腐蚀后的结果:

腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点。

2 opencv 实现

2.1 膨胀

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread('./image/letter.png')
# 创建核结构
kernel = np.ones((5,5),np.uint8)
#膨胀
img1 = cv.dilate(img,kernel)
plt.imshow(img1)

2.2 腐蚀

# 腐蚀
img2 = cv.erode(img,kernel)
plt.imshow(img2)
  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 OpenCV 在 Visual Studio 中实现图像膨胀腐蚀处理,需要按照以下步骤进行操作: 1. 下载和安装 OpenCV 库:您可以从官方网站下载 OpenCV 库并按照官方文档中的说明进行安装。 2. 创建一个新的 Visual Studio 项目并将其配置为使用 OpenCV 库:您需要在项目属性中添加包含和库目录,并在链接器中添加所需的库文件。 3. 在代码中包含 OpenCV 库文件:您需要在代码中添加包含 OpenCV 库文件的头文件。 4. 加载图像并创建一个核:您需要使用 OpenCV 中的“imread”函数加载图像,并创建一个核来进行膨胀腐蚀处理。 5. 膨胀腐蚀处理:您需要使用 OpenCV 中的“dilate”和“erode”函数来进行膨胀腐蚀处理。这些函数需要传递图像和核作为参数,以及一些其他的可选参数,例如膨胀腐蚀的次数。 以下是一个使用 OpenCV 在 Visual Studio 中进行图像膨胀腐蚀处理的示例代码: ```c++ #include <opencv2/opencv.hpp> using namespace cv; int main() { // 加载图像 Mat image = imread("image.jpg", IMREAD_GRAYSCALE); // 创建一个核 Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5)); // 膨胀处理 Mat dilated_image; dilate(image, dilated_image, kernel, Point(-1, -1), 1); // 腐蚀处理 Mat eroded_image; erode(image, eroded_image, kernel, Point(-1, -1), 1); // 显示原图和处理后的图像 imshow("Original Image", image); imshow("Dilated Image", dilated_image); imshow("Eroded Image", eroded_image); waitKey(0); return 0; } ``` 注意,此示例代码假定您已将 OpenCV 库正确地配置为 Visual Studio 项目,并且已将“image.jpg”文件放置在可执行文件所在的目录中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值