图像锐化处理之一阶微分算子

news2024/11/28 5:50:48

  图像锐化是通过增强图像的边缘和细节来提高图像的清晰度的操作。这种操作通常用于将模糊或不清晰的图像改进为更清晰的图像。由于微分是对函数局部变化率的一种描述,因此图像锐化算法的实现可基于空间微分。

一阶微分算子

  对任意一阶微分的定义必须满足两点:灰度不变的区域微分值为0;在灰度变化的区域微分值非0。由于处理的是离散情况,微分用差分近似。对于一维函数f(x,y),一阶微分基本定义:

                                              \frac{\partial f}{\partial x}=f(x+1)-f(x)

 一维微分可用导数符号。二维图像f(x,y) 将沿着两个空间坐标轴求解一阶微分,分别对x,y求偏导:

               g_{x}=\frac{\partial f}{\partial x}=f(x+1,y)-f(x,y)  , g_{y}=\frac{\partial f}{\partial y}=f(x,y+1)-f(x,y)

  二维图像的梯度是一个二维向量:

                    \Delta f=grad(f)=\begin{bmatrix} g_{x}\\ g_{y} \end{bmatrix}

  梯度的幅值:

                      M(x,y)=mag(\Delta f)=\sqrt{g_{x}^{2}+g_{y}^{2}}

  M(x,y)是梯度向量方向变化率在(x,y)处的值。

  

    这里使用3*3邻域灰度值表示z1,z2...z9,其中z5表示f(x,y),依次类推。

二维图像最简单的一阶微分近似:

  g_{x}=z_{9}-z_{5}             g_{y}=z_{8}-z_{6}

  根据罗伯特观点,边缘检测器应具有:

产生边缘清晰;背景尽可能减小噪声;边缘强度应尽可能接近人类的感知。并提出两个交叉差分表示:

  g_{x}=z_{9}-z_{5}       g_{y}=z_{8}-z_{6}

梯度幅值为:

M(x,y)=mag(\Delta f)=\sqrt{g_{x}^{2}+g_{y}^{2}} =\sqrt{(z_{9}-z_{5})^{2}+(z_{8}-z_{6})^{2}}

 正负对角线梯度算子:

  罗伯特边缘图像和梯度图像代码:

from skimage import io,filters
from matplotlib import pyplot as plt
from skimage.color import rgb2gray

#原始图像
I=io.imread('demo.jpg')
I_gray=rgb2gray(I) #灰度转换
#robert交叉梯度算子
I_rob_pos=filters.roberts_pos_diag(I_gray)
I_rob_neg=filters.roberts_neg_diag(I_gray)
I_rob=filters.roberts(I_gray)
#显示
plt.subplot(121)
plt.title("gray")
plt.imshow(I_gray,cmap='gray')
plt.subplot(122)
plt.title("Pos")
plt.imshow(I_rob_pos,cmap='gray')
plt.show()
plt.subplot(121)
plt.title("Neg")
plt.imshow(I_rob_neg,cmap='gray')
plt.subplot(122)
plt.title("Rob")
plt.imshow(I_rob,cmap='gray')
plt.show()

 原始图像和正对角线边缘图像:

负对角先边缘图像和罗伯特梯度图像:

 

  使用交叉梯度算子可以得到梯度图像M(x,y),将梯度图像以一定比例叠加到原始图像f(x,y)即可得到锐化图像:

     g(x,y)=f(x,y)+c*M(x,y)

 c为锐化强度系数。

  由于奇数模板有对称中心,更易于实现。使用3*3模板对g_{x} ,g_{y}进行表达:

g_{x} =\frac{\partial f}{\partial x}=(z_{7}+2z_{8}+z_{9})-(z_{1}+2z_{2}+z_{3})

g_{y}\frac{\partial f}{\partial y}=(z_{3}+2z_{6}+z_{9})-(z_{1}+2z_{4}+z_{7})

 

Sobel边缘图像和梯度图像:

from skimage import io,filters
from matplotlib import pyplot as plt
from skimage.color import rgb2gray

#原始图像
I=io.imread('demo.jpg')
I_gray=rgb2gray(I) #灰度转换
#sobel算子
I_h=filters.sobel_h(I_gray)
I_v=filters.sobel_v(I_gray)
I_sobel=filters.sobel(I_gray)

#显示
plt.subplot(121)
plt.title("gray")
plt.imshow(I_gray,cmap='gray')
plt.subplot(122)
plt.title("H")
plt.imshow(I_h,cmap='gray')
plt.show()
plt.subplot(121)
plt.title("V")
plt.imshow(I_v,cmap='gray')
plt.subplot(122)
plt.title("Sobel")
plt.imshow(I_sobel,cmap='gray')
plt.show()

原图与水平sobel边缘图像:

竖直sobel边缘图像和sobel梯度图像:

 

 

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

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

相关文章

采用热电偶温度传感器实现超高精度温度跟踪控制的解决方案

摘要:针对温度跟踪控制中存在热电堆信号小致使控制器温度跟踪控制精度差,以及热电阻形式的温度跟踪控制中需要额外配置惠斯特电桥进行转换的问题,本文提出相应的解决方案。解决方案的核心是采用一个多功能的超高精度PID控制器,具有…

ubuntu18.04安装mysql5.7.32

目录一、下载mysql安装包二、下载依赖三、安装mysql四、导入sql一、下载mysql安装包 下载地址:https://downloads.mysql.com/archives/community/ 下载包 mysql-server_5.7.32-1ubuntu18.04_amd64.deb-bundle.tar 下载后解压,里面包含要安装的deb包 二、…

计算机编码

