Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)

一、 高通滤波

        高通滤波是对图像进行卷积操作,以保留图像中的快速变化部分(如边缘和细节),同时抑 制低频分量(如大面积平坦区域)。

应用场景

  • 边缘检测:提取物体轮廓和边界。
  • 特征提取:用于后续计算机视觉任务(如目标检测)。
  • 图像锐化:增强图像清晰度。

二、高通滤波——索贝尔算子

        索贝尔算子是一种经典的边缘检测算子,通过计算像素梯度,检测图像的水平和垂直边缘。

import cv2# 读取原图
# 使用 OpenCV 读取图像,返回一个 BGR 格式的图像
img = cv2.imread('./images/waiguoren.png')# 将原图转换为灰度图
# 灰度图是处理图像时常用的格式,它可以去除颜色信息,只保留亮度信息
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 计算水平方向的梯度
# 通过索贝尔算子计算水平方向上的变化量,即图像在 X 轴方向上的梯度
grad_x = cv2.Sobel(gray_img, cv2.CV_64F, 1, 0, ksize=3)# 计算垂直方向的梯度
# 同样地,计算图像在 Y 轴方向上的变化量,即图像在 Y 轴方向上的梯度
grad_y = cv2.Sobel(gray_img, cv2.CV_64F, 0, 1, ksize=3)# 计算梯度幅度
# 通过计算水平方向和垂直方向的梯度值的平方和,再开根号,得到每个像素点的梯度幅度
# 这是用来提取边缘信息的,边缘区域的梯度幅度通常较大
magnitude = cv2.magnitude(grad_x, grad_y)
magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)cv2.imshow('img', img)
cv2.imshow('gray_img', gray_img)
cv2.imshow('magnitude', magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、高通滤波——沙尔算子

        沙尔算子是对索贝尔算子的优化版本,它在小窗口(如 3×3)中提供更高的精度。

        索贝尔算子的卷积核比沙尔算子具有更强的边缘检测能力,它在水平方向和垂直方向上采用了不同的权重,更加重视邻近像素的信息。

边缘检测的灵敏度

  • 沙尔算子:由于其权重较为均匀,它对图像的边缘变化较为敏感,但可能对噪声的反应也较强,因此边缘检测的结果可能不如索贝尔算子清晰。

  • 索贝尔算子:由于其加权方式更加注重中心像素及其周围像素的梯度变化,索贝尔算子在噪声较多的情况下能提供更稳定和清晰的边缘检测结果。

应用场景

  • 沙尔算子:适用于较为干净的图像(低噪声环境),由于其结构简单,计算开销较小。

  • 索贝尔算子:在噪声较多或需要更精确边缘检测的图像处理中,索贝尔算子表现更好,常用于实际应用中。

import cv2
# 读取原图
# 使用 OpenCV 读取图像,返回一个 BGR 格式的图像
img = cv2.imread('./images/waiguoren.png')# 将原图转换为灰度图
# 灰度图是处理图像时常用的格式,它可以去除颜色信息,只保留亮度信息
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 计算水平方向的梯度
# 通过索贝尔算子计算水平方向上的变化量,即图像在 X 轴方向上的梯度
grad_x = cv2.Scharr(gray_img, cv2.CV_64F, 1, 0)# 计算垂直方向的梯度
# 同样地,计算图像在 Y 轴方向上的变化量,即图像在 Y 轴方向上的梯度
grad_y = cv2.Scharr(gray_img, cv2.CV_64F, 0, 1)# 计算梯度幅度
# 通过计算水平方向和垂直方向的梯度值的平方和,再开根号,得到每个像素点的梯度幅度
# 这是用来提取边缘信息的,边缘区域的梯度幅度通常较大
magnitude = cv2.magnitude(grad_x, grad_y)
magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)cv2.imshow('img', img)
cv2.imshow('gray_img', gray_img)
cv2.imshow('magnitude', magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、高通滤波——拉普拉斯算子

        拉普拉斯算子是一种二阶微分算子。它的作用是计算图像中像素值的变化率,从而识别图像 中的边缘。

不再以x和y的方向计算,而是以圆方向计算变化率。因此不需要Gx+Gy。

特点

  • 边缘检测:拉普拉斯算子常常用作边缘检测的基础方法之一。

  • 图像增强:拉普拉斯算子有时被用来增强图像细节,去除模糊部分,提高图像的清晰度。

高通滤波器的对比与应用场景

算子

特点

适用场景

索贝尔

结合一阶导数,能检测水平和垂直边缘

边缘检测、特征提取

沙尔

索贝尔的改进版,适合处理高频变化区域,精度更高

精细边缘检测

拉普拉斯

二阶导数算子,检测方向无关的边缘,灵敏度高

图像锐化、边缘增强

 

import cv2
import os# 图片文件夹位置
dog_directory = "./dog"# 遍历文件夹中的所有图片
image_paths = []
for filename in os.listdir(dog_directory):# 获取文件完整路径filepath = os.path.join(dog_directory, filename)# 检查文件是否为图片格式if not filename.lower().endswith(('.png', '.jpg', '.jpeg')):continue# 读取图片img = cv2.imread(filepath)# 将图像转灰度gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#  应用拉普拉斯算子,计算图像方差laplacian = cv2.Laplacian(gray_img, cv2.CV_64F)variance  = laplacian.var()print(f"Image: {filename}, Variance: {variance}")if variance < 300:image_paths.append(filepath)image_paths
Image: 1.png, Variance: 2113.8365566209127
Image: 2.png, Variance: 248.99712459101005
Image: 3.png, Variance: 1420.862992791666
Image: 4.png, Variance: 153.0638792511676
['./dog\\2.png', './dog\\4.png']

五、图像浮雕与特效处理

        图像浮雕特效是仿造浮雕艺术而衍生的处理,它将要呈现的图像突起于石头表面,根据凹凸程度不同形成三维的立体效果。Python绘制浮雕图像是通过勾画图像的轮廓,并降低周围的像素值,从而产生一张具有立体感的浮雕效果图。

5.1、图像浮雕

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

参数:

  • src表示输入图像
  • ddepth表示目标图像所需的深度
  • kernel表示卷积核,一个单通道浮点型矩阵

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 转为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 浮雕
# 第一个参数 输入图像
# 第二个参数 -1 表示输出图像与输入图像具有相同的深度
# 第三个参数 卷积核,浮雕卷积核
# 第四个参数 dst 输出图像,默认是 None
embossed_img = cv2.filter2D(gray_img, -1, np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]]), dst=gray_img)# 显示结果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('embossed_img', embossed_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.2、油画效果

        油画效果使图像看起来像是由油画笔刷绘制的,通常使用平滑化和颜色混合来实现。

