实验 2 灰度变换与空间滤波

news2025/5/24 22:27:40

目录

  • 实验 2 灰度变换与空间滤波
    • 一、实验目的
    • 二、实验例题
      • 1. 灰度变换函数 `imadjust`
      • 2. 使用对数变换压缩动态范围。
      • 3. 直方图均衡化 histogram equalization

实验 2 灰度变换与空间滤波

一、实验目的

  1. 掌握灰度变换的原理和应用。
  2. 掌握对数变换、幂律变换和直方图均衡化的原理和应用。
  3. 掌握线性空间滤波和非线性空间滤波中相关函数的使用。

二、实验例题


1. 灰度变换函数 imadjust

函数 imadjust 是对灰度图像进行亮度变换的基本工具。其语法为:

g=imadjust(f, [low_in high_in], [low_out high_out], gamma)

此函数将图像 f 中的亮度值映射到 g 中的新值,即将 low_in 至 high_in 之间的值映射到 low_out 至 high_out 之间的值。 Low_in 以下的值映射为 low_out, high_in 以上的值映射为 high_out。输入图像应为 uint8 类、 uint16 类或 double 类图像,输出图像与输入图像有着相同的类。除图像 f 外,函数 imadjust 的所有输入均指定在 0 和 1 之间,而不论图像 f 的类。

  • 若 f 是 uint8 类图像,则函数 imadjust 将乘以 255 来确定应用中的实际值;
  • 若 f 是 uint16 类图像,则函数 imadjust 将乘以 65535。[low_in high_in]或[low_out high_out]
  • 使用空矩阵( [] ),会得到默认值[0 1]。若 high_out 小于 low_out,则输出亮度会反转。

gamma 指定曲线的形状,用于映射 f 的亮度值以生成 g。若 gamma 小于 1,则映射被加权至更高(更亮)的输出值;若 gamma 大于 1,则映射被加权至更低(更暗)的输出值;若省略,则 gamma 默认为 1(线性映射)。

例 1 将图 1 所示 Pout 图像的灰度值调整到整个灰度范围[0, 255]。

图1    Pout图像

图1 Pout

答:

f=imread('Pout.tif');
g=imadjust(f);
figure; imshow(f);
figure; imhist(f);
figure; imshow(g); imwrite(g, '灰度扩展图像.tif');
figure; imhist(g);

在这里插入图片描述

图2 灰度值扩展实验结果

2. 使用对数变换压缩动态范围。

对数变换通过式 ( 1 ) (1) (1)中的表达式实现:
g = c ∗ log ⁡ ( 1 +  double  ( f ) ) (1) g=c^{*} \log (1+\text { double }(f))\tag1 g=clog(1+ double (f))(1)

图 3 是一个取值范围为 0 至 1.5×106 的傅里叶频谱,它被线性地显示在一个 8 比
特系统中。请使用对数变换减小其动态范围,以改善图像的视觉效果。

在这里插入图片描述

图3 傅里叶频谱

答:

f=imread('2.tif');
g=im2uint8(mat2gray(log(1+double(f))));
%使用函数 mat2gray 可将值限定在范围[0 1];
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');

在这里插入图片描述
另一种情况,仅仅使用im2uint8函数

f=imread('傅里叶频谱.tif');
g=im2uint8(log(1+double(f)));
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');

在这里插入图片描述
实际上这里会显示出来一个黑白的图片, g g g变成了 0 0 0 255 255 255两种数字,必须先使用mat2gray函数将范围限定到 [ 0 , 1 ] [0 ,1] [0,1] 之间。

执行对数变换后的图像与原图像相比,视觉效果得到了明显的改善,图像中可见细节的丰富程度更明显。

3. 直方图均衡化 histogram equalization

直方图均衡化由工具箱中的函数 histeq 实现,该函数的语法为:
g=histeq(f, nlev)
其中, f 为输入图像, nlev 是为输出图像指定的灰度级数,其默认值为 64。一般来说,我们将 nlev 赋值为灰度级的最大可能数量(通常为 256), 以得到较为正确的执行结果。

