imadjust从用法到原理—Matlab灰度变换函数之一

imadjust函数是MATLAB的一个工具箱函数,一般的语法调用格式为:

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

(注:本文所述图像数据均为Uint8,对于Matlab,矩阵中的一个元素即是一个像素点)

该函数的意义如图1所示,把图像灰度变换到新图像f1的过程中,中灰度值低于low_in的像素点在f1中灰度值被赋值为low_out,同理,f中灰度值高于high_in的像素点变换到f1时其灰度值也被赋值为high_out;而对于参数gamma,当gamma<1时,灰度图像靠近low_in的灰度值较低像素点灰度值变高,其灰度变化范围被拉伸,灰度值靠近high_in的一端灰度变化范围被压缩,图像整体变明亮。如图1(a)所示,同理,当gamma>1时,则灰度图像的靠近low_in的灰度值较低像素点灰度值变低,其灰度变化范围被压缩,灰度值靠近high_in的一端的灰度变化范围被拉伸,如图1(c)所示。

a
b
c

图1

​而对于中间的两个参数,通过调整其值,主要可以实现以下四种变换。

(1).负片变换

即取反变换,对一个灰度图像取反(负片)变换即为255减去中的每个像素点的灰度值,得到的新图像f1 即为负片变换后的图像。

示例代码:

f1=imadjust(f,[0 1],[1 0]);

图2

(2).两参数为空的变换

变换命令代码如下:

f1=imadjust(f,[ ],[ ],0.6);

其实质就是只改变参数gamma的变换,文章开篇已述,此处便不再赘述。

当然,该变换也可结合Matlab工具箱函数stretchlim得到。其具体调用格式为:

f1=imadjust(f,stretchlim(f),[ ]);

该调用方法能自动确定阈值,完成对比度拉伸。

(3).大到小变换

所谓大到小变换,即将图片f较大的灰度值变化区间压缩为较小的灰度值变化区间达到降低图片f1对比度的作用,示例代码如下:

f1=imadjust(f,[0 1],[0.3 0.7]);

图3

其意义为将图像中灰度值区间压缩变换到f1 中,且f1的灰度值变化范围为255*0.3~255*0.7。变化公式大致如此,对于任意的变换区间,有:

图片中的任一像素点的灰度值x,变换后得到f1图像中对应像素点灰度值Xf,变换公式如下:

(4).小到大变换

与大到小变换相反,将图片较小的灰度值变化区间扩展为较大的灰度值变化区间;示例代码如下:

f1=imadjust(f,[0.3 0.6],[0.1 1]);

与(3)变换相反,该类型变换能提高图片f1对比度,如图3所示。

图4

其变换过程类似变换(3),对于任一的

图片中的任一像素点的灰度值x,变换后得到f1 图像中相应像素点的灰度值Xf ,变换公式如下:

imadjust从用法到原理—Matlab灰度变换函数之一的更多相关文章

  1. Python 中 -m 的典型用法、原理解析与发展演变

    在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...

  2. synchronized是什么,用法及原理

    文章转Hollis博客 大家可以关注下,很多技术类型的文章 在再有人问你Java内存模型是什么,就把这篇文章发给他.中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提 ...

  3. Java之反射 — 用法及原理

    Java之反射 - 用法及原理 定义 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象 ...

  4. java this的用法以及原理

    /** * this存在方法中,在方法中被调用. * 且是非static方法中被调用.(this 表示这个类的当前实例,而静态方法不依赖于该类的任何实例,随着类产生而装载,因此方法内不能引用 this ...

  5. webpack基本用法及原理(10000+)

    1 webpack是什么 所有工具的出现,都是为了解决特定的问题,那么前端熟悉的webpack是为了解决什么问题呢? 1.1 为什么会出现webpack js模块化: 浏览器认识的语言是HTML,CS ...

  6. matlab灰度变彩色+白平衡算法实现

    % matlab彩色图像分离通道并合并成处理后的彩色图像(彩色变灰度再变彩色) % 白平衡算法(灰度世界法)消除RGB受光照影响 clear all; close all; %读入原始图像 srcIm ...

  7. ASP.NET Core MVC 模型绑定用法及原理

    前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...

  8. Linux常用性能工具功能、用法及原理(一)

    Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息. 按实现原理分,可分为基于计数器和跟踪以及剖析.含义如下: 计数器 ...

  9. Spark SQL入门用法与原理分析

    Spark SQL是为了让开发人员摆脱自己编写RDD等原生Spark代码而产生的,开发人员只需要写一句SQL语句或者调用API,就能生成(翻译成)对应的SparkJob代码并去执行,开发变得更简洁 注 ...

随机推荐

  1. 【C#】时间戳转换

    今天有时间戳转换的需求,网上找了半天才找到相关代码,经测试有效,特作此笔记和大家分享! 1.时间戳转为C#格式时间 /// <summary> /// 时间戳转为C#格式时间 /// &l ...

  2. 索尼Sony ATI显卡驱动 Win7 Win8 Win8.1 视频黑屏 解决方法

    索尼ATI显卡驱动 Win7  Win8  Win8.1 视频 黑屏 完美解决方法: 下载这个补丁 安装 即可 解决  ! baidu pan:  http://pan.baidu.com/s/1gd ...

  3. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

  4. 数据绑定控件之Repeater

    引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结 ...

  5. N久没写过东西了..写个最近在研究的程序

    import numpy as np import matplotlib.pyplot as plt #a = np.matrix([[1,1.15],[1,1.9],[1,3.06],[1,4.66 ...

  6. 《C++ API设计》作者Martin Reddy访谈问题征集

    Martin Reddy博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics.另外, ...

  7. nginx+tomcat+二级域名静态文件分离支持mp4视频播放配置实例

    nginx+tomcat+二级域名静态文件分离支持mp4视频播放配置实例 二级域名配置 在/etc/nginx/conf.d/目录下配置二级域名同名的conf文件,路径改成对应的即可 statics. ...

  8. amgular $q用法

    amgular $q用法   在用JQuery的时候就知道 promise 是 Js异步编程模式的一种模式,但是不是很明白他跟JQuery的deferred对象有什么区别.随着公司项目的进行,要跟后台 ...

  9. LeetCode:461. Hamming Distance

    package BitManipulation; //Question 461. Hamming Distance /* The Hamming distance between two intege ...

  10. js如何判断获取到的值是否在数组中

    很简单,定义一个数组,判断下就得了. var arrayList = [1,2,3,4]; arrayList .indexOf(2); 返回0 arrayList .indexOf(6); 返回1 ...