做go分析和kegg分析网站/seo建站是什么意思
基于非锐化掩码锐化图像
- 0. 前言
- 1. 使用 scikit-image filters 模块执行非锐化掩码
- 2. 使用 PIL ImageFilter 模块执行非锐化掩码
- 3. 使用 SimpleITK 执行拉普拉斯锐化
- 4. 使用 OpenCV 实现非锐化掩码
- 小结
- 系列链接
0. 前言
非锐化滤波器是一个简单的锐化算子,通过从原始图像中减去图像的平滑(非锐化)版本来增强边缘(以及图像中的其他高频分量),锐化的目的是突出图像中的细节或增强模糊的细节。在本节中,我们将学习如何利用 SimpleITK
和 OpenCV
库函数使用非锐化掩码锐化图像。可以使用以下公式表示非锐化掩码的基本概念:
g ( x , y ) = f ( x , y ) − f s m o o t h ( x , y ) f s h a r p ( x , y ) = f ( x , y ) + k ∗ g ( x , y ) g(x,y)=f(x,y)-f_{smooth}(x,y) \\ f_{sharp}(x,y)=f(x,y)+k*g(x,y) g(x,y)=f(x,y)−fsmooth(x,y)fsharp(x,y)=f(x,y)+k∗g(x,y)
1. 使用 scikit-image filters 模块执行非锐化掩码
scikit-image
库的 filters
模块提供了 unsharp_mask()
函数用于执行非锐化掩码,该函数接受参数半径 radius
和数量 amount
,边缘边界变暗和变亮的程度由参数 amount
控制,参数 radius
是指平滑核的半径。
(1) 首先导入所需的模块和函数:
import numpy as np
import matplotlib.pylab as plt
from skimage.io import imread
from skimage.filters import unsharp_mask
(2) 使用 unsharp_mask()
函数,并使用不同的参数值调用该函数,以查看当滤波器应用于输入图像时,对输出锐化图像的影响:
im = imread('1.png')
im1 = unsharp_mask(im, radius=1, amount=1)
im2 = unsharp_mask(im, radius=5, amount=2)
im3 = unsharp_mask(im, radius=20, amount=3)
(3) 下图显示了执行以上代码带到输出图像,可以看出,参数半径 radius
和数量 amount
值增加得越大,图像变得越清晰:
fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True, figsize=(20, 12))
axes = axes.ravel()
axes[0].set_title('Original image', size=10), axes[0].imshow(im)
axes[1].set_title('Enhanced image, radius=1, amount=1.0', size=10), axes[1].imshow(im1)
axes[2].set_title('Enhanced image, radius=5, amount=2.0', size=10), axes[2].imshow(im2)
axes[3].set_title('Enhanced image, radius=20, amount=3.0', size=10), axes[3].imshow(im3)
for ax in axes:ax.axis('off')
fig.tight_layout()
plt.show()
2. 使用 PIL ImageFilter 模块执行非锐化掩码
PIL.ImageFilter
模块的 unsharpmask()
函数可用于在图像上应用非锐化掩码。在函数中,要增强的边缘的大小受到函数半径 radius
参数的影响,较小的半径可增强小尺度(细)细节,较大的半径值可能会在边缘产生光晕(物体周围可检测到的微弱光线边缘);百分比 percent
参数表示非锐化强度。
(1) 导入所需的模块,并读取输入图像:
import numpy as np
import matplotlib.pylab as plt
from PIL import Image, ImageFilter
def plot_image(image, title=None, sz=10):plt.imshow(image)plt.title(title, size=sz)plt.axis('off')im = Image.open('1.png')
(2) 使用函数 unsharpmask()
锐化输入图像,并观察使用不同参数值对图像锐化的影响:
plt.figure(figsize=(15,16))
plt.subplot(221), plot_image(im, 'original')
im1 = im.filter(ImageFilter.UnsharpMask(radius=2, percent=150))
plt.subplot(222), plot_image(im1, 'unsharp masking, radius=2, percent=150')
im1 = im.filter(ImageFilter.UnsharpMask(radius=5, percent=200))
plt.subplot(223), plot_image(im1, 'unsharp masking, radius=5, percent=200')
im1 = im.filter(ImageFilter.UnsharpMask(radius=10, percent=250))
plt.subplot(224), plot_image(im1, 'unsharp masking, radius=10, percent=250')
plt.tight_layout()
plt.show()
执行以上代码,可以得到如下锐化输出图像:
3. 使用 SimpleITK 执行拉普拉斯锐化
SimpleITK
库的 UnsharpMaskimageFilter()
也可以用来锐化图像,该函数是一个边缘增强滤波器。该滤波器从图像中减去图像的平滑版本,获得边缘增强效果。可以通过参数来控制锐化效果,主要包括数量 amount
、半径 sigma
、阈值 threshold
以及是否将结果值限制在输出类型范围内。
(1) 导入所需的库和模块,并读取输入图像,将读取的图像的类型应指定为浮点型,因为非锐化掩码滤波器不接受 UINT8
类型的图像。
import SimpleITK as sitk
import numpy as np
import matplotlib.pylab as pltdef plot_image(image, title=None, sz=10):plt.imshow(image)plt.title(title, size=sz)plt.axis('off')
image = sitk.ReadImage('1.png', sitk.sitkFloat32)
(2) 通过调用构造函数来创建一个 UnsharpMaskImageFilter
类的对象,设置数量 amount
和 sigma
(平滑)参数,然后,在输入图像上执行非锐化滤波,获得输出图像如下:
filt = sitk.UnsharpMaskImageFilter()
filt.SetAmount(1.5) # typically set between 1 and 2
filt.SetSigmas(0.15)
sharpened = filt.Execute(image)
(3) 使用 GetArrayFromImage()
函数将输入和输出图像转换为 numpy
数组:
np_image = sitk.GetArrayFromImage(image)
np_image = np_image / np_image.max()
np_sharpened = sitk.GetArrayFromImage(sharpened)
np_sharpened = np_sharpened / np_sharpened.max()
(4) 绘制输入和输出图像:
plt.figure(figsize=(20,10))
plt.gray()
plt.subplots_adjust(0,0,1,1,0.05,0.05)
plt.subplot(121), plot_image(np_image, 'Original Image')
plt.subplot(122), plot_image(np_sharpened, 'Sharpened Image (with UnsharpMask)')
plt.show()
4. 使用 OpenCV 实现非锐化掩码
接下来,我们直接利用在本节一开始给出的定义来实现非锐化掩码。我们在本节中使用函数 Gaussianblur()
获得平滑的输入图像和函数 AddWeighted()
混合两张图像。
(1) 读取输入图像,并使用 11 x 11
高斯核平滑输入图像,在 cv2.GaussianBlur()
函数中设定参数 σ x = σ y = 10 σx=σy= 10 σx=σy=10:
import SimpleITK as sitk
import numpy as np
import matplotlib.pylab as plt
import cv2def plot_image(image, title=None, sz=10):plt.imshow(image)plt.title(title, size=sz)plt.axis('off')im = cv2.imread("1.png")
im_smoothed = cv2.GaussianBlur(im, (11,11), 10, 10)
(2) 根据非锐化掩码的定义可知:
sharpened = original + k.(original − smoothed) = (1 + k).original-ksmoothed
其中,k
为常数,该方程意味着锐化等效于将原始输入和平滑输入图像分别具有权重 1+k
和 -k
进行混合。
(3) 使用 cv2.addWeighted()
函数来获得输出图像,其中 k=3.0
:
im1 = cv2.addWeighted(im, 1.0 + 3.0, im_smoothed, -3.0, 0) # im1 = im + 3.0*(im - im_smoothed)
(4) 绘制输入和输出图像:
plt.figure(figsize=(20,25))
plt.subplots_adjust(0,0,1,0.95,0.05,0.05)
plt.subplot(121), plot_image(cv2.cvtColor(im, cv2.COLOR_BGR2RGB), 'Original Image')
plt.subplot(122), plot_image(cv2.cvtColor(im1, cv2.COLOR_BGR2RGB), 'Sharpened Image')
plt.show()
小结
图像平滑与图像锐化是两种效果相反的图像处理技术,图像平滑往往使图像中的边界、轮廓变得模糊,而图像锐化就是为了减少模糊图像中不利于图像分析的效果,使图像的边缘变的清晰。本节中,我们学习了使用多种不同图像处理库(包括 scikit-image
、PIL
以及 OpenCV
等)来解决图像锐化问题。
系列链接
Python图像处理【1】图像与视频处理基础
Python图像处理【2】探索Python图像处理库
Python图像处理【3】Python图像处理库应用
Python图像处理【4】图像线性变换
Python图像处理【5】图像扭曲/逆扭曲
Python图像处理【6】通过哈希查找重复和类似的图像
Python图像处理【7】采样、卷积与离散傅里叶变换
Python图像处理【8】使用低通滤波器模糊图像
Python图像处理【9】使用高通滤波器执行边缘检测
Python图像处理【10】基于离散余弦变换的图像压缩
Python图像处理【11】利用反卷积执行图像去模糊
Python图像处理【12】基于小波变换执行图像去噪
Python图像处理【13】使用PIL执行图像降噪
Python图像处理【14】基于非线性滤波器的图像去噪
相关文章:

