当前位置: 首页 > news >正文

OpenCV 计算机视觉基础(二):图像边界填充与阈值处理详解

一、为什么需要边界填充

在图像处理中,卷积操作是核心处理手段之一。

例如,使用一个 3×3 的滤波器:

### # # ###

当处理图像边缘像素时,会遇到一个问题:边缘像素周围没有完整的邻域像素可供卷积核计算。因此,为了确保卷积操作能够正常进行,需要对图像外围进行边界填充(padding)。


二、OpenCV 边界填充

OpenCV 提供了专门的边界填充函数:

cv2.copyMakeBorder()

该函数的基本格式如下:

cv2.copyMakeBorder( src, top, bottom, left, right, borderType )

参数说明:

参数说明
src输入图像(原图)
top顶部扩充像素数
bottom底部扩充像素数
left左侧扩充像素数
right右侧扩充像素数
borderType填充方式(边界类型)

三、常见边界填充方式

1. 常量填充(BORDER_CONSTANT)

cv2.BORDER_CONSTANT

使用固定颜色填充边界区域。

示例代码:

constant = cv2.copyMakeBorder( image, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=[229, 25, 80] )

效果:图像外围全部变为指定的颜色(如 [229, 25, 80] 表示的 BGR 颜色)。


2. 镜像填充(BORDER_REFLECT)

cv2.BORDER_REFLECT

原图边缘像素序列:

abcdef

扩充后的序列:

fedcbabcdef

特点:复制边界像素并进行镜像对称,边界像素本身会被重复使用。


3. 反射填充(BORDER_REFLECT101)

cv2.BORDER_REFLECT101

与 BORDER_REFLECT 类似,都是镜像填充。

主要区别:BORDER_REFLECT101 不会重复边界像素,而是从边界像素的相邻像素开始反射,通常能获得更平滑的边界效果。


4. 复制填充(BORDER_REPLICATE)

cv2.BORDER_REPLICATE

复制最边缘的像素值来填充边界。

例如,原图边缘序列为 "abcde",填充后变为:

aaaa|abcde|eeeee

特点:简单高效,但可能在边界处产生明显的条纹效应。


5. 环绕填充(BORDER_WRAP)

cv2.BORDER_WRAP

循环复制图像内容来填充边界。

例如,原图序列为 "abcde",填充后变为:

abcdeabcde

特点:适用于周期性纹理的图像,能保持纹理的连续性。


四、阈值处理

4.1 什么是阈值处理

阈值处理(Thresholding)是一种基本的图像分割技术,根据像素值与预设阈值的比较结果,将图像转换为不同的区域。

常用于以下场景:

  • 图像分割:将前景与背景分离
  • 文字识别:增强文档图像中的文字区域
  • 目标提取:从复杂背景中提取特定目标

五、threshold 函数

OpenCV 中的阈值处理函数格式如下:

ret, dst = cv2.threshold( src, thresh, maxval, type )

参数详细说明:

参数作用
src输入图像(通常为灰度图)
thresh阈值(临界值)
maxval最大值(当像素值满足条件时赋予的值)
type阈值类型(决定如何处理像素)

六、五种阈值类型

1. 二值化(THRESH_BINARY)

cv2.THRESH_BINARY

处理规则:

条件结果
像素值 > 阈值设为 maxval(通常为 255)
其他情况设为 0

2. 反二值化(THRESH_BINARY_INV)

cv2.THRESH_BINARY_INV

处理规则与二值化相反:像素值大于阈值时设为 0,否则设为 maxval。


3. 截断(THRESH_TRUNC)

cv2.THRESH_TRUNC

当像素值超过阈值时,将其截断为阈值;否则保持原值不变。

例如:阈值为 175,像素值 220 会被截断为 175。


4. 保留大值(THRESH_TOZERO)

cv2.THRESH_TOZERO

处理规则:

大于阈值的像素值保持不变,小于等于阈值的像素值设为 0。


5. 保留小值(THRESH_TOZERO_INV)

cv2.THRESH_TOZERO_INV

