Day24 opencv预处理

图像滤波

图像滤波是通过滤波器得到另一个图像的过程。在深度学习中,滤波器又称为卷积核,滤波的过程称为卷积。卷积核的大小通常为奇数,如3x3、5x5、7x7等,以保证锚点在中间,防止位置发生偏移。锚点是指卷积核的中心点,卷积核越大,看到的信息越多,提取的特征越好,但计算量也越大。

图像平滑处理

图像噪声是指存在于图像数据中的不必要的或多余的干扰信息,妨碍了人们通过视觉器官对接收信息的理解。图像噪声可以分为外部噪声和内部噪声,外部噪声由外部环境因素引起,如光线变化、电磁干扰等,内部噪声由设备本身的因素引起,如传感器噪声、电路噪声等。图像噪声的产生原因包括传感器和电路产生的噪声、长时间曝光、格式压缩、感光元件特性等。

为了减少图像中的噪声,可以采取一些专业的图像处理技术,如图像降噪。常见的图像平滑处理方法包括高斯滤波、中值滤波和双边滤波。

高斯滤波

高斯滤波是图像处理中常用的一种平滑滤波方法,主要作用是去除图像中的噪声,并减少图像细节,以实现图像的平滑处理。高斯滤波的原理是利用高斯函数对图像进行加权平均,通过这种方式,高斯滤波可以有效地减少图像中的噪声,并保留图像的整体特征。高斯滤波的使用场景包括去除高斯噪声、模糊处理、提取大致轮廓等。

cv2.GaussianBlur() 是 OpenCV 库中用于图像模糊处理的函数之一。该函数可以对图像进行高斯模糊处理,即在每个像素周围使用高斯核来加权平均计算像素值,从而达到模糊效果。

cv2.GaussianBlur(src, ksize, sigmaX)

  • src:输入图像。

  • ksize:高斯核的大小,通常以元组 (width, height) 的形式指定。

  • sigmaX:高斯核在 x 方向上的标准差。

双边滤波

双边滤波是图像处理中常用的一种平滑滤波方法,它可以同时平滑图像并保留边缘信息。双边滤波通过考虑像素点的空间距离和灰度差异,实现了对图像进行平滑的同时,尽量保留图像的边缘细节。双边滤波适用于各种类型的图像,特别适合于那些需要平滑处理但仍保留边缘细节的图像,例如人脸识别、图像增强和图像去噪等领域。

双边滤波适用于各种类型的图像,特别适合于那些需要平滑处理但仍保留边缘细节的图像,例如人脸识别、图像增强和图像去噪等领域。

cv2.bilateralFilter() 是 OpenCV 库中用于图像滤波处理的函数之一。该函数可以对图像进行双边滤波处理,即在保持边缘清晰的同时,对图像进行平滑处理。

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace) 函数接受四个参数:

  • src:输入图像。

  • d:滤波器的直径,用于指定在每个像素周围考虑的像素邻域大小。一般为正奇数

  • sigmaColor:颜色空间的标准差,用于控制滤波过程中颜色相似性的权重。较大的值意味着更宽松的颜色相似性条件。

  • 大 sigmaColor 值:当 sigmaColor 较大时,颜色差异较大的像素也会被赋予较大的权重,这意味着滤波器会在更大范围内进行平滑处理,导致图像细节的丢失较多。

  • 小 sigmaColor 值:当 sigmaColor 较小时,只有颜色差异较小的像素会被赋予较大的权重,滤波器主要在颜色相似的区域内进行平滑处理,这样可以更好地保留边缘和细节

  • sigmaSpace:坐标空间的标准差,用于控制滤波过程中空间相似性的权重。较大的值意味着更宽松的空间相似性条件。

  • 大 sigmaSpace 值:当 sigmaSpace 较大时,空间上距离较远的像素也会被赋予较大的权重,这意味着滤波器会在更大的空间范围内进行平滑处理,导致图像的局部细节被进一步平滑。

  • 小 sigmaSpace 值:当 sigmaSpace 较小时,只有空间上距离较近的像素会被赋予较大的权重,滤波器主要在局部范围内进行平滑处理,这样可以更好地保留局部细节和边缘信息 ​

中值滤波

中值滤波是图像处理中常用的一种平滑滤波方法,其主要作用是去除图像中的胡椒噪声或其他类型的脉冲噪声。中值滤波的原理是将每个像素点周围的邻域像素按照灰度值大小进行排序,然后取中间值作为该像素点的输出值。中值滤波适用于各种类型的图像,特别适合于那些受到椒盐噪声干扰的图像。

cv2.medianBlur()是OpenCV中的一个函数,用于对图像进行中值滤波处理。中值滤波是一种常见的图像处理技术,可用于去除图像中的椒盐噪声或斑点噪声。这个函数的语法如下:

 cv2.medianBlur(src, ksize)

其中:

  • src 是输入的图像。

  • ksize 是用于中值滤波的孔径大小,必须是大于1的奇数,例如3、5、7等。

import cv2
img = cv2.imread("images/hujiao.png")

