数字图像处理实验记录五(图像的空间域增强-锐化处理)

前言:

文章目录

  • 一、基础知识
    • 1,什么是锐化?
    • 2,为什么要锐化?
    • 3,怎么进行锐化?
  • 二、实验要求
    • 任务1:
    • 任务2:
    • 任务3:
  • 三、实验记录:
    • 任务1:
    • 任务2:
    • 任务3:
  • 四、结果展示
    • 任务1:
    • 任务2:
    • 任务3:
  • 五、反思总结与收获
      • 1,取绝对值:
      • 2,取0:
      • 总结:

一、基础知识

1,什么是锐化?

百度到:图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。
在我看来,锐化就是将图像的边缘进行增强。

2,为什么要锐化?

既然锐化是将图像边缘增强,那么我认为往往是图像边缘模糊的时候需要进行锐化。在上一个实验中我们学到了平滑处理滤波器,不难发现滤波器往往会在清除噪声的时候让我们的图像变得模糊,所以我认为在我们处理完噪声以后就可以通过锐化来增强边缘。如下:
在这里插入图片描述
虽然锐化后不是很清晰,但至少边缘明显了很多

3,怎么进行锐化?

锐化是增强边缘,那么首先我们就要找到边缘,接下来关键的部分就是怎么找边缘了。
什么是边缘?在图像的一个区域内,出现了灰度的突变,突然变小或突然变大,这里突变的中间区域就是边缘。
在这里插入图片描述
怎么找边缘?
在计算机里是一个像素一个像素进行处理,怎么处理?这里就提到了几种算子(在我看来就是一种计算的模板方法):
在这里插入图片描述
以4领域的Laplacian算子为例:对于一个像素f(i,j),我们就使用它的上下左右四个像素和它自身进行运算得到g(i,j):
在这里插入图片描述
如果4领域的像素值都和中心差不多,那么g(i,j)最后的值就是0,显示是黑色,g(i,j)越大,就越白,最后处理完得到的g,就是边缘图像。
在这里插入图片描述
边缘检测函数sharpen_value():

function [Ig] = sharpen_value(S,kind)
% 锐化函数 输入S,锐化算子 kind
if(~exist('kind','var'))kind = -1;  % 如果未出现该变量,则对其进行赋值
end
[m,n] = size(S);if(kind == -1)%拉普拉斯4H = [0,-1,0;-1,4,-1;0,-1,0];
elseif(kind == 0)%拉普拉斯8H = [-1,-1,-1;-1,8,-1;-1,-1,-1];
elseif(kind == 1)%prewitt 横H = [1,1,1;0,0,0;-1,-1,-1];
elseif(kind == 2)%prewitt 竖H = [1,0,-1;1,0,-1;1,0,-1];
elseif(kind == 3)%Sobel 竖H= [1,2,1;0,0,0;-1,-2,-1];
elseif(kind == 4)%Sobel 竖H= [1,0,-1;2,0,-2;1,0,-1];
elseif(kind == 5)H= [1,0,0;0,-1,0;0,0,0];end
a=1;
S = im2double(S);
Ig =S;for i=2:m-1for j=2:n-1if(kind == 5)Ig(i,j) = abs(S(i,j)-S(i+1,j+1))+abs(S(i+1,j)-S(i,j+1));elseIg(i,j) = 0;for a = -1:1for b = -1:1Ig(i,j) = Ig(i,j)+H(a+2,b+2)*S(i+a,j+b);     endendif(Ig(i,j)<0)Ig(i,j) = 0;endendIg(i,j) = uint8(Ig(i,j)*255);end
end
Ig = uint8(Ig);end

最后将边缘图和原图相加,就可以实现边缘增强了。

二、实验要求

任务1:

利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。

任务2:

在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。

任务3:

分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。

三、实验记录:

任务1:

利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。

figure('NumberTitle','off','Name','任务1');
I = imread('stone.jpg');
I2 = sharpen_value(I,-1);
I2 = I2+I;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(I2);title('增强后');

任务2:

在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。