cv2.xphoto.oilPainting(src, (size, dyn_ratio))

参数:

  • src:输入图像。

  • (size, dyn_ratio):大小和动态比例,影响油画效果的强度和样式。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 转为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 油画效果
oil_img = cv2.xphoto.oilPainting(img,7,20)# 显示结果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('oil_img', oil_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.3、彩色映射

        彩色映射通过将图像的灰度值映射到不同的颜色范围,创造不同的视觉效果。例如,可以使用伪彩色来增强图像的表现力。

dst = cv2.applyColorMap(src, colormap)

参数:

  • src:灰度图像。

  • colormap:选择的颜色映射类型。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 转为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 彩色映射
color_img = cv2.applyColorMap(img, cv2.COLORMAP_HSV)# 显示结果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('color_img', color_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.4、镜像效果

        镜像效果是通过将图像进行水平或垂直翻转,来创建对称图像的一种方式。

dst = cv2.flip(src, flipCode)

参数:

  • src:输入图像。

  • flipCode:翻转类型。1表示水平翻转,0表示垂直翻转,-1表示水平和垂直都翻转。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 转为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 镜像
flip_img = cv2.flip(img,-1)# 显示结果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('flip_img', flip_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.5、油画效果和浮雕结合

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 转为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 浮雕
embossed_img = cv2.filter2D(gray_img, -1, np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]]), dst=gray_img)
# 油画
combined = cv2.xphoto.oilPainting(embossed_img,7,20)# 显示结果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('combined', combined)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 恢复

