图像的腐蚀与膨胀

基于OpenMV平台进行开发

运算流程:

1.图像分割

2.图像腐蚀

3.图像膨胀

实验结果:

图像腐蚀结果:


图像膨胀结果:


实验代码:

import pyb, sensor, image

sensor.reset()
sensor.set_framesize(sensor.QVGA)

#设置阈值
grayscale_thres = (170, 255)

while(True):

    sensor.set_pixformat(sensor.GRAYSCALE)

    img = sensor.snapshot()
    #先对图像进行分割,二值化,将在阈值内的区域变为白色,阈值外区域变为黑色
    img.binary([grayscale_thres])
    #对图像边缘进行侵蚀,侵蚀函数erode(size, threshold=Auto),size为
    #kernal的大小,去除边缘相邻处多余的点。threshold用来设置去除相邻点的个数,
    #threshold数值越大,被侵蚀掉的边缘点越多,边缘旁边白色杂点少;数值越小,
    #被侵蚀掉的边缘点越少,边缘旁边的白色杂点越多。
    img.erode(2)
    #对图像边缘进行膨胀,膨胀函数image.dilate(size, threshold=Auto),size为
    #kernal的大小,使边缘膨胀。threshold用来设置去除相邻点的个数,threshold数值
    #越大,边缘越膨胀;
    #数值越小,边缘膨胀的小。
    img.dilate(2)


### OpenMV腐蚀膨胀操作的用法 在OpenMV环境中,腐蚀(Erode)和膨胀(Dilate)操作通常用于预处理二值图像,以便去除噪声并增强目标对象的形状特性。这两种操作可以通过循环迭代多次应用,从而达到更优的效果。 以下是具体的实现方式以及代码示例: #### 实现原理 腐蚀操作会移除图像中小于结构元素尺寸的部分,而膨胀操作则会使目标区域扩大。两者常被组合使用以优化二值图像的质量[^3]。 #### 示例代码 下面是一个完整的代码片段,展示如何在OpenMV中执行腐蚀膨胀操作: ```python import sensor, image, time # 初始化摄像头传感器 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time=2000) while True: img = sensor.snapshot() # 获取一帧图像 # 将图像转换为灰度图并进行二值化处理 img.binary([(10, 100, -128, 127, -128, 127)]) # 自定义阈值范围 # 执行腐蚀操作 for i in range(2): # 迭代两次 img.erode(1) # 参数表示每次侵蚀的程度 # 执行膨胀操作 for j in range(3): # 迭代三次 img.dilate(3) # 参数表示每次扩张的程度 # 显示最终结果 img.draw_string(10, 10, "Processed Image", color=(255, 255, 255)) print("Image processed successfully.") ``` 上述代码展示了如何通过`img.erode()`和`img.dilate()`函数分别完成腐蚀膨胀的操作。其中,参数控制了单次操作的影响程度,而嵌套的循环决定了重复操作的次数。 --- ### 图像处理中的注意事项 为了获得更好的效果,可以根据实际需求调整腐蚀膨胀的具体参数。例如,在某些场景下可能需要增加或减少迭代次数来平衡去噪能力和保留细节的能力。 此外,如果希望进一步提升性能,还可以结合其他技术如高斯滤波器平滑原始图像后再做形态学变换[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值