Python图像处理【15】基于非锐化掩码锐化图像
基于非锐化掩码锐化图像 0. 前言1. 使用 scikit-image filters 模块执行非锐化掩码2. 使用 PIL ImageFilter 模块执行非锐化掩码3. 使用 SimpleITK 执行拉普拉斯锐化4. 使用 OpenCV 实现非锐化掩码小结系列链接 0. 前言 非锐化滤波器是一个简单的锐化算子,通过从原…...

介绍几款Linux 下终极SSH客户端
安全外壳协议(Secure Shell,简称 SSH)是一种网络连接协议,允许您通过网络远程控制计算机。特别是在Linux命令行模式下,使用SSH,可以很方便管理linux上的运维工作。以下是一些最受欢迎的Linux SSH客户端&…...

项目综合实训,vrrp+bfd,以及策略路由的应用
目录 一. 项目需求 二. Visio设备画图 三. 设备选型 三.vlan规划 四.Ip地址规划 五.实验拓扑图 六.配置过程及结果 项目需求 1.S1作为VLAN10的主网关和根桥,S2作为v…...

[架构之路-246/创业之路-77]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 客户关系管理系统CRM
目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 客户关系管理系统CRM 1.1.1 什么是客户关系管理系统 1.1.2 CRM总体架构 1.1.3 什么类型的企业需要CRM 1.1.4 创业公司在什么阶段需要CRM 1.1.5 研发型创业公司什么时候需要CRM 1.1.6 C…...