图 4 是电子显微镜下放大了近 700 倍的花粉图像,其突出特点是较暗且动态范围较低。请给出其灰度直方图,并给出直方图均衡化之后的结果。

在这里插入图片描述

图4 花粉图像

答:

f=imread('3.tif');
figure; imhist(f);
ylim('auto'); %自动设定坐标轴的取值范围和刻度线
g=histeq(f, 256);
figure; imshow(g);
imwrite(g, '直方图均衡化后的图像.tif');
figure; imhist(g)
ylim('auto')

在这里插入图片描述

图5 直方图均衡化

在这里插入图片描述

图6 `g1=imadjust(f)` 实验结果

在这里插入图片描述

图6 `g2=histeq(f, 256);` 实验结果

个人视角看,直方图均衡化得到的图片更加的清晰。

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

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

相关文章

融合注意力模块SE基于轻量级yolov5s实践路面坑洼目标检测系统

在很多的项目实战中验证分析注意力机制的加入对于模型最终性能的提升发挥着积极正向的作用,在我之前的一些文章里面也做过了一些尝试,这里主要是想基于轻量级的s系列模型来开发构建路面坑洼检测系统,在模型中加入SE注意力模块,以期…

Android开发-AS学习(二)

1.5 ProgressBar常用属性描述android:max进度条的最大值android:progress进度条已完成进度值android:indeterminate如果设置为true,则进度条不精确显示进度style“?android:attr/progressBarStyleHorizontal"水平进度条MainActivity.java package c…

机试_1_暴力求解

一、枚举 判断是否可以使用枚举:分析数据量。 若时间限制在1000ms的情况下,大约可以进行10⁷的运算。 复杂度数据量O(n!)10O(2ⁿ)20O(n)200O(n)3000O(nlogn)10⁶O(n)10⁷O(√10)10⁴O(logn)>10⁰1 abc–清华大学 描述 设a、b、c均是0到9之间的数字…

Java课程设计——学生成绩管理系统

1 需求分析1.1 需求分析概述需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等, 为系…

nacos的配置管理

前言 此博客对nacos的配置管理进行简单介绍,如果降配置文件放在项目中,那么每次进行修改后都要重新编译部署项目,是极其不方便的,如果将配置文件放在一个固定的位置,尽管解决了以上的问题,但是管理起来还不…

【Java寒假打卡】Java基础-File

【Java寒假打卡】Java基础-File概述-三种构造方法绝对路径和相对路径File的创建功能File的删除功能File的判断和获取功能listFile方法练习1:在当前模块下面aaa文件夹创建一个文件a.txt练习2:删除一个多级文件夹练习3:统计一个文件夹中每一种文…

UE插件和项目目录结构学习笔记

Plugins插件的二种安装方式 1、安装到虚幻引擎(推荐) 转到虚幻引擎安装位置的插件文件夹 Engine/Plugins 将解压得到的插件文件夹放入Marketplace文件夹下(如没有新建一个)。 启动虚幻引擎打开项目,菜单->编辑->…

如何在线免费将PPT转PDF格式

我们经常会遇到制作演示文稿PPT的格式,但是这种格式一般在传阅的过程中稳定性都较差,所以很多人会选择转成PDF格式,那么有没有免费的处理方式呢? 打开浏览器搜索speedpdf找到并打开在线转换工具首页,选择主页上的PPT转…

Python表白妙招,把情书写进她的照片里

前言 我的好兄弟们,2022年可算是过去了,这不马上要过年了吗 就是说,各位兄弟有对象了吗,没有的回家还要面对亲戚的各种提问 退一步来说,有心仪的人吗,如果有的话,就来看看这篇 程序员的表白小…

【Vue + Koa 前后端分离项目实战7】使用开源框架==>快速搭建后台管理系统 -- part7 前端实现最新期刊管理【增删查改】

