python图像处理 ——图像锐化

python图像处理 ——图像锐化

  • 前言
  • 一、原理
  • 二、 空间域锐化滤波
    • 1.拉普拉斯算子(Laplacian)
    • 2.罗伯茨算子(Roberts)
    • 3.Sobel算子
    • 4.Prewitt算子
    • 5.Scharr算子
  • 三、实验对比

前言

由于收集图像数据的器件或传输图像的通道存在一些质量缺陷,或者受其他外界因素的影响,使得图像存在模糊和有噪声的情况,从而影响到图像识别工作的开展。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。

一、原理

图像锐化是指增强图像的边缘和细节信息,使图像看起来更加清晰和生动。其原理主要是减小图像中像素值相对差异较小的区域,增加像素值相对差异较大的区域。一般而言,锐化处理的方法主要分为两类:增强高频信息和抑制低频信息

增强高频信息的方法主要是通过使用高通滤波器来实现,例如使用SobelLaplacian等滤波器。这些滤波器可以增强图像中的高频信息,即边缘和细节信息,使其更加明显和突出。

抑制低频信息的方法主要是通过使用平滑滤波器来实现,例如使用均值高斯等滤波器。这些滤波器可以减小图像中的低频信息,使其更加平滑和模糊,从而突出高频信息。

二、 空间域锐化滤波

图像模糊通过平滑(加权平均)来实现,类似于积分运算。图像锐化则通过微分运算(有限差分)实现,使用一阶微分或二阶微分都可以得到图像灰度的变化值。

图像锐化的目的是增强图像的灰度跳变部分,使模糊的图像变得清晰。图像锐化也称为高通滤波,通过和增强高频,衰减和抑制低频。图像锐化常用于电子印刷、医学成像和工业检测。

恒定灰度区域,一阶导数为零,二阶导数为零;
1.灰度台阶或斜坡起点区域,一阶导数非零,,二阶导数非零;
2.灰度斜坡区域,一阶导数非零,二阶导数为零。
3.图像梯度提取方法简单直接,能够有效的描述图像的原始状态,因此发展出多种图像梯度算子:Roberts、Prewitt、Sobel、Laplacian、Scharr。

1.拉普拉斯算子(Laplacian)

Laplacian算子是一种用于图像处理和计算机视觉的数学运算符。它是二阶导数算子的一种,可以用于检测图像中的边缘和纹理等特征。在离散形式下,Laplacian算子可以表示为:

Δ f ( x , y ) = f ( x − 1 , y ) + f ( x + 1 , y ) + f ( x , y − 1 ) + f ( x , y + 1 ) − 4 f ( x , y ) \Delta f(x,y) = f(x-1,y) + f(x+1,y) + f(x,y-1) + f(x,y+1) - 4f(x,y) Δf(x,y)=f(x1,y)+f(x+1,y)+f(x,y1)+f(x,y+1)4f(x,y)

其中 f ( x , y ) f(x,y) f(x,y) 是图像在 ( x , y ) (x,y) (x,y) 处的像素值, Δ f ( x , y ) \Delta f(x,y) Δf(x,y) 是Laplacian算子在 ( x , y ) (x,y) (x,y) 处应用后的结果。

Laplacian算子可以通过卷积运算来实现。在二维情况下,它通常被表示为以下的卷积核:

在这里插入图片描述

2.罗伯茨算子(Roberts)

Roberts算子是一种边缘检测算子,主要用于图像处理中的锐化和边缘检测。它是一种离散空间滤波器,可以检测图像中的垂直和水平边缘。

Roberts算子可以表示为两个卷积核,一个用于检测水平边缘,另一个用于检测垂直边缘。

在这里插入图片描述
如公式所示,分别表示图像的水平方向和垂直方向的计算公式。

在这里插入图片描述
Roberts算子像素的最终计算公式如下:

在这里插入图片描述
在Python中,Roberts算子主要通过Numpy定义模板,再调用OpenCV的filter2D()函数实现边缘提取。该函数主要是利用内核实现对图像的卷积运算,其函数原型如下所示:网址:yii666.com

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
– src表示输入图像
– dst表示输出的边缘图,其大小和通道数与输入图像相同
ddepth表示目标图像所需的深度
kernel表示卷积核,一个单通道浮点型矩阵
anchor表示内核的基准点,其默认值为(-1,-1),位于中心位置
delta表示在储存目标图像前可选的添加到像素的值,默认值为0
borderType表示边框模式