python manage.py createsuperuser运行错误
我把思念作笺,随风而去,落在你常路过的那个街角… 错误复现 PS D:\教学文件\Django\djangoProject\webDemo02> python manage.py createsuperuser System check identified some issues:WARNINGS: ?: (urls.W005) URL namespace admin isnt unique…...

解决恶意IP地址攻击:保卫网络安全的有效方法
随着互联网的发展,网络安全威胁变得日益复杂,其中包括恶意IP地址攻击。这些攻击通常是网络犯罪分子的手段之一,用于入侵系统、窃取数据或进行其他恶意活动。本文将探讨如何解决恶意IP地址攻击,以保护网络安全。 恶意IP地址攻击是…...

Android WMS——WMS窗口添加(十)
Android 的 WMS(Window Manager Service)是一个关键组件,负责管理窗口的创建、显示、布局和交互等。Window 的操作有两大部分,一部分是 WindowManager 来处理,一部分是 WMS 来处理,如下图所示: …...

CVPR 2023 | 主干网络FasterNet 核心解读 代码分析
本文分享来自CVPR 2023的论文,提出了一种快速的主干网络,名为FasterNet。 论文提出了一种新的卷积算子,partial convolution,部分卷积(PConv),通过减少冗余计算和内存访问来更有效地提取空间特征。 创新在于部分卷积…...