figure('NumberTitle','off','Name','任务2');
Ib = imnoise(I,'salt',0.02);%添加椒盐噪声
I3 = sharpen_value(Ib,-1);
I3 = I3+Ib;
subplot(1,2,1);imshow(I2);title('原图增强图');
subplot(1,2,2);imshow(I3);title('噪声增强图');

任务3:

分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。

figure('NumberTitle','off','Name','任务3');
I = rgb2gray(I);
H1 = sharpen_value(I,5);
H2 = sharpen_value(I,2);
H3 = sharpen_value(I,3);
subplot(2,2,1.5);imshow(H1);title('Roberts图像梯度图');
subplot(2,2,3);imshow(H2);title('Prewitt x方向偏导');
subplot(2,2,4);imshow(H3);title('Sobel y方向偏导');

四、结果展示

任务1:

利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。
在这里插入图片描述

任务2:

在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。
可以明显看出噪声对锐化的影响很大。
椒盐噪声:
在这里插入图片描述
高斯噪声:
在这里插入图片描述

任务3:

分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。
在这里插入图片描述

五、反思总结与收获

对Laplacian锐化算子的处理结果中,对小于0的部分,采用不同的方法标准化到[0,255]时,图像的显示效果有什么不同?为什么?
在我看来有两种方法来标准化:1,取绝对值。2,取0。
改了改函数,让我们看看效果:

1,取绝对值:

在这里插入图片描述
边缘:
在这里插入图片描述

2,取0:

在这里插入图片描述
边缘:
在这里插入图片描述

总结:

取绝对值:负值转正值,会增加对比度,但可能导致某些细节过度增强,看起来更加锐利。会引入图像中的一些噪声或产生不自然的效果。
取0:负值保持为零,因此对比度不会显著增加。这种方法可以保留一些图像细节,但可能不会产生像绝对值标准化那样强烈的锐化效果。

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

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

相关文章

一步一步分析ChatGPT,1 粘性,2 传染性, 3 双边网络效应

请按照以下三个维度一步一步分析ChatGPT&#xff0c;1 粘性&#xff0c;2 传染性&#xff0c; 3 双边网络效应&#xff0c;比如亚马逊的买家和商家的关系 ChatGPT的分析 1.1. 粘性 (Stickiness) 定义&#xff1a; 粘性是指产品或服务对用户的吸引力&#xff0c;即用户在使用…

【Java 进阶篇】深入了解 Bootstrap 组件

Bootstrap 是一个流行的前端框架&#xff0c;提供了丰富的组件&#xff0c;用于创建各种网页元素和交互效果。这些组件可以帮助开发者轻松构建漂亮、响应式的网页&#xff0c;而无需深入的前端开发知识。在本文中&#xff0c;我们将深入探讨 Bootstrap 中一些常用的组件&#x…

自然语言处理---Transformer机制详解之ELMo模型介绍

1 ELMo简介 ELMo是2018年3月由华盛顿大学提出的一种预训练模型. ELMo的全称是Embeddings from Language Models.ELMo模型的提出源于论文<< Deep Contextualized Word Representations >>.ELMo模型提出的动机源于研究人员认为一个好的预训练语言模型应该能够包含丰…

DataX-web安装部署和使用

DataX-web的环境准备 MySQL (5.5) 必选&#xff0c;对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件&#xff0c;替换文件在do…

飞书-多维文档-计算时间差

1. 选择字段类型 如图所示&#xff0c;字段类型选择 公式 2. 编辑公式 单击 公式编辑器 在弹出的公式编辑框中输入公式 TEXT([终结时间]-[开始时间],"HH:MM") [终结时间] 和 [开始时间] 请替换成你的表格中对应的字段名称HH:MM 表示输出的时间格式为 时:分其中 “…

黑豹程序员-架构师学习路线图-百科:Maven

文章目录 1、什么是maven官网下载地址 2、发展历史3、Maven的伟大发明 1、什么是maven Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and…

【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

525. 连续数组 525. 连续数组 题目描述&#xff1a; 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 解题思路&#xff1a; 本题的元素只有0和1&#xff0c;根据题目意思&#xff0c;我们可以把题目看成找一段最…

通讯网关软件028——利用CommGate X2Modbus实现Modbus RTU访问PI服务器