RECOVER DATABASE USING BACKUP CONTROLFILE “用备份的控制文件推动数据库恢复”。-- 检查控制文件记录的当前SCN (V$DATABASE) SELECT CURRENT_SCN FROM V$DATABASE; -- 检查数据文件头SCN (V$DATAFILE_HEADER) SELECT FILE#, CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER;-…

京东商品详情SKU数据采集的难点有哪些?

京东商品详情 SKU 数据采集过程中&#xff0c;由于平台的技术防护、数据结构特性及合规性要求&#xff0c;会面临诸多难点&#xff0c;具体如下&#xff1a;一、反爬虫机制的限制京东作为大型电商平台&#xff0c;拥有成熟且严格的反爬虫系统&#xff0c;这是采集时最核心的障碍…

修复手机液晶面板显性横向线性不良定位及相关液晶线路激光修复原理

摘要 手机液晶面板显性横向线性不良严重影响屏幕显示效果&#xff0c;其产生与液晶线路断路、短路或信号传输异常密切相关。精准定位线性不良区域是修复的关键前提&#xff0c;激光修复技术凭借高能量密度与非接触特性&#xff0c;能够有效修复相关液晶线路故障。本文分析显性…

如何解决Spring Boot中@Valid对List校验失效问题

在Spring Boot应用开发中&#xff0c;我们经常需要对传入的请求参数进行校验&#xff0c;以确保数据的合法性和安全性。然而&#xff0c;当我们尝试对列表&#xff08;List&#xff09;类型的参数进行校验时&#xff0c;可能会遇到校验失效的问题。本文将详细探讨这一问题的失效…

云原生环境下部署大语言模型服务:以 DeepSeek 为例的实战教程

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言 随着 DeepSeek、Qwen、ChatGLM 等大语言模型&#xff08;LLM&#xff09;的开放与普及&#xff0c;企业将其私有化部署…

【Spring篇08】:理解自动装配,从spring.factories到.imports剖析

文章目录1. 自动化装配的起点&#xff1a;SpringBootApplication2. 自动化装配的核心机制&#xff1a;EnableAutoConfiguration 和 AutoConfigurationImportSelector3. 自动化配置的注册方式&#xff1a;spring.factories 与 .imports3.1 早期版本&#xff1a;META-INF/spring.…

前置代理重构网络访问的「中转站」

某跨境电商通过前置代理构建账号隔离体系&#xff0c;将亚马逊店铺关联风险降低85%&#xff1b;某企业利用前置代理过滤恶意流量&#xff0c;网络攻击拦截率提升70%。在复杂的网络环境中&#xff0c;前置代理作为客户端与目标服务器之间的「中间枢纽」&#xff0c;正成为跨境访…

乐鑫代理商飞睿科技,2025年AI智能语音助手市场发展趋势与乐鑫芯片解决方案分析

一、市场现状与技术背景进入2025年&#xff0c;AI智能语音助手市场呈现出爆发性增长态势。全球AI应用访问量从2024年初的36亿次激增至76亿次&#xff0c;增幅高达111%&#xff0c;其中语音交互类产品贡献了显著份额。在企业市场&#xff0c;语音技术已从“增值服务”转变为不可…

App爬虫工具篇-Appium安装