字符的表示原理 计算机内所有信息都是使用0和1进行表示的。 对于一个短路来说,0代表关,1代表开。那把这些电路组合起来就可以有长串0和1组成的二进制数字,我们对这些数字进行编码和解码,我们就能用它来表示我们想要表示的东西了…

蓝牙模块芯片串口透传的AT指令模式和波特率是什么意思

一、什么是蓝牙串口透传模块的模式 蓝牙串口模块,一般都会有两个模式,即AT指令模式,以及透传模式 1、有的模块,会通过一个GPIO口来选择当前是什么模式,比如将一个IO口拉低则进入透传模式,也就是不再识别A…

element-ui 表格el-table高度不是一个固定值时固定表头

elementui中为表格组件提供了height属性实现固定表头 height可以为数字或者字符串,当为一个数字时表示固定的高度,也可以为百分比等字符串。 当height不是一个固定值时,如期望表格可以填充完页面剩余空间,并且固定表头时&#x…

Mysql之常见可视化管理工具

mysql在日常开发中作为基础软件,对其数据的管理必不可少,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,下面介绍常见的mysql图形化管理工具。 1、Navicat Navicat 是一个桌面版 MySQL 数据库管理和开发工具。…

【Linux操作系统】程序的编译和动静态链接

文章目录一.编译写在前面1.预处理2.编译3.汇编二.(动静态)链接1.动态链接2.静态链接3.静态链接库的下载安装4.windows下动静态库的后缀一.编译 写在前面 编译这整个过程都只是在编译你自己写的代码,直到链接才让你的代码和库的代码关联起来,最终形成可执行程序 源程序到可执行…

靶机测试Os-ByteSec笔记

靶机测试Os-ByteSec笔记 靶机描述 Back to the Top Difficulty : Intermediate Flag : 2 Flag first user And second root Learning : exploit | SMB | Enumration | Stenography | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This w…

EXSi root密码忘记通过centos7镜像破解

1.安装软碟通UltraISO刻录U盘启动盘 下载阿里云centos7镜像,选择mini的链接:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso?spma2c6h.25603864.0.0.28f76aeapbXyYT 打开软碟通,打开下载的…

C语言宏定义立即数后缀U的含义

背景 在看开源的相关代码中,会有下面的宏定义用法 #define TEST_VALUE (0xFFFFFFFFU) 其和下面的宏定义区别是什么呢? #define TEST_VALUE (0xFFFFFFFF) 答疑 U表示 unsigned 无符号后缀,关于后缀的表述C99标准有如下定义&…

私有部署V3.8:自建内部应用库和预置应用

2022年12月27日,明道云私有部署V3.8正式发布。除了同步更新明道云SaaS版V7.8的功能以外,V3.8还将应用库功能下放至私有部署,私有部署用户可以自建企业内部应用库,并且给新创建的组织预置应用了。 注意:该功能仅面向明…

CSS知识点精学4-学成项目案例实现

根目录 先写好项目根目录 网站的首页,所有网站的首页都叫index.html,因为服务器找首页都是找index.html 一般网站页面配套的css文件与网站设置为相同的名字 比如index.html搭配index.css 准备工作 首先,我们发现没一个模块都是居中显示的,抓住一个边…

Python压缩模块gzip

文章目录初步认识压缩和解压缩函数初步认识 gzip是用于处理gzip格式的模块,相当于是zlib模块面向文件的一个应用,其最常用的函数为open。 有了open,那就得演示一下文件读写 import gzip with gzip.open(test.txt.gz, wb) as f:f.write(&qu…

Halcon笔记1

一、前言 最近来触碰一下halcon,一直以来作为ai算法工程师,虽然知道halcon,但是一直也没有用过 对于我们用户来说,halcon与opencv的差距主要在下面: (1)halcon是闭源的,商业的软件…

ATJ2158 LRADC的使用

LRADCLRADC对应引脚LRADC采样电压范围及位数使用LRADC涉及到的驱动文件如何使用不同的LRADC通道LRADC对应引脚 LRADC对应引脚备注LRACDC1WIO0/WIO1LRACDC2GPIO8/GPIO20LRACDC3GPIO9/GPIO21LRACDC4GPIO35LRACDC5GPIO5LRACDC6无没有找到相应的引脚LRACDC7GPIO63 LRADC采样电压范…

剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始&#xff0…

基于R的Bilibili视频数据建模及分析——聚类分析篇

基于R的Bilibili视频数据建模及分析——聚类分析篇 文章目录基于R的Bilibili视频数据建模及分析——聚类分析篇0、写在前面1、数据分析1.1 聚类分析1.2 聚类统计1.3 系统聚类1.4 Kmeans与主成分分析2、参考资料0、写在前面 实验环境 Python版本:Python3.9Pycharm版本…

python打包windows服务 开机自启动守护进程

自启动方法一:系统自启动设置python程序开机自启动1、创建一个xxx.bat文件,右键编辑2、在xxx.bat文件里面写入以下内容后保存:(可以按照如下流程自己去cmd中测试一下)d: #如果需要开机自启动的python程序在c盘&#xf…

Typora插图免费上传云端教程(太香了)

1、前言 我们平时在使用Typora时,文档中的图片一般是保存在本地,很方便,但是有些场景也有问题,比如我全部拷贝到有道云笔记中或者全部拷贝到CSDN中去发布时,你会发现,所有图片都无法预览了,此时…

不要为了“分库分表”而“分库分表”

数据库瓶颈 分库分表 分库分表工具 分库分表带来的问题 什么时候考虑分库分表 数据库瓶颈 不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务service来看, 就是可用…