《数字图像处理-OpenCV/Python》连载(33)使用掩模图像控制处理区域

**本书京东优惠购书链接:https://item.jd.com/14098452.html\*\*

**本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html\*\*

第 5 章 图像的算术运算

在OpenCV中,图像是以Numpy数组格式存储的,图像的算术运算可以使用OpenCV函数实现,也可以直接使用Numpy矩阵实现。但是,OpenCV函数对结果进行了饱和处理,可以避免数据溢出,而且使用OpenCV函数运算速度更快。

<br>

本章内容概要

  • 学习并比较使用OpenCV与Numpy矩阵的加法、减法、乘法和除法。
  • 学习图像的按位操作。
  • 介绍掩模图像,理解掩模图像在图像处理中的作用。
  • 介绍积分图像,理解积分图像的原理,实现快速模糊处理。

5.2 使用掩模图像控制处理区域

图像掩模,也称"掩膜",是指用特定的掩模图像或掩模函数对目标图像进行覆盖或遮挡,以控制图像处理区域或处理过程,常用于结构特征区域的处理。

用来遮蔽的图像或函数,称为掩模、掩像、模板或遮罩。掩模图像是单通道二值图像,显示为黑白两种颜色。黑色遮蔽区域的值为0,白色非遮蔽区域的值为1或255,也被称为窗口、开窗区域。

在OpenCV中,很多处理函数都允许使用掩模图像控制处理区域,即只对掩模图像中数值为1(或255)的窗口区域进行处理,而对数值为0的遮蔽区域不做处理。

例如,使用函数cv.add进行加法运算,可以使用掩模图像实现掩模加法,只对掩模图像中像素值为255的白色窗口区域进行处理,输出为加法运算的值;对掩模图像中像素值为0的黑色遮蔽区域不做处理,输出图像的对应位置的值为0(黑色)。

注意问题

(1) 掩模图像是单通道二值图像,遮蔽区域为0(黑色),窗口区域为255(白色)。

(2) 需要特别注意的是:如果以非二值的单通道图像作为掩模图像,程序一般不会报错,但处理结果可能发生错误,通常会将非0值都视为1。

(3) 掩模图像必须与加法运算的输入图像src1的尺寸相同。

【例程0502】掩模图像的生成和图像的掩模加法

本例程包括掩模图像的生成和图像的掩模加法。

python 复制代码
# 【0502】掩模图像的生成和图像的掩模加法
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__':
    img1 = cv.imread("../images/Lena.tif")  # 读取彩色图像(BGR)
    img2 = cv.imread("../images/Fig0301.png")  # 读取彩色图像(BGR)
    h, w = img1.shape[:2]
    img3 = cv.resize(img2, (w,h))  # 调整图像大小与 img1 相同
    print(img1.shape, img2.shape, img3.shape)
    imgAddCV = cv.add(img1, img3)  # 图像加法 (饱和运算)

    # 掩模加法,矩形掩模图像
    maskRec = np.zeros(img1.shape[:2], np.uint8)  # 生成黑色模板
    xmin, ymin, w, h = 170, 190, 200, 200  # 矩形 ROI 参数(ymin:ymin+h, xmin:xmin+w)
    maskRec[ymin:ymin+h, xmin:xmin+w] = 255  # 生成矩形掩模图像,ROI 为白色
    imgAddRec = cv.add(img1, img3, mask=maskRec)  # 掩模加法

    # 掩模加法,圆形掩模图像
    maskCir = np.zeros(img1.shape[:2], np.uint8)  # 生成黑色模板
    cv.circle(maskCir, (280,280), 120, 255, -1)  # 生成圆形掩模图像
    imgAddCir = cv.add(img1, img3, mask=maskCir)  # 掩模加法

    plt.figure(figsize=(9, 6))
    plt.subplot(231), plt.title("1. Original"), plt.axis('off')
    plt.imshow(cv.cvtColor(img1, cv.COLOR_BGR2RGB))
    plt.subplot(232), plt.title("2. Rectangle mask"), plt.axis('off')

程序说明:

运行结果,带掩模图像的加法运算如图5-2所示。

(1) 图5-2(2)和图5-2(5)所示为单通道二值掩模图像,背景为黑色,开窗为白色。图5-2(2)通过切片得到矩形窗口,图5-2(5)通过绘制圆形填充图形得到圆形窗口。

(2) 图5-2(4)所示为无掩模图像的饱和加法运算结果,图5-2(3)所示为以图5-2(2)为掩模图像的饱和加法运算结果,图5-2(6)所示为以图5-2(5)为掩模图像的饱和加法运算结果。带有掩模图像的加法运算,只会对掩模图像的开窗区域进行运算处理,对没有开窗的遮蔽区域不进行处理,输出值为0(黑色)。

图5-2 带掩模图像的加法运算

<br>

版权声明:

youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/134014675)

Copyright 2023 youcans, XUPT

Crated:2023-10-31

欢迎关注本书CSDN独家连载专栏

**《数字图像处理-OpenCV/Python》连载: https://blog.csdn.net/youcans/category_12418787.html\*\*

相关推荐
懒大王爱吃狼34 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
浮生如梦_3 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃6 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
Eric.Lee20218 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
一个通信老学姐9 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
其实吧39 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽9 小时前
【Pytorch】基本语法
人工智能·pytorch·python