本文介绍利用CommGate X2Modbus实现Modbus RTU访问PI数据库。CommGate X2MODBUS是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现上位机通过Modbus RTU来获取PI数据库的数据。 【解决方案…

YOLOv8改进实战 | 更换主干网络Backbone(二)之轻量化模型GhostnetV2

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

基于nodejs+vue语言的酒店管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Visual Components软件有哪些用途 衡祖仿真

Visual Components是一款用于制造业虚拟仿真的软件&#xff0c;主要用于工业自动化和制造领域。我们一起来看一下该软件有哪些功能吧&#xff01; 1、工厂仿真 Visual Components可以建立虚拟的工厂环境&#xff0c;模拟和优化生产流程。用户可以创建工厂布局、定义设备和机器人…

[0xGame 2023 公开赛道] week3

9点停止提交&#xff0c;抓紧时间写出来&#xff0c;明天还有别的题。 PWN edit-shellcode-runtime 可以输入shellcode然后执行&#xff0c;但是禁用了\x0f\x05(syscall&#xff0c;箭头处)&#xff0c;这里需要用前边的程序把这个syscall弄出来。我这里最后一个字符输入\x0f…

Qt设置horizontal line 和vertical line的颜色

在Qt中&#xff0c;要设置水平线&#xff08;QFrame&#xff09;和垂直线&#xff08;QSplitter&#xff09;的颜色&#xff0c;可以使用样式表&#xff08;stylesheet&#xff09;或者直接设置QPalette。 下面是两种设置的示例&#xff1a; 使用样式表&#xff08;stylesheet…

【Nginx34】Nginx学习:安全链接、范围分片以及请求分流模块

Nginx学习&#xff1a;安全链接、范围分片以及请求分流模块 又迎来新的模块了&#xff0c;今天的内容不多&#xff0c;但我们都进行了详细的测试&#xff0c;所以可能看起来会多一点哦。这三个模块之前也从来都没用过&#xff0c;但是通过学习之后发现&#xff0c;貌似还都挺有…

微信收款码提现要手续费吗

目前不管是微信商户或者支付宝商户最低费率可以达到0.2%费率&#xff1b;市面上普通个体商户或者企业商家的收款费率一般在0.6左右&#xff0c;一些使用第三方聚合支付平台的也有使用0.38的&#xff0c;总体也就是10000块钱的费率是38-60块钱&#xff0c;对于一些流水比较大的商…

0基础学习PyFlink——模拟Hadoop流程

学习大数据还是绕不开始祖级别的技术hadoop。我们不用了解其太多&#xff0c;只要理解其大体流程&#xff0c;然后用python代码模拟主要流程来熟悉其思想。 还是以单词统计为例&#xff0c;如果使用hadoop流程实现&#xff0c;则如下图。 为什么要搞这么复杂呢&#xff1f; 顾…

Linux内核8. Linux内核的经典调试方式

1 内核调试以及工具总结 内核总是那么捉摸不透, 内核也会犯错, 但是调试却不能像用户空间程序那样, 为此内核开发者为我们提供了一系列的工具和系统来支持内核的调试. 内核的调试, 其本质是内核空间与用户空间的数据交换, 内核开发者们提供了多样的形式来完成这一功能. 2 用户…

从输入URL到展示出页面

目录 了解URL 1. 输入URL 2. 域名解析 3. 建立连接 4. 服务器处理请求&#xff1a; 5. 返回响应&#xff1a; 6. 浏览器解析HTML&#xff1a; 7. 加载资源&#xff1a; 8. 渲染页面&#xff1a; 9. 执行JavaScript&#xff1a; 10. 页面展示&#xff1a; 从输入URL到…

Cesium Vue(四)— 物体(Entity)的添加与配置

1. 添加标签和广告牌 // 添加文字标签和广告牌var label viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(113.3191, 23.109, 750),label: {text: "广州塔",font: "24px sans-serif",fillColor: Cesium.Color.WHITE,outlineColor: Cesium.…

蛋白质折叠

文章目录 4. GNNs for Protein foldingChemical Structures as GraphsProtein Structure PredictionMethods for Protein Structure PredictionOld method: fragment assemblyNew StrategyCo-evolution Analysis Towards An End-to-End Workflow AlphaFold2 architecture补充&a…