# 对图像进行高斯模糊处理
blurred_image = cv2.medianBlur(img,5)

# 显示原始图像和滤波后的图像

cv2.imshow('old Image', img)
cv2.imshow('new Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像边缘检测

图像边缘检测是物体与背景、物体与物体之间的边界检测,对于图像分割、特征提取等任务非常重要。图像边缘蕴含了丰富的信息,如形状、方向、纹理等,这些信息对于后续的图像处理和分析非常重要。通过边缘检测,可以大幅减少数据量,并且剔除可以认为不相关的信息,保留了图像重要的结构属性。

Canny边缘检测

Canny边缘检测广泛应用于图像处理、计算机视觉和机器学习中的物体识别、图像分割等任务。Canny边缘检测算法可以有效地提取图像中的边缘,通过设置低阈值和高阈值来识别可能的边缘像素和强烈的边缘像素,从而减少由于噪声引起的虚假边缘。

函数语法

edges = cv2.Canny(image, threshold1, threshold2)

参数

  • image: 输入的灰度图像。

  • threshold1: 第一个阈值,用于边缘检测的低阈值。

  • threshold2: 第二个阈值,用于边缘检测的高阈值。

  1. 低阈值

    • 低阈值用来识别可能的边缘像素。如果一个像素的梯度值大于低阈值,那么这个像素可能会被认为是边缘的一部分。

    • 但是,单独依靠低阈值来识别边缘是不够的,因为它可能会导致很多虚假的边缘被识别出来,特别是那些由于噪声引起的边缘。

  2. 高阈值

    • 高阈值用于识别强烈的边缘像素。如果一个像素的梯度值大于高阈值,那么这个像素几乎可以肯定是边缘的一部分。

    • 高阈值的存在可以有效地减少由于噪声引起的虚假边缘

返回值

  • edges: 返回检测到的边缘图像,边缘部分为白色,其他部分为黑色。

图像形态学操作

图像形态学操作是一类基于形状的图像处理技术,主要用于提取图像中的有用特征,如边界检测、噪声去除等。常见的形态学操作包括腐蚀、膨胀、开运算、闭运算、梯度、顶帽和黑帽等。

腐蚀

腐蚀操作会减少图像中白色区域的大小,常用于消除小的白色噪声点。腐蚀的基本思想是,如果一个结构元素完全包含在前景物体内部,则该结构元素对应的输出图像位置的值为1,否则为0。

函数:

eroded = cv2.erode(src, kernel, dst,iterations=1)

参数说明

  • src: 输入图像。

  • kernel: 结构元素,用于定义腐蚀操作的方式。是一个矩阵结构数据

  • dst (可选): 输出图像。如果未提供,则会自动创建一个新的图像。

  • iterations (可选): 腐蚀操作的迭代次数,默认为1

迭代次数的影响

  • 迭代次数iterations 参数控制腐蚀操作的迭代次数。增加迭代次数会使腐蚀效果更加明显,但也会导致前景物体变得更小

膨胀

膨胀操作与腐蚀相反,它会增加图像中白色区域的大小,常用于填补前景物体中的小洞或扩大前景物体的边界。

函数:

dilated = cv2.dilate(src, kernel, iterations=1)

参数说明

  • src: 输入图像。

  • kernel: 结构元素,用于定义腐蚀操作的方式。是一个矩阵结构数据

  • dst (可选): 输出图像。如果未提供,则会自动创建一个新的图像。

  • iterations (可选): 迭代操作的迭代次数,默认为1

开运算

开运算是先腐蚀后膨胀的过程,常用于去除小的物体、平滑较大的物体边界以及填充细长的突出部分。

函数:

opened = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)

参数说明

  • src: 输入图像。

  • op

    : 形态学操作的类型,可以是以下几种之一:

    • cv2.MORPH_OPEN:开运算

    • cv2.MORPH_CLOSE:闭运算

    • cv2.MORPH_GRADIENT:形态学梯度

    • cv2.MORPH_TOPHAT:顶帽

    • cv2.MORPH_BLACKHAT:黑帽

  • kernel: 结构元素,用于定义形态学操作的方式。可以通过 cv2.getStructuringElement 函数获得

闭运算

闭运算是先膨胀后腐蚀的过程,常用于填充前景物体中的小洞,平滑较大物体的边界以及连接邻近的物体。

函数:

closed = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)

形态学梯度

形态学梯度是通过计算膨胀后的图像与腐蚀后的图像之间的差值来得到的,可以突出物体的边缘。

顶帽

顶帽变换是原图像与开运算结果的差值,用于获取图像中的亮细节。

tophat = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)

黑帽

黑帽变换是闭运算结果与原图像的差值,用于获取图像中的暗细节。

blackhat = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7851.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

编程爱好者的福音:实用技巧与教程

引言 你是否曾经因为代码无法正常运行而感到挫败?或者在面对一行行复杂的代码时,不知道从何下手?编程,这项充满挑战与创造力的技能,往往让人既爱又恨。无论你是刚刚入门的初学者,还是已经具备一定经验的开发…