在进行Roberts算子处理之后,还需要调用convertScaleAbs()函数计算绝对值,并将图像转换为8位图进行显示。其算法原型如下:

dst = convertScaleAbs(src[, dst[, alpha[, beta]]])
src表示原数组
dst表示输出数组,深度为8位
alpha表示比例因子
beta表示原数组元素按比例缩放后添加的值
最后调用addWeighted()函数计算水平方向和垂直方向的Roberts算子。其运行代码如下:

3.Sobel算子

Sobel算子是一种边缘检测算子,常用于图像处理中。它可以检测图像中的水平和垂直边缘,并将它们分别表示为两个图像。这个算子是由Irwin Sobel于1968年提出的,可以用于提取图片中平滑区域与纹理区域之间的边界。

Sobel算子的原理是利用了图像像素点之间的差异来检测边缘。具体而言,Sobel算子将每个像素点周围的8个像素点加权求和,来检测该点周围像素的强度变化,从而确定像素点是否属于边缘。

Sobel算子分为水平与垂直两个方向:

在水平方向上,Sobel算子的卷积核如下:

   -1  -2  -1
    0   0   0
    1   2   1

在垂直方向上,Sobel算子的卷积核如下:

  -1   0  +1 
  -2   0  +2 
  -1   0  +1 

4.Prewitt算子

Prewitt是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用3×3模板对区域内的像素值进行计算,而Robert算子的模板为2×2,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像,其计算公式如下所示。

在这里插入图片描述
具体的水平和垂直方向计算公式如下所示:

在这里插入图片描述
Prewitt算子像素的最终计算如公式所示。
在这里插入图片描述

5.Scharr算子

Scharr 算子也称为 Scharr 滤波器,计算 x 轴或 y 轴方向的图像差分。

Scharr 算子是 Soble 算子在 ksize=3 时的优化,与 Soble 的速度相同,且精度更高。Scharr 算子与 Sobel 算子的不同点是在平滑部分,其中心元素占的权重更重,相当于使用较小标准差的高斯函数,也就是更瘦高的模板。

Scharr 算子的卷积核为:
在这里插入图片描述
Scharr 算子很容易通过卷积操作 cv.filter2D 实现,OpenCV 也提供了函数 cv.Scharr 实现 Scharr 算子。

三、实验对比

选择一张模糊图像,将下列代码中的Laplace_kernel

cv2.filter2D(img, -1, Laplace_kernel)