【进阶C语言】数组笔试题解析
本节内容以刷题为主,大致目录: 1.一维数组 2.字符数组 3.二维数组 学完后,你将对数组有了更全面的认识 在刷关于数组的题目前,我们先认识一下数组名: 数组名的意义:表示数组首元素的地址 但是有两个例外…...

vue-router学习(四) --- 动态添加路由
我们一般使用动态添加路由都是后台会返回一个路由表前端通过调接口拿到后处理(后端处理路由)。比如不同权限显示不同的路由。 主要使用的方法就是router.addRoute 添加路由 动态路由主要通过两个函数实现。router.addRoute() 和 router.removeRoute()。它们只注册一个新的路…...

科东软件受邀参加2023国家工业软件大会,共话工业软件未来
10月28日,由中国自动化学会主办的2023国家工业软件大会在浙江湖州开幕。大会以“工业软件智造未来”为主题,一批两院院士、千余名专家学者齐聚一堂,共同探讨工业软件领域前沿理论和技术创新应用问题,共同谋划我国工业软件未来发展…...

ros启动节点的launch文件你真的会写吗?
<launch><!-- 启动节点 --><node name="lidar_data_feature_detection_node" pkg="lidar_data_feature_detection" type="lidar_data_feature_detection" output="screen" />...

AMEYA360:循序积累立体布局,北京君正实景展示AI-ISP
北京君正集成电路股份有限公司(下称“北京君正”)是国内较早深耕智能安防及泛视觉解决方案的芯片供应商之一,也是国内同时掌握CPU、VPU、ISP、AIE等核心技术的创新企业之一,自成立以来始终深耕行业,并持续迭代创新产品及创新方案。 在2023 CP…...

10.31 知识总结(选择器、css属性相关)
一、选择器 1.1 属性选择器 通过标签的属性来查找标签,标签都有属性 <div class"c1" id"d1"></div> id值和class值是每个标签都自带的属性,还有另外一种:自定义属性 <div class"c1" id"d1…...

【网络协议】聊聊TCP如何做到可靠传输的
网络是不可靠的,所以在TCP协议中通过各种算法等机制保证数据传输的可靠性。生活中如何保证消息可靠传输的,那么就是采用一发一收的方式,但是这样其实效率并不高,所以通常采用的是累计确认或者累计应答。 如何实现一个靠谱的协议&…...

记一次flask框架环境综合渗透测试
PART.01 登入过程 访问靶场地址http://101.43.22.226/?name2023,框架为Flask。 2. 测试存在ssti注入。 3. 直接执行以下命令。 http://101.43.22.226/?name{% for c in [].class.base.subclasses() %} {% if c.name ‘catch_warnings’ %} {% for b in c.i…...

博弈论学习笔记(2)——完全信息静态博弈
前言 这部分我们学习的是完全信息静态博弈,主要内容包括博弈论的基本概念、战略式博弈、Nash均衡、Nash均衡解的特性、以及Nash均衡的应用。 零、绪论 1、什么是博弈论 1)博弈的定义 博弈论:研究决策主体的行为发生直接相互作用时候的决策…...

【COMP304 LEC4 LEC5】
LEC 4 1. Truth-Functionality Propositional logic 的connectives(连接词)are truth-functional 但是,有时候的描述不是true-functional的,比如:"Knowing that", "It is necessary that",&quo…...