了解bootstrap改造asp.net core MVC的样式模板

我们都知道,在使用默认的asp.net core MVC模板建立项目的时候,里面的样式是已经事先被写好了的。一般来说都在css目录下的site.css和bootstrap.css及下面的bootstrap.min.css中。我们打开bootstrap这些样式文件,里面有大量的样式类的定义&…

通过使用 FFmpeg 提取某站视频 MV 中的音频为 MP3

无论是为了个人收藏、制作播客还是作为背景音乐,将视频中的音频提取出来都是一个非常实用的技能。本教程中简鹿办公将介绍两种方法来实现这一目标:一种是通过命令行工具 FFmpeg,另一种是使用图形界面工具 - 简鹿音频格式转换器。 使用 FFmpeg…

探秘国际数字影像产业园:数字化转型之路

数字化园区的概念正日益受到全球瞩目,这不仅是科技进步的必然产物,更是现代经济发展的迫切需求。对于国际数字影像产业园而言,打造数字化园区意味着通过尖端科技手段,全面提升园区的管理效率、服务质量及入驻企业和居民的生活体验…

外包干了2年,快要废了。。

先说一下自己的情况,普通本科,在外包干了2年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会让一…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议,2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下,ITU-R WP 5D#35e远程会议宣布3GPP 5G技术(含NB-IoT)满足IMT-2020 5G技…

【C++打怪之路Lv14】- “多态“篇

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…

Github 2024-11-05 Python开源项目日报Top10

根据Github Trendings的统计,今日(2024-11-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HTML项目1TypeScript项目1系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次…

如何从 Android 图库中恢复误删除的照片

如果您正在阅读这篇文章,那么您肯定意外地从 Android 设备中删除了照片。并且您正在寻找一种简单的方法来恢复 Android 图库中已删除的照片。 从图库恢复已删除的照片 随着技术的进步,现在使用单个设备(即 Android 手机)&#xf…

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天,智能家居系统已经走进了千家万户,并逐渐成为现代生活的一部份。与此同时,一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板,已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…

人工智能:重塑未来的力量

华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 实战项目访问:http://javapub.net.cn/ 人工智能技术的未来:变革与适应 引言 随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。从医疗行业的病例诊断到企业…

3D看车如何实现?有哪些功能特点和优势?

3D看车是一种创新的汽车展示方式,它基于网络世界,融合了三维建模与虚拟现实技术,为消费者带来前所未有的真实、立体观车体验。以下是对3D看车的详细解释: 一、3D看车的实现方式 高精度三维建模: 通过高精度三维建模…

消息队列的测试点

消息队列的测试点 一、常用的消息队列产品1、挑战性问题 二、kafka简介三、消息的生产四、消息的存储五、Kafka的特性六、kafka测试要点 一、常用的消息队列产品 基于内存的消息队列 RabbitMQ:适用于处理高并发场景,广泛用于即时消息传递RabbitMQ&…

web实操1——只使用tomcat发布网站

安装tomcat 下载 肯定是去官网: http://tomcat.apache.org/ 下载之后,解压: !!解压后: logs日志:就是一些输出,输到文本里。 temp:一些临时文件(不用管) webapps:放网站的 work&…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏第二个BOSS燥郁的毛里克 1.导入素材和制作相关动画1.5处理玩家受到战吼相关行为逻辑处理2.制作相应的行为控制和生命系统管理3.制作战斗场景和战斗…

HarmonyOS开发 - 餐饮APP中多门店多窗口打开实例补充

specified启动模式为指定实例模式,有一些特殊场景,例如多门店应用中每次打开一个门店都希望能新建一个门店实例,而重复打开同一个门店都是同一门店实例。 此篇为餐饮APP中多门店实例的补充内容,以解决同一门店多次点击重复创建新窗…

FreeRTOS 13:FreeRTOS队列的读原理

队列读取消息 FreeRTOS 中用于从队列中读取消息的 API 函数如下表所示: xQueueReceive BaseType_t xQueueReceive( QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait ) {BaseType_t xEntryTimeSet pdFALSE;TimeOut_t xTimeOut;Queue_t * con…

山东路远生态科技有限公司竣工投产仪式暨产品发布会圆满举行

第二十届三中全会于2024年7月15日至18日在北京举行。全会审议通过了《关于进一步全面深化改革、推进中国式现代化的决定》。其中提到,“要健全因地制宜发展新质生产力体制机制”。 新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生的当代先进生产力…

Vue + Vant Picker实现省市区三级联动

一、picker选择器的数据由columns属性控制,columns中有几个元素就代表该选择器有多少级,通过change方法来给对应列赋值 this.columns [{values: citys,className: "column1",defaultIndex: 0,flex: 1, //控制每列的宽度},{values: citys[0].…

[java][高级]FilterListenerAjax

Filter&Listener&Ajax 目标: 能够使用 Filter 完成登陆状态校验功能 能够使用 axios 发送 ajax 请求 熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换 1,Filter 1.1 Filter概述 Filter 表示过滤器&#…