替换成不同的卷积核,既可以完成锐化处理

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('girl.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# ===============================拉普拉斯算子锐化============================
Laplace_kernel = np.array([[-1,-1,-1],
                   [-1, 9,-1],
                   [-1,-1,-1]], dtype=np.float32)  # 定义拉普拉斯算子
                   # 应用锐化卷积核
Laplace_img = cv2.filter2D(img, -1, Laplace_kernel)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈电力物联网时代物联网技术在电力系统中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定201801 摘要:在电力系统建设中,物联网的应用不仅促进了我国电力工业的发展,而且对我国的物联网技术也起到了一定的促进作用。随着物联网技术应用于电力系统,推动了中国工业的快速发展。因…

GCN火车票识别项目 P1 火车票识别项目介绍 Pytorch LSTM/GCN

从本节开始,我将带大家完成一个深度学习项目:用图卷积神经网络(GCN),实现一个「火车票文字信息提取」的项目,由于火车票上每个节点文字不是等长的,所以还需要添加一个前置的 LSTM 来提取句子特征。 课前说明 1、这是…

Linux CentOS配置阿里云yum源

一:先备份文件,在配置失败时可以恢复 cd /etc/yum.repos.d mkdir back mv *.repo back 二:下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel…

网络工程师回顾学习

根据书本目录,写下需要记忆的地方: 参考之前的笔记: 网络工程师回答问题_one day321的博客-CSDN博客 重构第一部分需要记忆的: 第一章:计算机网络概论 计算机网络的定义和分类:计算机网络是指将地理位…

如何定义类

类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类实际上就是定义类的属性与方法。用户定义一个类实际上就是定义一个新的数据类型。在使用类之前,必须先定义它,然后才可利…

软件测试需求分析是什么?为什么需要进行测试需求分析?

在软件开发中,软件测试是确保软件质量的重要环节之一。而软件测试需求分析作为软件测试的前置工作,对于保证软件测试的顺利进行具有重要意义。软件测试需求分析是指对软件测试的需求进行细致的分析和规划,以明确测试的目标、任务和范围&#…

2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序

2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现: 国家《第十四个五年规划和 2035 年远景目标纲要》中提出,将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…

RABC权限模型与Spring Security

今天,我将带你进入一个充满策略和刺激的领域——权限之战。在这场战斗中,我们的主角是RABC权限模型(Role-Based Access Control)和Spring Security,他们将共同为我们打造一个安全稳定的世界。 权限模型:游戏…

通俗理解repartition和coalesce区别

官方的解释 reparation 返回一个具有恰好numPartitions分区的新RDD。 可以增加或减少此RDD中的并行级别。在内部,reparation会使用shuffle来重新分发的数据。 如果要减少此RDD中的分区数量,请考虑使用coalesce,这样可以避免执行shuffle。 coalesce 返回一个新的RDD,该RDD被…

Zookeeper3.7.1分布式安装部署

上传安装文件到linux系统上面 解压安装文件到安装目录 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/software/3. 修改解压文件名 [zhangflink9wmwtivvjuibcd2e software]$ mv apache-zookeeper-3.7.1-bin/ zookeeper-3.7…

Qt OpenGL相机系统

文章目录 一、简介二、实现代码三、实现效果参考资料效果展示 一、简介 一直偷懒没有学习OpenGL,乘着这段有点时间重新学习一下OpenGL,做一个简单的小工具,有助于后面理解OSG。我们都知道OpenGL中存在着下面几个坐标空间:模型空间(物体空间)、世界空间、观察空间(或者称…

【Linux】:使用git命令行 || 在github创建项目 || Linux第一个小程序——进度条(进阶版本)

在本章开始之前还是先给大家分享一张图片 这是C的笔试题 感兴趣的同学可以去试一试 有难度的哟 也可以直接在牛客网直接搜索这几道题目哈 好了今天我们正式进入我们的正题部分 🕖1.使用git命令行 安装git yum install git🕠2.在github创建项目 使用…

【微服务】一体化智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段,实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面,多维度数…

在直播系统中使用SRT协议传输视频

目录 1、简述 2、NDI、RTSP协议的优缺点 3、SRT协议简介 4、SRT协议链接地址URL格式 (1)listener: (2)caller: 5、手机发送SRT实时音视频 6、OBS中的设置 7、在vMix中的设置 8、写在最后 1、简述 …

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element:是饿了么团队研发的,一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件:组成网页的部件,…

VR全景如何助力乡村振兴,乡村发展在哪些方面用到VR全景技术

引言: 乡村振兴是当今中国发展的重要战略,也是推动农村经济社会全面发展的关键举措。在这一过程中,虚拟现实(VR)全景技术正逐渐崭露头角,为乡村振兴提供了机遇。 一.VR全景技术的概念和应用 1…

Leetcode刷题详解——括号生成

1. 题目链接:22. 括号生成 2. 题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()…

Linux DataEase数据可视化分析工具结合cpolar实现远程访问

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

MapReduce性能优化之小文件问题和数据倾斜问题解决方案

文章目录 MapReduce性能优化小文件问题生成SequenceFileMapFile案例 :使用SequenceFile实现小文件的存储和计算 数据倾斜问题实际案例 MapReduce性能优化 针对MapReduce的案例我们并没有讲太多,主要是因为在实际工作中真正需要我们去写MapReduce代码的场…

DeepLearning - 余弦退火热重启学习率 CosineAnnealingWarmRestartsLR

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/134249925 CosineAnnealingWarmRestartsLR,即 余弦退火热重启学习率,周期性修改学习率的下降和上升,间隔幅度逐…