表白墙(服务器)
目录 0.需求 1.创建Maven项目 2.给pom.xml内引入三个依赖 3.完善目录,并补充web.xml中的内容 4.编写代码 后端代码 编辑前端代码 5.引入数据库 创建message表 创建工具类 往MessageServlet类中添加方法 0.需求 前面写好了表白墙页面,但存…...

在 Mac 中卸载 Node.js
在 Mac 中卸载 Node.js,可以选择以下两种方法: 使用命令行卸载 Node.js 第一步:打开终端,输入以下命令显示 Node.js 的安装路径: which node 执行该命令后,会显示安装路径:/usr/local/bin/n…...

Hafnium构建选项及FVP模型调用
安全之安全(security)博客目录导读 目录 一、Hafnium构建选项 二、FVP模型调用 一、Hafnium构建选项 本节解释了在支持基于FF-A的SPM (SPMD位于EL3, SPMC位于S-EL1、S-EL2或EL3)的情况下进行构建时涉及的TF-A构建选项:...

第44天:前端及html、Http协议
前端 前端是所有跟用户直接打交道的都可以称之为是前端,比如:PC页面、手机页面、平板页面、汽车显示屏、大屏幕展示出来的都是前端内容。 前端的用处: 学了前端以后我们就可以做全栈工程师(会后端、会前端、会DB、会运维等),能够写一些简单的…...

shell_63.Linux产生信号
Linux 系统信号 信号 值 描述 1 SIGHUP 挂起(hang up)进程 2 SIGINT 中断(interrupt)进程 3 SIGQUIT 停止(stop)进程 9 …...

互联网摸鱼日报(2023-11-01)
互联网摸鱼日报(2023-11-01) 36氪新闻 毫末智行张凯:2023年高阶智能辅助驾驶市场迎来大爆发 撕开三星、金士顿市场,国产老牌存储器企业出海三年,营收翻三倍|insight全球 给医生一双“透视眼”,「锦瑟医疗」专注开…...

AR的光学原理?
AR智能眼镜的光学成像系统 AR眼镜的光学成像系统由微型显示屏和光学镜片组成,可以将其理解为智能手机的屏幕。 增强现实,从本质上说,是将设备生成的影像与现实世界进行叠加融合。这种技术基本就是通过光学镜片组件对微型显示屏幕发出的光线…...

语义分割 实例分割的异同点
语义分割和实例分割是计算机视觉领域中两个相关但不同的任务,它们都涉及对图像像素进行分类和标记,但关注的对象和目标有所不同。 目标对象: 语义分割:语义分割的目标是将图像中的每个像素标记为对应的语义类别,即将…...

C++学习初探---‘C++面向对象‘-继承函数重载与运算符重载
文章目录 前言继承继承是什么?三种访问权限的继承: 函数重载与运算符重载函数重载运算符重载可重载运算符&不可重载运算符 前言 第三次学习记录,依旧是C面向对象的内容。 继承 继承是什么? C中的继承是一种面向对象编程&am…...

Linux下搭建SRS服务器环境
搭建环境 Ubuntu的Linux环境srs 安装源码:源码地址为:GitHub - ossrs/srs at 3.0release 搭建步骤 下载srs源码 git clone GitHub - ossrs/srs: SRS is a simple, high-efficiency, real-time video server supporting RTMP, WebRTC, HLS, HTTP-FLV,…...

pytest 使用(一)
pytest 使用pytest,默认的测试用例的规则以及基础应用pytest测试用例的运行方式pytest执行测试用例的顺序是怎样的呢?如何分组执行(冒烟,分模块执行,分接口和web执行)pytest跳过测试用例 b站课程链接 使用…...

基于秃鹰算法的无人机航迹规划-附代码
基于秃鹰算法的无人机航迹规划 文章目录 基于秃鹰算法的无人机航迹规划1.秃鹰搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用秃鹰算法来优化无人机航迹规划。 1.秃鹰搜索算法 …...