图像灰度映射

    根据某种规律改变灰度图像中像素的灰度值,设原始图像在(x, y)处的灰度为fff,而改变后图像在(x, y)处的灰度为ggg,则对图像的增强可表述为将在(x, y)处的灰度映射 f→gf \to gf→g。在很多情况下,fff和ggg的取值范围是一样的,我们假设均为[0,L−1][0,L-1][0,L−1],LLL为图像的灰度级数。

图像求反

g(x,y)=(L−1)−f(x,y)g(x, y) = (L-1) - f(x, y)g(x,y)=(L−1)−f(x,y)

import cv2 as cv
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
img = cv.imread('./images/an_4.png')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
anti_img = 255 - img_gray

原图、灰度图、增强图

对比度拉伸

    对比度拉伸是指通过加大图像中各部分之间的反差(灰度差别)来进行图像增强。f(x,y)f(x,y)f(x,y):拉伸前图像灰度,g(x,y)g(x,y)g(x,y):拉伸后的图像灰度。

g(x,y)={g1f1,(0<f(x,y)<=f1)g2−g1f2−f1,(f1<f(x,y)<=f2)L−1−g2L−1−f2,(f2<f(x,y)<=L−1)g(x,y) = \left\{\begin{aligned} & \frac{g_1}{f_1},(0 < f(x,y) <= f_1) \\ & \frac{g_2 - g_1}{f_2 - f_1},(f_1 < f(x,y) <= f_2) \\ & \frac{L-1 - g_2}{L - 1 - f_2},(f_2 < f(x,y) <= L-1) \end{aligned}\right.g(x,y)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​​f1​g1​​,(0<f(x,y)<=f1​)f2​−f1​g2​−g1​​,(f1​<f(x,y)<=f2​)L−1−f2​L−1−g2​​,(f2​<f(x,y)<=L−1)​

通过这样一次变换,原始图像中灰度值在0~f1及f2~L-1内的动态范围减小了,而在f1~f2内的动态范围增加了,从而使相应范围内的对比度增强了。在实际应用中,f1、f2、g1、g2可取不同的值并进行组合,从而得到不同的效果。

def contrast_stretch(img_gray, f1, f2, g1, g2):img = np.zeros_like(img_gray)img[np.logical_and(img_gray > 0, img_gray <= f1)] = g1/f1img[np.logical_and(img_gray > f1, img_gray <= f2)] = (g2-g1)/(f2-f1)img[np.logical_and(img_gray > f2, img_gray <= 255)] = (255-g2)/(255-f2)return img

随机选择(f1,f2,g1,g2)(f_1,f_2,g_1,g_2)(f1​,f2​,g1​,g2​)

根据灰度值分布,选择f1,f2f_1, f_2f1​,f2​,灰度值分布比较集中

stretch_img2 = contrast_stretch(img_gray, f1=70, f2=170, g1=40, g2=220)

动态范围压缩

    动态范围压缩的目的与对比度拉伸的目的相反。有时原始图像的动态范围太大,超出某些设备允许的显示范围,这时如果直接对原始图像灰度进行显示,则可能丢失一部分细节。解决的办法是对原始图像进行动态范围压缩。根据对数函数的特性,比较低的灰度值会被分离,而过高的灰度值会被降低。大部分的f值会被映射到接近L-1的灰度范围内,如果只选取这部分灰度值进行显示,就实现了压缩动态范围的目的。

g(x,y)=klog(1+f(x,y))g(x, y) = k log(1 + f(x, y))g(x,y)=klog(1+f(x,y))

def dynamic_compression(img_gray, k):img = k*np.log1p(img_gray)return np.clip(img, 0, 255).astype(int)

图像空域增强:灰度映射法相关推荐

  1. 数字图像处理笔记-02(图像空域增强技术及联合运用)

    数字图像处理笔记-02(图像空域增强技术及联合运用) (一) 图像增强 1.1 基本概念 由于图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特 征,给分析带来了困难. ...

  2. 图像空域增强技术及联合运用

    实验内容: 1.从硬盘中读取需进行增强的人体骨骼图像; 2.求原图像的Laplacian变换,对图像进行锐化处理; 3.用Sobel算子计算原图像的梯度图像; 4.图像的算术运算,包括加和乘; 5.图 ...

  3. 2.1 Python图像的空域增强处理-灰度映射

    2.1 Python图像的空域增强处理-灰度映射 文章目录 2.1 Python图像的空域增强处理-灰度映射 1 算法原理 2 代码 3 效果 空域增强处理,包括给定变化曲线的灰度映射(求反.动态范围 ...

  4. 一种基于灰度映射以及直方图规定化的遥感图像对比度增强技术研究

    目录 一.绪论 二.基于灰度映射的对比度增强技术 2.1 线性映射 2.2 动态范围压缩 2.3 Gamma校正 2.4 对比度增强实例分析 三.基于直方图的对比度增强技术 3.1 直方图均衡化 3. ...

  5. 2.3 Python图像的空域增强处理-直方图修正

    2.3 Python图像的空域增强处理-直方图修正 文章目录 2.3 Python图像的空域增强处理-直方图修正 1 算法原理 2 代码 3 效果 1 算法原理 直方图均衡化算法和直方图规定化 对于灰 ...

  6. 2.4 Python图像的空域增强处理-空域滤波

    2.4 Python图像的空域增强处理-空域滤波 文章目录 2.4 Python图像的空域增强处理-空域滤波 1 算法原理 2 代码 3 效果 1 算法原理 空域滤波(线性平滑滤波器.线性锐化滤波器. ...

  7. 图像配准方法之灰度信息法

    这系列文章是5年前的,也是从自己的QQ(632846506)日志中移过来的.https://user.qzone.qq.com/632846506/infocenter. 图像配准的方法主要有三种:基 ...

  8. 2.2 Python图像的空域增强处理-算术运算

    2.2 Python图像的空域增强处理-算术运算 文章目录 2.2 Python图像的空域增强处理-算术运算 1 算法原理 2 代码 3 效果 1 算法原理 1)加法与减法. 假设 f(x,y),g( ...

  9. 基于熵保持映射先验的快速图像对比度增强算法的python实现

    # -*- coding: utf-8 -*- # @FileName: (2区)基于熵保持映射先验的快速图像对比度增强算法 # @Software: PyCharm # @Author : Xu # ...

  10. 【OpenCV图像处理】十五、图像空域滤波(上)

    1.空域滤波介绍 空域滤波是一种邻域处理方法,通过直接在图像空间中对邻域内像素进行处理,达到平滑或锐化图像的作用.此外,在图像识别中,通过滤波还可以抽出图像的特征作为图像识别的特征模式. 空域滤波是图 ...

最新文章

  1. vue中的nextTick
  2. 【DND图形库】一、简介与环境配置
  3. android自定义布局实现优惠券效果
  4. 前端学习(2520):环境搭建
  5. C#细说多线程(下)
  6. 触目惊心,北邮计算机学院女神居然每天看这些公众号
  7. 文件转Base64格式
  8. android 微信小程序原理,Android开发微信小程序页面的图文教程
  9. 用友U9 SOA Ready
  10. win764位安装vs2010sp1补丁卡在kb983509解决办法低于40分钟
  11. 【PPT】幻灯片放映中常用快捷键
  12. 300色 柔和色彩渐变色卡(十六进制)
  13. php图文排版样式模版,微信公众号排版,我的妈呀,这些图文排版模板也太好看了吧!...
  14. 安全多方计算之六:秘密共享
  15. notify()和notifyAll()有什么区别
  16. ubuntu下载todesk安装包
  17. rabbitmq java 重连_RabbitMQ Java客户端自动重新连接
  18. 如何快速掌握正确的UI配色方案?6种技巧不容错过!
  19. 单片机c语言设计数据,单片机C语言设计.doc
  20. 小小感想▪所有的沟通都是在消耗情绪

热门文章

  1. python连接池 commit,连接池请求Python
  2. c语言side输出空心正方形,回溯法--正方形(蛋糕切分)问题
  3. Error running ‘Tomcat x.x.xx‘: Address localhost:xxxx is already in use
  4. 了解IHttpModule接口事件执行顺便 获取Session
  5. DOS 下修改ip 地址
  6. ES6精华:解构赋值
  7. VC++动态链接库(DLL)编程深入浅出(四)(转)
  8. 正确的Kado ED「永遠のこたえ」
  9. STL笔记 ( 迭代器 )
  10. 在ASP.net MVC中利用ajax配合razor进行局部加载