处理规则:

小于阈值的像素值保持不变,大于等于阈值的像素值设为 0。


七、实例代码

gray = cv2.imread( 'wx.jpg', cv2.IMREAD_GRAYSCALE ) ret, binary = cv2.threshold( gray, 175, 255, cv2.THRESH_BINARY )

实现效果:将灰度图像转换为黑白二值图像,阈值设为 175,大于 175 的像素变为白色(255),其余变为黑色(0)。


八、总结

本文介绍了 OpenCV 中图像处理的两个重要技术:

技术/函数主要作用
copyMakeBorder扩充图像边缘,支持多种边界填充方式
BORDER_CONSTANT使用固定颜色填充边界
BORDER_REFLECT镜像填充边界像素
BORDER_REPLICATE复制最边缘像素填充
threshold图像分割与二值化处理
二值化(THRESH_BINARY)将图像转换为黑白二值图像

掌握这些基础技术对于后续的图像处理、计算机视觉任务至关重要。

http://www.jsqmd.com/news/1317794/

相关文章:

  • IL-21信号通路与抗体融合蛋白的免疫治疗应用
  • SQL注入实战:sqli-labs-Less-7文件导出技术解析
  • Flask与Django协同开发旅游景区酒店服务平台实战
  • 有关单片机的阻塞与非阻塞
  • 基于LSTM的股票预测系统设计与实现
  • Unity游戏模组开发入门:BepInEx框架原理与Harmony实战指南
  • 2026年8月广州防水涂料加盟/防水涂料市级代理全国知名公司_广州雷邦仕化工建材有限公司 - 行业平台推荐
  • AI提示词管理平台:版本控制与智能优化实践
  • 2026 年现阶段,托克逊正规的50*150镀锌椭圆管工厂哪个好,花200块装的这玩意儿,居然比普通圆管耐用3倍还没废!-成光钢铁 - 企业官方推荐【认证】
  • MP4音频帧定位与提取
  • 回测排队两小时还不能取消:用作业状态机验收量化软件
  • SpringBoot跨境电商系统开发实战与毕业设计指南
  • C语言秋招攻略:从零基础到斩获大厂offer
  • 2026 年新发布:汉川口碑好的全自动搅拌夹层锅加工厂推荐几家,用了它,餐饮后厨再也不用熬到手腕发麻了 - 鉴选官
  • Vue 3组件通信与复用核心技术解析
  • 2026年8月陕西彩釉玻璃/陕西u型弯玻璃公司推荐盘点_陕西黑马众诚玻璃有限公司 - 品牌宣传支持者
  • 抖音批量下载器终极指南:5分钟学会高效保存抖音内容
  • 本地部署AI编码助手:平衡代码生成速度与质量的最佳实践
  • Unity Rigidbody物理系统深度解析:从核心属性到高级应用实战
  • WarcraftHelper魔兽助手:解决经典魔兽争霸在现代电脑上运行问题的完整指南
  • 构建企业级AI热点预警系统(含开源工具链+告警阈值黄金公式)
  • SpringBoot社区疫情防控系统开发实践
  • 锂电池热管理流热耦合仿真技术与工程实践
  • 2026 年当下,盐湖诚信的学校墙面冰火板定制厂家怎么联系,你给学校选墙面材料,居然没听过这种能抗能打的宝藏?-耀晖木饰面 - 行业甄选官
  • 学习曲线-过拟合和欠拟合要做什么以及原因
  • 2026.8.02-初入ros+slam+opencv第七天-C++服务端开发
  • 2026年成都郫都区中高端汽车维修怎么选?本地专业机构推荐与行业观察 - 优质品牌商家
  • UEditor实现Word图片批量上传技术方案
  • Greasy Fork:3分钟解锁浏览器超能力的终极用户脚本平台
  • 2026 年新发布:甘肃专业的停车场膜结构车棚生产厂家找哪家,停在户外的车少遭损?这玩意儿居然能让停车场省出近三成维护成本。 - 企业信息推荐【官方】