之前在另外一篇文章App爬虫工具篇-mitmproxy简单介绍了利用mitmproxy进行接口拦截来获取接口数据。但是很多软件现在都会对相关接口进行加密。如以下我用mitmproxy拦截到接口流量样例: {"raw_data": "EXMcAezXPq/MRC1m2mJIG/EQLisaahfpjPTj9svrxe6yLI8mZTvW4+…

容器与 Kubernetes 基本概念与架构

文章目录 1. 典型环境层次结构2. Kubernetes 生态三大类2.1 核心组件2.2 集群管理工具2.3 生态辅助工具2.4 资源管理关系 3. Docker 容器技术与实践3.1 镜像拉取加速3.2 认证与登录3.3 常用命令3.4 存储挂载方式对比3.5 docker-compose 启动3.6 容器化应用部署示例 4. kind 快速…

Ajax和Axios的初步学习

Ajax 一、什么是 Ajax&#xff1f; Ajax (Asynchronous JavaScript and XML) 是一种无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过在后台与服务器进行少量数据交换&#xff0c;Ajax 可以使网页实现异步更新。 主要特性&#xff1a; 异步性 (Asynch…

C#指针:解锁内存操作的底层密码

C#指针&#xff1a;解锁内存操作的底层密码 在 C# 的世界里&#xff0c;我们习惯了托管代码带来的安全与便捷 —— 垃圾回收器自动管理内存&#xff0c;类型系统严格检查数据操作&#xff0c;就像在精心维护的花园中漫步&#xff0c;无需担心杂草与荆棘。但当性能成为关键瓶颈…

永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎

近日&#xff0c;在备受业界瞩目的年度商业智能领域权威评选中&#xff0c;永洪科技凭借卓越的技术实力、深度的客户价值创造能力与前瞻的行业洞察&#xff0c;成功斩获“2025商业智能品牌影响力奖”。这一奖项不仅是对永洪科技市场地位与品牌声量的高度认可&#xff0c;更是对…

在SSM+vue项目中上传表单数据和文件

从前端向后端发送multipart/form-data 类型数据&#xff08;主要用于文件上传或表单提交&#xff09;如发送如下信息&#xff1a;前端代码vue文件&#xff1a;&#xff08;配置了服务器代理&#xff09;<template><div class"content"><el-form :mode…

Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归

✅ 今日目标 理解分类&#xff08;Classification&#xff09;与回归&#xff08;Regression&#xff09;的本质区别掌握两种任务的典型使用场景学会根据任务类型选择合适的模型了解每类模型对应的评估指标 &#x1f4d8; 一、监督学习的两大任务类型 任务类型输出结果典型问…

RPC--自定义注解注册发布服务

自定义的三个注解1、RpcReference这个注解用于修饰类的某个字段&#xff0c;表示这个字段是远程调用的引用下面详细解释下这个字段的定义Document表示这个注解应该被javadoc文档工具记录&#xff0c;生成API文档时使用了该注解的地方会被显示出来Retention表示这个注解的声明周…

Web 3D可视化引擎HOOPS Communicator,高效赋能工业级应用开发!

在数字化转型加速的今天&#xff0c;企业面临着前所未有的挑战——如何高效管理跨平台的设计数据、提升团队协作效率&#xff0c;并加快产品上市速度。HOOPS Communicator作为一款高性能的3D可视化与共享平台&#xff0c;凭借其强大的兼容性、先进的3D渲染引擎和无缝的协作功能…

OceanBase数据库迁移工具介绍和部署

OceanBase数据库迁移工具介绍和部署核心组件迁移支持部署要求单节点部署查看日志OceanBase 迁移服务&#xff08;OceanBase Migration Service, OMS&#xff09;是OceanBase数据库提供的一种支持同构或异构数据源与OceanBase数据库之间进行数据交互的服务&#xff0c;具备在线迁…

栈与队列:算法基础的核心差异

理解栈和队列的异同对打好算法基础太重要了&#xff01;它们都是编程和算法中无处不在的线性数据结构&#xff0c;核心区别在于操作数据的顺序。下面我来帮大家清晰梳理它们的异同点&#xff1a;一、相同点都是线性数据结构&#xff1a;数据元素之间逻辑上呈现“一个接一个”的…

HCIA-生成数协议(STP)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 ​ 本篇笔记是根据B站上的视频教程整理而成&#xff0c;感谢UP主的精彩讲解&#xff01;如果需要了解更多细节&#xff0c;可以参考以下视频&#xf…