人生没有白走的路,每一步都作数。 对应后端部分章节回顾: 【Vue Koa 前后端分离项目实战5】使用开源框架>快速搭建后台管理系统 -- part5 后端实现最新期刊列表管理【增删查改】_小白Rachel的博客-CSDN博客 效果展示: 目录 一、…

少儿Python每日一题(15):回文数

原题解答 本次的题目如下所示: 【编程实现】 回文数是指一个像14641这样“对称”的数,即:将这个数的各位数字按相反的顺序重新排列后,所得到的数和原来的数一样。请编程求不同位数数字的回文数的个数。用户输入一个正整数M(2<M<7),M作为回文数的位数。要求输出M位…

【Javascript】高阶函数,JSON

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录高阶函数箭头函数apply函数JSON高阶函数 把函数作为参数&#xff0c;或者返回一个函数&#xff…

【并发】并发锁机制-深入理解synchronized(一)

【并发】并发锁机制-深入理解synchronized&#xff08;一&#xff09; synchronized 基础篇&#xff08;使用&#xff09; 一、Java共享内存模型带来的线程安全问题 1. 代码示例 2. 运行结果 3. 问题分析 4. 临界区&#xff08;Critical Section&#xff09; 5. 竞态条件…

【Go】内存模型中的内存可见性

前言 使用go必然会使用到协程以及其他的并发操作&#xff0c;初期学习的时候&#xff0c;经常在启动协程时操作变量出现问题&#xff0c;要么就是变量没更新&#xff0c;要么就是各种崩溃&#xff0c;或者vscode报告警之类的&#xff0c;于是浅看了一下Go的内存模型&#xff0…

离散制造业ERP系统对生产物料管理有哪些帮助?

在离散制造企业生产加工过程中&#xff0c;生产物料管理是一个至关重要的环节。车间物料能不能管控好&#xff0c;影响着整个产品的品质、工作效率及制造成本的控制等。离散制造业通常需要品类、属性繁多的原材料和配套件&#xff0c;而各类物料的及时供应十分重要&#xff1b;…

优思学院|QCC 是什么意思?有什么用?

QCC 的中文意思是质量控制圈&#xff0c;也有人称为品质圈。 质量控制圈&#xff08;QCC&#xff09;是来自日本的一种质量管理方法&#xff0c;这个概念的作者是石川馨、日本科学家和工程师联盟&#xff08;JUSE&#xff09;共同发明。 QCC的方法是建立由5-11名成员组成的小团…

【VUE2-01】vue2的起步

文章目录一、初识vue1.1vue.js的特点1.2什么是虚拟的dom&#xff1f;1.3为什么使用虚拟的dom1.4vue设计思想二、第一个vue应用如果想系统细致的学习&#xff0c;建议阅读vue的官方网站目前vue官网默认的是vue3的内容&#xff0c;此篇以vue2为基础开始学习一、初识vue 1.1vue.j…

电脑重装系统后没声解决步骤

电脑重装系统之后&#xff0c;发现声音功能&#xff0c;不能正常使用了。对于电脑小白来说&#xff0c;不知道该如何处理&#xff0c;下面就和大家说说重装系统后没声音怎么办呢?&#xff0c;其实完全可以自己处理这种情况&#xff0c;快来看看小白重装系统后没声解决方法吧! …

插入损耗——线对上的信号衰减

“您好&#xff0c;我需要您的帮助。我在测试长距离线缆的时候&#xff0c;插入损耗没有通过测试&#xff01;”这是在对铜缆布线进行验收测量时&#xff0c;我们经常能够听到的问题。针对这一情况&#xff0c;为了能提供更专业的支持&#xff0c;我们必须了解这一电气特性的基…

如何修改linux下的vim复制行数限制

vim-如何修改linux下的vim复制行数限制来自北方的小强正在努力成为资深数字IC搬砖工的搬砖工个人根目录下的.vimrc (~/.vimrc)添加如下内容:set viminfo1000,<600linux下&#xff0c;默认最多复制50行&#xff0c;上述修改即将限制改为600行。注意&#xff1a;1 如果.vimrc文…