C#数字图像处理算法学习笔记(二)--点运算与直方图
C#数字图像处理算法学习笔记(二)--点运算与直方图
在数字图像处理中,点运算是一种简单而重要的技术。点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算。它有时也被称为对比度增强、对比度拉伸或灰度变换。点运算没有改变图像的空间运算,它是按照一定的方式改变了图像的灰度直方图。
灰度直方图是一种最简单且最有用的工具,它概括了一幅图像的灰度级内容。
灰度直方图的定义:
灰度直方图是灰度的函数,描述的是图像中的具有该灰度级的像素个数。如果用直角坐标系来表示,则它的横坐标是灰度级,纵坐标是该灰度级出现的概率(像素的个数)。
灰度直方图的分布函数为:h(k)=nk;其中k是指第k个灰度级,nk是灰度级为rk的像素总和。
线性点运算:灰度图像的点运算可分为线性点运算和非线性点运算。
线性点运算定义:
线性点运算就是输出灰度级与输入灰度级呈线性关系的点运算。在这种情况下,灰度级变换函数为:g(x,y)=pf(x,y)+L
其中,f(x,y)为输入图像在点(x,y)的灰度值,g(x,y)为相应的输出点的灰度值。显然,如果p=1和L=0,g(x,y)就是f(x,y)的复制;如果P<1,输出图像的对比度将增大;如果P>1,则对比度将减小。
全等级直方图灰度拉伸:灰度拉伸也属于线性点运算的一种
灰度拉伸的定义:
如果一幅图像的灰度值分布在全等级灰度范围内,即在0-255之间,那么它更容易被区别确认出来。灰度拉伸也称为对比度拉伸,是一种简单的线性点运算。它扩展图像的直方图,使其充满整个灰度级范围内。
设f(x,y)为输入图像,它的最小灰度级A和最大灰度级B的定义为:A=min[f(a,y)] B=max[f(x,y)]
把A和B分别线性映射到0-255,即 g(x,y)=255/(B-A)*[f(x,y)-A]
直方图均衡化定义:
直方图均衡化,又称直方图修平,它是一种很重要的非线性点运算。该方法的局部对比度,尤其是当图像的有用的数据的对比度相当接近的时候。通过这种方法,亮度可以更好的在直方图上分布。
直方图均衡化的思想是把原始图像的的直方图变换为均衡分布的形式,这样就增加了像素灰度值的动态范围,从而可达到增强图像整体对比度的效果。
它的具体算法为:首先计算图像f的各灰度级中像素出现的概率:P(i)=ni/n i=0,1,...,L-1
其中ni表示灰度级i 出项额次数,L是图像中所有的灰度书。P实际是图像的直方图归一化到0-1范围内。把c作为对应于P的累计概率函数,定义为:c(i)=p(x0)+p(x1)+p(x2)+...+p(xi)
c是图像的累计归一化直方图。
创建一个形式为y=T(x)的变化,对于原始图像中的每一值它就产生一个y,这样y的累计概率函数就可以在所有制范围内进行线性化,转换公式为:yi=T(xi)=c(i)
这时的T是将不同的等级映射到0-1范围内。
直方图匹配定义:
直方图匹配,又称为直方图规定化,是变换图像的直方图为规定的某种形式的直方图。能够指定想要的处理后的图像的直方图形状在某些应用中是非常有用的,它属于非线性点运算,直方图均衡化实际上
是直方图匹配的一种特例。
把现有的直方图Ha(ak)的图像变换到具有某一指定直方图Hc(ck)的图像c(x,y),一般分为两步进行:先把图像a(x,y)变换为具有均衡化直方图的中间图像b(x,y),而后把b(x,y)变换到c(x,y)。
C#数字图像处理算法学习笔记(二)--点运算与直方图的更多相关文章
- C#数字图像处理算法学习笔记(三)--图像几何变换
C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前:
- C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法
C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法 Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成.因此此类是用于处理像素数据定义的图形的对象.该类的 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
随机推荐
- 教学ppt设计与制作
分三部分陈述,分别是元素呈现/版面设计/导航设计/. 1 元素呈现 文本 (1)字符表现策略 少用宋体 多用黑体,微软雅黑等 少用艺术字 (2)段落表现策略 条目化 一行一条 用符号简化文字描述 按有 ...
- 与HDFS交互-By shell命令
Shell命令的开头有三种: hadoop fs hadoop dfs hdfs dfs 关于具体命令之前写过 可查看:https://www.cnblogs.com/floakss/p/970344 ...
- js初识
01-Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) ...
- 【微框架】之一:从零开始,轻松搞定SpringCloud微服务系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- js计算每个月的总天数
js中相关日期的计算 var year = new Date().getFullYear(),//计算当前年份 month = new Date().getMonth()+1,//计算当前月份 dat ...
- 树状数组【bzoj1103】: [POI2007]大都市meg
1103: [POI2007]大都市meg 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡 ...
- 6.House Robber(简单版抢银行)
Level: Easy 题目描述: You are a professional robber planning to rob houses along a street. Each house ...
- Flashcache的 KEEP属性自动失效
如果希望一个数据对象长期地缓存在flashcache中,则可以手动地将该数据对象的CELL_FLASH_CACHE属性设置为"keep". 其实需要说明的是,但不是数据对象的CEL ...
- Android模拟器手动设置经纬度坐标
第一种方式可以在eclipse的DDMS中的Emulator control中设置,如下图 另一种是在cmd中输入telnet localhost 5554(注:5554是模拟器在本机的端口,有可能不 ...
- Observable Flowable Test
package com.test.rxjava; import java.time.Duration; import java.time.Instant; import java.util.Linke ...